KR20210075930A - 메모리 에러 검출 및 정정 - Google Patents
메모리 에러 검출 및 정정 Download PDFInfo
- Publication number
- KR20210075930A KR20210075930A KR1020210076475A KR20210076475A KR20210075930A KR 20210075930 A KR20210075930 A KR 20210075930A KR 1020210076475 A KR1020210076475 A KR 1020210076475A KR 20210076475 A KR20210076475 A KR 20210076475A KR 20210075930 A KR20210075930 A KR 20210075930A
- Authority
- KR
- South Korea
- Prior art keywords
- syndrome
- coupled
- ecc
- circuit
- memory
- 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/1012—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 codes or arrangements adapted for a specific type of error
-
- 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/1012—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 codes or arrangements adapted for a specific type of error
- G06F11/102—Error in check bits
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/165—Auxiliary circuits
- G11C11/1653—Address circuits or decoders
- G11C11/1655—Bit-line or column circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/165—Auxiliary circuits
- G11C11/1677—Verifying circuits or methods
-
- 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/025—Detection or location of defective auxiliary circuits, e.g. defective refresh counters in signal lines
-
- 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/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
-
- 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/31—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 combining coding for error detection or correction and efficient use of the spectrum
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/02—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
- G11C11/16—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
- G11C11/161—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect details concerning the memory cell structure, e.g. the layers of the ferromagnetic memory cell
-
- 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
- G11C2029/1202—Word line control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Mram Or Spin Memory Techniques (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
MRAM 메모리 디바이스와 같은 메모리 디바이스는 복수의 메모리 매크로를 포함하며, 복수의 메모리 매크로 각각은 메모리 셀의 어레이 및 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성되는 제1 ECC 회로를 포함한다. 복수의 메모리 매크로로부터 떨어져 있는 제2 ECC 회로는 복수의 메모리 매크로 각각과 통신가능하게 결합된다. 제2 ECC 회로는 복수의 메모리 매크로의 제1 ECC 회로로부터 검출된 데이터 에러를 수신하고, 데이터 에러를 정정한다.
Description
본 발명은 메모리 에러 검출 및 정정에 관한 것이다.
메모리는 디지털 시스템에 정보(데이터 및 프로그램 모두)를 저장하는 데 널리 사용된다. 시스템 동작 중에, 메모리에 저장되는 정보(비트)가 여러 가지 이유로 손상될 수 있다. 손상의 한 가지 가능한 원인은 메모리 내부 및 메모리 외부 모두의 환경적 사건 때문이다. 이러한 외부 사건 중 하나는 입자 부딪힘이다. 환경적 사건 외에 비트의 손상(고장)을 유발하는 다른 이유가 있다. 비트가 손상되면, 저장되는 정보가 손실되어 시스템 장애 또는 데이터 손실이 발생한다. 따라서 메모리 내용의 무결성을 보호하는 것이 중요한다. 메모리 콘텐츠를 손상으로부터 보호하기 위한 다양한 수단이 사용되어 왔다. 에러 정정 코드(Error Correction Codes; ECC)는 코드 워드(데이터 필드 및 검사 비트 모두)에서 에러를 검출할 수 있고, 에러를 정정할 수도 있다는 장점이 있다.
본 개시의 양태는 첨부 도면과 함께 다음의 상세한 설명을 읽으면 가장 잘 이해할 수 있다. 본 산업계에서의 표준 관행에 따라, 다양한 피처는 일정한 비율로 도시되지 않았다는 점에 유의한다. 실제로, 다양한 피처의 치수는 설명의 명료성을 위해 임의로 증가 또는 감소될 수 있다. 또한, 도면은 본 발명의 실시예의 예시로서 예시적인 것이며 제한하려는 것이 아니다.
도 1은, 일 실시예에 따라 전용 및 단순화된 ECC 회로를 각각 갖는 복수의 MRAM 어레이를 갖는 예시적인 MRAM 디바이스를 일반적으로 나타내는 블록도이다.
도 2는 일 실시예에 따른 MRAM 어레이 내의 예시적인 MRAM 셀을 일반적으로 도시하는 블록도이다.
도 3은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 4는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 5는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 6은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 7은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 8은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 9는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 10은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 11은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 12는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 13은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 14는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 15는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 16은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 17은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 18은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 19는 일 실시예에 따른 계층적 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 1은, 일 실시예에 따라 전용 및 단순화된 ECC 회로를 각각 갖는 복수의 MRAM 어레이를 갖는 예시적인 MRAM 디바이스를 일반적으로 나타내는 블록도이다.
도 2는 일 실시예에 따른 MRAM 어레이 내의 예시적인 MRAM 셀을 일반적으로 도시하는 블록도이다.
도 3은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 4는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 5는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 6은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 7은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 8은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 9는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 10은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 11은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 12는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 13은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 14는 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 15는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 16은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 17은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스를 일반적으로 도시하는 블록도이다.
도 18은 일 실시예에 따른 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
도 19는 일 실시예에 따른 계층적 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하는 방법의 흐름도이다.
아래의 개시는 본 개시의 다양한 피처를 구현하기 위한 많은 다양한 실시예 또는 예시를 제공한다. 본 개시를 간단히 하기 위해 구성 엘리먼트 및 배치 중 소정의 예가 이하에 설명된다. 물론, 이는 단지 예일뿐이며, 한정하려는 의도가 아니다. 예를 들어, 다음의 설명에서 제2 피처 상의 또는 그 위의 제1 피처의 형성은, 제1 및 제2 피처가 직접 컨택하여 형성되는 실시예를 포함할 수도 있고, 또한 부가적인 피처가 제1 및 제2 피처 사이에 형성되어 제1 및 제2 피처가 직접 컨택하지 않는 실시예를 포함할 수도 있다. 또한, 본 개시는 다양한 예에서 참조 번호 및/또는 문자를 반복할 수 있다. 이러한 반복은 단순성 및 명료성을 위한 것이며, 논의되는 다양한 실시예 및/또는 구성 간의 관계를 그 자체로 나타내지 않는다.
또한, "밑에(beneath)", "아래에(below)", "최하부의(lower)", "상에(above)", "최상부의(upper)" 등과 같은 공간적으로 상대적인 용어가, 도면에 도시되는 하나의 엘리먼트 또는 피처와 다른 엘리먼트(들) 또는 피처(들) 간의 관계를 설명하는 데 있어서, 설명의 편의를 위해 사용될 수도 있다. 공간적으로 상대적인 용어는, 도면에 나타난 방향 외에도, 사용 또는 동작 중인 디바이스의 다른 방향을 망라한다. 장치는 다른 방향으로(90도 회전되거나 다른 방향으로 회전) 배치될 수 있고, 본 개시에서 사용되는 공간적으로 상대적인 서술어는 이에 따라 마찬가지로 해석될 수 있다.
메모리 디바이스는 반도체 디바이스 및 시스템에 정보를 저장하는 데 사용된다. 널리 사용되는 동적 랜덤 액세스 메모리(Dynamic Random Access Memory; DRAM) 셀은 스위치와 커패시터를 포함한다. DRAM은 전원이 차단될 때 데이터를 유지하지 않는다. 비휘발성 메모리 디바이스는 전원이 차단된 후에도 데이터를 유지할 수 있다. 비휘발성 메모리 디바이스의 예는 플래시 메모리, 자기 랜덤 액세스 메모리(Magnetic Random Access Memories; MRAM), 강유전성 랜덤 액세스 메모리(Ferroelectric Random Access Memories; FRAM) 및 위상 변화 랜덤 액세스 메모리(Phase-Change Random Access Memories; PRAM)를 포함한다. MRAM은 터널 접합에서 자화 방향의 변화를 사용하여 데이터를 저장한다. FRAM은 강유전체의 분극 특성을 사용하여 데이터를 저장한다. PRAM은 특정 물질의 위상 변화로 인한 저항 변화를 사용하여 데이터를 저장한다.
메모리는 일반적으로 2차원 어레이로 배열된다. 메모리 어레이는 그 자체로서의 또는 다른 디바이스에 내장되는 디바이스일 수 있으며, 또한 많은 메모리 비트 셀을 포함할 수 있다. 각각의 메모리 비트 셀은 일반적으로 1비트의 정보를 저장할 수 있다. 메모리 매크로는 하나 이상의 비트 셀 어레이, 그리고 드라이버, 버퍼, 클록 팬 아웃 회로, ECC 회로 및 기타 주변 회로부와 같은 다른 논리 회로부를 포함할 수 있다.
MRAM과 같은 특정 유형의 메모리 디바이스는, 강자성 물질과 같은 두 개 이상의 자성 물질층 사이의 자화 정렬 상태에 따라 두 개 이상의 저항 상태를 갖는다. 보다 구체적으로, MRAM은 절연 박막에 의해 분리되는 두 개의 중첩하는 자성 물질층을 갖는 메모리 셀에 데이터를 저장한다. 층 구조는 MRAM 셀의 자기 터널 접합("MTJ"또는 "MTJ 구성 엘리먼트")을 형성한다. 두 층은 고정 자기장 정렬 방향으로 영구 자화되는 자성층(이 층은 "고정층"이라고 함) 및 변경 가능하게 자화되는 자성층(이 층은 "자유층"이라고 함)을 포함한다)을 포함한다. 자유층은 영구적으로 자화되는 층에 상대적으로, 두 배향 중 하나의 배향으로 자화될 수 있다. 두 배향은, MTJ의 중첩된 층을 통하여 명백히 상이한 직렬 저항을 특징으로 한다. 변경 가능한 층의 자기장 배향은 영구 자석층의 배향과 동일하게(평행) 또는 영구 자석층의 배향과 반대 방향으로(역평행) 정렬될 수 있다. 평행 정렬 상태는 비교적 낮은 저항을 가지며, 역 평행 정렬 상태는 더 높은 저항을 갖는다.
MRAM 셀의 두 가지 상태는 메모리에 저장되는 비트의 상이한 이진 논리 값을 나타내는 비교적 높은 또는 낮은 저항(RH, RL)으로부터 감지될 수 있다. 예를 들어, RL(또는 높은 셀 전류)은 논리적 "1"("데이터-1")로 지정될 수 있으며; RH(또는 낮은 셀 전류)는 논리적 "0"("Data-0")으로 지정될 수 있다. 특정 실시예에서, 기준 전압이 MRAM 셀에 인가될 수 있고, 결과적인 셀 전류는 셀이 낮은 저항 상태인지 또는 높은 저항 상태인지를 판단하는 데 사용될 수 있다. 특정 실시예에서, 감지 증폭기를 사용하여 셀 전류를 기준 전류와 비교할 수 있다.
영구적이지 않거나 디바이스에 대한 물리적 손상을 나타내지 않는 소프트 에러와 같은 데이터 에러는 교란 에러, 방사선 효과 또는 열 효과로 인해 발생할 수 있다. 이러한 에러는 판단적이거나, 확률적 프로세스에 의한 것일 수 있다. 소프트 에러를 포함한 데이터 에러율은 MRAM 디바이스 칩에 내장되는 에러 정정 코드 방식(Error Correction Code Scheme; ECC)을 사용할 것을 요구할 수 있다. ECC를 사용하여 메모리에 저장되는 비트 에러를 검출하고 정정할 수 있다. ECC는 메모리 디바이스에 데이터와 함께 저장되는 ECC 검사 비트, 예를 들어 리던던시 비트 또는 패리티 비트를 생성함으로써 데이터를 인코딩한다. 데이터와 패리티 비트가 함께 코드 워드를 형성한다. 예를 들어 64비트 데이터에 대해 여덟 개의 패리티 비트를 생성하는 ECC는, 일반적으로 SECDED(단일 에러 정정(Single-Error Correcting; SEC) 및 이중 에러 검출(Double-Error Detecting; DED)) 코드 라고 알려진 64비트 데이터에서 두 개의 비트 에러를 검출하고, 한 개의 비트 에러를 정정할 수 있다.
ECC와 함께 사용되는 검사 비트를 저장하기 위해 추가 메모리 공간이 필요할 수 있다. 따라서, ECC 능력을 제공하기 위한 검사 비트를 저장하기 위해 추가 메모리 디바이스 또는 디바이스들(예를 들어, 추가 칩 또는 칩들)이 필요할 수 있다. 일부 메모리 어레이에서, 검사 비트(패리티 비트라고도 함)를 저장하기 위해 추가 열이 어레이에 추가될 수 있다. 메모리 어레이의 하나의 행에 포함되는 데이터는 워드라고 할 수 있다. 코드 워드는 추가 열(들)에 추가되는 워드와 패리티 비트를 포함하는 데이터 문자열을 말한다. 코드 워드가 K비트 및 M 패리티 비트를 갖는 워드 부분을 포함하는 경우, 코드 워드 길이(N)은 N = K+M일 것이다. 예를 들어, 각각의 32비트 데이터 워드에 대해 8비트 패리티를 제공할 수 있는 ECC 메모리는 32비트 데이터로 40비트 코드 워드에 액세스하기 위한 40비트 와이드 인터페이스를 포함할 수 있다. 유사하게, 각각의 64비트 데이터 워드에 대해 8비트 패리티를 제공할 수 있는 ECC 메모리는 64비트 데이터로 72비트 코드 워드에 액세스하기 위한 72비트 와이드 인터페이스를 포함할 수 있다.
모든 메모리 어레이 또는 매크로에 대해 ECC 회로부를 제공하는 것은 디바이스에 대한 면적 요구를 증가시킨다. ECC 회로부에 필요한 면적 요구 사항을 최소화하는 대체적인 방식은 메모리 어레이 또는 매크로 간에 공유되는 글로벌 ECC 회로부를 제공하는 것이다. 그러나, 메모리 어레이 또는 매크로에 대해 공유 ECC 회로부를 사용하는 방식은, 모든 메모리 어레이 또는 매크로에 대해 ECC 회로부를 제공하는 것과 비교하여, 메모리 어레이 및 ECC 회로부로 또는 그로부터 데이터를 이동 또는 전파하는데 소비되는 에너지를 증가시킨다.
코드 워드 내의 비트 에러의 검출은 비트 에러 정정보다 적은 동작을 요구하며, 따라서 적은 동작을 지원하기 위해 더 적은 회로부를 필요로 한다. 개시되는 실시예에 따르면, ECC 회로부의 제1 부분은 각각의 메모리 매크로에 로컬로 제공되는 반면, 제2 부분은 메모리 디바이스의 모든 메모리 매크로에 의해 액세스되는 공유, 글로벌 ECC로서 구현된다. 예를 들어, ECC 회로의 에러 검출 양태는 각각의 MRAM 매크로 또는 작은 그룹의 매크로에 대한 제1 로컬 ECC로서 구현될 수 있다. ECC의 에러 정정 양태는 많은 MRAM 매크로를 지원하는 제2 또는 글로벌 ECC로서 구현된다. 이러한 방식으로, 에러 정정을 위해, 로컬 ECC에 의해 검출되는 메모리 에러만이 글로벌 ECC에 전송되어야 한다.
로컬 및 글로벌 ECC 구현을 갖는 이와 같은 계층적 ECC 구조는, 모든 메모리 어레이 또는 매크로에 로컬 전체 ECC를 제공하는 것에 비해 오버 헤드 ECC 회로부의 면적을 감소시키고, 또한 공유 글로벌 전체 ECC를 제공하는 것과 비교하여 글로벌 데이터 통신 에너지를 줄임으로써, 에러 정정과 관련되는 디바이스의 면적 요건 및 전력 소비의 균형을 효과적으로 맞출 수 있다. 정정을 위해, 검출되는 메모리 에러만을 글로벌 ECC 회로부로 이동 또는 전파시킴으로써 글로벌 데이터 통신 에너지가 감소되고, 공유 글로벌 ECC 회로부에 의해 에러 정정 회로부가 제공되는 동안 모든 메모리 어레이 또는 매크로마다 검출 ECC 회로부만을 제공함으로써 디바이스 면적 요건이 최소화된다.
도 1은 본 개시의 일부 실시예에 따라, 전용 및 단순화된 ECC 회로를 각각 갖는 복수의 메모리 어레이를 갖는 예시적인 메모리 디바이스를 일반적으로 나타내는 블록도이다. 도 1에 도시되는 예에서, 메모리 디바이스는 MRAM 디바이스(100)일 수 있지만, 다른 메모리 유형도 본 개시의 범위 내에 있다. MRAM 디바이스(100)는 복수의 메모리 어레이(102a-n), 각각의 메모리 어레이(102)에 결합되는 로컬 ECC 회로(140a-n), 각각의 메모리 어레이(102) 및 ECC 회로(140)에 결합되는 로컬 I/O 회로(106a-n), 각각의 로컬 I/O 회로(106)에 결합되는 컨트롤러(108), 글로벌 ECC 회로(160), 및 글로벌 I/O 회로(110)를 포함한다. 도시되는 실시예에서, 메모리 매크로(130a-n)는 로컬 메모리 어레이(102a-n), 로컬 ECC 회로(140a-n), 및 로컬 I/O(106a-n)를 포함할 수 있다.
일부 실시예에 따르면, 리프레시 간격(refresh interval)이 적절하게 설계되면, 메모리 리프레시에서의 대부분의 판독 동작은 비교적 에러가 없어야 한다. 이러한 경우에, 간단한 에러 검출 기능이 로컬로 수행될 수 있는 ECC 방식이 구현되어서, 로컬 리프레시 데이터 경로(120)가 더 짧아지고 리프레시 동안 레이턴시가 감소된다. 에러 정정을 포함하는 ECC 회로는 복수의 매크로(130a-n) 사이에서 공유될 수 있고, 더 긴 글로벌 리프레시 데이터 경로(122)는 이러한 비교적 드문 사건에 사용될 것이다. 이러한 방식에서, 에러 검출만을 갖는 로컬 ECC 회로(140a-n)에 필요한 면적은 각각 상당히 적은 면적을 필요로 한다.
해밍 코드, 3중 모듈 리던던시 등을 포함하여 ECC를 구현하기 위한 많은 방식이 개발되었다. 예를 들어, 해밍 코드는, 사용되는 패리티 비트 수에 따라, 코드 워드 당 최대 두 개의 비트 에러를 검출하거나, 정정되지 않은 에러를 검출하지 않고 하나의 비트 에러를 정정할 수 있는 이진 선형 블록 코드 클래스이다. 여러 방식이 개발되었지만, 일반적으로 패리티 비트가 코드 워드 내에 배열되어, 상이한 틀린 비트가 상이한 에러 결과를 생성하면, 에러가 발생한 비트를 식별할 수 있다. 에러가 있는 코드 워드의 경우, 에러 패턴은 에러 신드롬이라고 하며, 이는 에러가 있는 비트를 식별한다. 이러한 신드롬 디코딩은 에러가 있는 선형 블록 코드를 디코딩하는 매우 효율적인 방법이다.
여기에 설명되는 바와 같이, 로컬 ECC 회로(140a-n) 및 글로벌 ECC(160)는 ECC 인코더 및 디코더를 사용하여 ECC 인코딩 및 디코딩을 사용할 수 있다. ECC 인코더는 에러를 검출 또는 정정하기 위해 정보에 리던던시를 추가하는 임의의 기술 또는 알고리즘을 포함할 수 있다. 예를 들어, 에러 정정 코드는 리드 솔로몬 [255, 239] 또는 [255, 221] 코드와 같은 비이진 블록 코드, 해밍 코드 및 보세, 샤우드후리, 호켄헴(Bose-Chaudhuri-Hocquenghem; BCH) 코드와 같은 선형 블록 코드, 순환 해밍 코드, 하다마드 [16, 5] 코드와 같은 하다마드 코드, 골레이 [23, 12] 코드와 같은 골레이 코드, 확장된 골레이 [24, 12] 코드, 또는 순환 골레이 [24, 12] 코드, 최대 길이 시프트 레지스터 코드, 리드 뮬러 코드, 교류 코드, 가파(Gappa) 코드, 이진 및 비이진 컨벌루션 코드, 이중 K 코드, 터보 코드, 터보 곱 코드, LDPC 코드, 하나의 코드를 다른 코드 안에 둘러싸서 만든 연결 코드, 등을 포함할 수 있다. 더 많은 패리티 비트를 더 추가하여 필요에 따라 에러 정정 코드의 강도를 조정할 수 있다. 예를 들어, 코드의 강도는 최소 해밍 거리로 측정할 수 있다. ECC 디코더는 ECC 인코더에 연결되어 코드 워드의 신드롬을 계산하는 데 사용될 수 있다.
일부 실시예에서, 특히, ECC 디코더는 로컬 ECC 회로(140a-n)에 포함되어, 사전에 정의된 패리티 검사 매트릭스 및 코드 워드에 대해 매트릭스 곱셈을 수행할 수 있다. 사전에 정의된 패리티 검사 매트릭스는 사용되는 ECC의 유형에 따라 판단될 수 있다. 예를 들어, 사전에 정의된 패리티 검사 매트릭스는 (7, 4) 해밍 코드의 7x3 패리티 검사 매트릭스(H)일 수 있다. 따라서, ECC 디코더는 3비트로 구성되는 3-튜플 벡터를 출력한다. ECC 디코더는, (7, 4) 해밍 코드의 원리에 기초하여, 인코딩되는 코드 워드가 유효한 코드 워드인지 여부를 검사하기 위한 것이다. ECC 디코더에 의해 생성되는 3-튜플 벡터, 즉 신드롬이 (0, 0, 0)과 동일할 때, 인코딩되는 코드 워드는 유효한 코드 워드인 것으로 판단된다. 이 경우, 코드 워드가 유효한 것으로 판단하는 동작만이 필요하고, 로컬 리프레시 데이터 경로(120)가 사용된다. ECC 디코더에 의해 생성되는 3-튜플 벡터가 동작시 (0, 0, 0)과 동일하지 않은 경우, 인코딩되는 코드 워드는 적어도 하나의 에러를 갖는 것으로 판단된다. 이 경우, 에러 정정을 포함하는 보다 완전한 ECC가 필요하고, 글로벌 리프레시 데이터 경로(122)가 사용된다.
도 2는 MRAM 디바이스(100)의 예의 다른 양태를 일반적으로 도시하는 블록도이다. 도시되는 실시예에서, 로컬 메모리 어레이(102a)는 행 및 열로 배열되는 MRAM 비트 셀(200)과 같은 복수의 MRAM 비트 셀을 포함한다. MRAM 비트 셀(200)은 액세스 트랜지스터(212) 및 MTJ 구성 엘리먼트(214)를 포함한다. MTJ 구성 엘리먼트(214)는 자유층의 배향에 따라 가변 저항을 가지며, 액세스 트랜지스터(212)와 비트 라인(204) 사이에서 동작 가능하게 결합된다. 액세스 트랜지스터(212)는 비트 라인(206)과 MTJ 구성 엘리먼트(214) 사이에 동작 가능하게 결합되고, 워드 라인(202)에 결합되는 게이트를 갖는다. 판독 또는 기록 동작 동안, 액세스 트랜지스터(212)의 임계 전압보다 큰 전압이 워드 라인(202)에 인가되고, 이에 의해, 액세스 트랜지스터(212)를 "온"시키고, MTJ 구성 엘리먼트(214)를 통해 비트 라인(206)으로부터 비트 라인(204)으로 전류가 흐르게 한다. 비트 라인 내의 전류를 감지하고 비교하여, MTJ 구성 엘리먼트(214) 내의 자유층의 상태 및 결과적으로 MRAM 비트 셀(200)에 저장되는 데이터("1" 또는 "0")에 상응하는 로직 하이 "1" 또는 로우 "0"를 출력할 수 있는 감지 증폭기(미도시)에 의해 전류가 검출된다. 로컬 메모리 어레이(102a)의 복수의 비트 셀 중 임의의 비트 셀로의 액세스는, 워드 라인에 전압의 인가를 정확하게 타이밍하고 각각의 비트 라인 상의 전류를 감지함으로써 수행된다. 로컬 메모리 어레이(102a) 내의 비트 셀의 데이터는 예를 들어 비트 라인(204, 206)을 통해 로컬 ECC 회로로 전송될 수 있다. 로컬 메모리 어레이(102a) 내의 비트 셀의 데이터는, 도 1에 도시되는 바와 같은 매크로(130a)의 외부에 있는 회로로 또는 그로부터, 로컬 I/O 회로(106a), 예를 들어 비트 라인(204, 206)을 통해 전송된다.
도 3은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(300)를 일반적으로 도시하는 블록도이다. 도시되는 실시예에서, ECC 로직 프로세스(300)는 로컬 ECC 로직(340) 및 글로벌 ECC 로직(360)을 포함한다. 일부 실시예에서, 로컬 ECC 로직(340)에는 메모리 어레이 또는 매크로가 제공되고, 글로벌 ECC 로직(360)은 복수의 메모리 어레이 또는 매크로에서 공유된다. 예를 들어, 도 1을 참조하면, 로컬 ECC 로직(340)은 로컬 메모리 매크로(130a) 내에 로컬 메모리 어레이(102a)가 제공되는 로컬 ECC 회로(140a)에 해당할 수 있고, 글로벌 ECC 로직은 복수의 메모리 매크로들(130a-n) 사이에서 공유되는 글로벌 ECC 회로(160)에 해당할 수 있다.
로컬 ECC 로직(340)은 신드롬 s1 생성기(342), 신드롬 s3 생성기(344), 및 에러 검사 회로(346)를 포함한다. 메모리 어레이(102a-n) 내의 MRAM 비트 셀(200)은 에러 검출 및 정정을 위한 데이터 및 패리티 비트 모두를 저장한다. 도시되는 예에서, ECC 논리 프로세스(300)는 로컬 메모리 어레이(102a)로부터 판독되는 코드 워드, 예를 들어, MRAM 매크로(130a)로부터 판독되는 N-비트 길이 판독 데이터 상에서 동작한다. 일부 실시예에서, 판독 데이터가 에러를 갖는지 여부를 판단하기 위해 신드롬 s1, s3만이 필요하므로, 판독 데이터의 부분 디코딩 만이 필요하다. 신드롬 s1, s3은 단일 숫자 엘리먼트일 수 있거나, 신드롬 s1, s3은 각각 복수의 숫자 엘리먼트의 벡터일 수 있거나, 또는 신드롬 s1, s3은 복수의 숫자 엘리먼트의 행렬일 수 있다. 신드롬 s1 생성기(342)는 신드롬 s1에 도달하기 위해 사전에 정의된 패리티 검사 매트릭스를 사용하여 판독 데이터에 대한 매트릭스 곱셈을 수행하고, 마찬가지로 신드롬 s3 생성기(344)는 신드롬 s3에 도달하기 위해 사전에 정의된 패리티 검사 매트릭스 상에서 행렬 곱셈을 수행한다. 에러 검사 회로(346)는 신드롬 s1, s3을 평가하고, 판독 데이터, 예를 들어 코드 워드가 하나 이상의 에러를 포함하는지 여부를 판단하기 위해 구성된다.
판독 데이터가 적어도 하나의 에러를 포함하는 것으로 에러 검사 회로(346)에 의해 판단되는 경우, 글로벌 ECC 로직(360)을 요구하는 판독 데이터의 전체 디코딩이 필요하다. 글로벌 ECC 로직(360)은 x^3(x의 세제곱) 계산 회로(351), 인코더(EN) 계산 회로(352), 검사 비트 생성기(353), XOR(배타적 OR) 계산 회로(354), 역수(inverse) 계산 회로(355), 갈루아 필드(Galois Field; GF) 다중 계산 회로(356)와 같은 유한 필드 및 에러 정정 회로(362)를 포함한다. 일부 실시예에서, EN 계산 회로(352)는 판독 데이터 상에서 동작하고, 정정 후에 코드 워드가 로컬 메모리 어레이(102a)에 다시 기록될 필요가 있는지 여부를 인코딩하는 단일 비트를 출력한다. 예를 들어, EN 계산 회로(352)는 BCH 순환 에러 정정 코드의 인코더 스테이지일 수 있다. 일부 실시예에서, EN 계산 회로(352)는, 글로벌 ECC 로직(360)이 정정 이외에 추가적 에러 검출을 할 수 있도록, 예를 들어, SECDED(단일 에러 정정(Single-Error Correcting; SEC) 및 이중 에러 검출(Double-Error Detecting; DED))과 같이, 패리티 비트를 추가한다. 도 3에 도시되는 실시예에서, 신드롬 s1, s3은 로컬 ECC 로직(340)에서 계산되고, 글로벌 ECC 로직(360)에 의해 전송되고 사용된다. 특히, x^3 계산 회로(351)는 신드롬 s1 상에서 동작하여 s1^3에 도달하고, XOR 계산 회로(354)는 신드롬 s3 및 세제곱 계산 회로(351)로부터의 결과적인 s1^3 상에서 작동하여 s3 및 s1^3을 비교하고 XOR 진리표에 따른 벡터를 출력한다. 역수 계산 회로(355)는 신드롬 s1 상에서 동작하고 신드롬 s1의 역수를 출력하고, GF 다중 계산 회로(356)는 역수 계산 회로(355) 및 XOR 계산 회로(354)의 출력부 상에서 동작한다. 일부 실시예에서, GF 다중 계산 회로(356)는 에러 검출 및 에러 정정을 포함하는 BCH 순환 에러 정정 코드의 디코더 스테이지일 수 있다. 일부 실시예에서, GF 다중 계산 회로(356)는 모든 데이터 비트의 갈루아 필드 내의 곱셈 및 누적을 통해 코드 워드 상에서 동작하고, 여기서 데이터 비트는 다항식의 계수로 취급된다. GF 다중 계산 회로(356)의 출력은 판독 데이터 및 신드롬 s1과 함께 에러 정정 회로(362)에 입력된다. 에러 정정 회로(362)의 출력은 에러 정정된 코드 워드이다. 다음으로, 검사 비트 생성기(353)는 정정된 워드, 예를 들어 패리티 비트가 없는 데이터 상에서 동작하고, 선택된 ECC 유형 또는 방식의 사전에 정의된 패리티 검사 매트릭스에 따라 패리티 비트를 인코딩하여, 로컬 코드 어레이(102a)에 기록될 정정된 코드 워드를 형성한다.
도 4는 도 3에 도시되는 ECC 논리 프로세스(300)를 사용하여 MRAM 에러를 정정하기 위한 방법(400)의 흐름도이다. 방법(400)은 단계(402)에서 시작하는데, 단계(402)에서 신드롬 s1, s3은 메모리 어레이에 대한 메모리 리프레시 동작의 일부로서 판독 데이터로부터 계산된다. 예를 들어, 로컬 메모리 어레이(102a-n)를 포함하는 복수의 매크로(130a-n) 중 하나로부터의 코드 워드가 판독되고, 리프레시 주기 동안 판독 데이터가 시작되는 로컬 메모리 어레이(102a-n)와 관련된 로컬 ECC 회로(140a-n) 내에서 사전에 정의된 패리티 검사 매트릭스를 사용하여 판독 데이터에 대해 매트릭스 곱셈을 수행함으로써 신드롬 s1, s3이 계산된다. 일부 실시예에서, 신드롬 s1, s3의 계산은 도 3에 도시되는 바와 같이 로컬 ECC 로직(340) 내의 s1 신드롬 생성기(342) 및 s3 신드롬 생성기(344)를 사용하여 수행될 수 있다. 단계(404)에서, 신드롬 s1, s3은, 예를 들어 로컬 ECC 로직(340) 내에서 에러 검사(346)를 사용하여, 코드 워드가 적어도 하나의 에러를 갖는지 여부를 판단하도록 평가된다. 에러가 없으면, 방법(400)은 그 코드 워드에 대해 종료되고, 단계(402)에서 로컬 메모리 어레이(102a-n)에 대해 리프레시 주기의 다음 코드 워드에 대해 시작한다. 적어도 하나의 에러가 존재하면, 방법(400)은, 판독 데이터 및 신드롬 s1, s3이, 적어도 하나의 에러를 갖는 것으로 판단되는 현재 판독 데이터가 시작되는 로컬 매크로를 포함하는 복수의 로컬 매크로와 관련된 글로벌 ECC 로직(360)과 같은 글로벌 ECC 회로(160)에 입력되는 단계(406)로 진행한다. 정정 후에 코드 워드가 로컬 메모리 어레이 (102)에 다시 기록될 필요가 있는지 여부는 예를 들어 EN 계산 회로(352)를 사용하여 판독 데이터로부터 판단된다. 예를 들어, EN 계산 회로(352)는 BCH 순환 에러 정정 코드의 인코더 스테이지일 수 있다. 일부 실시예에서, EN 계산 회로(352)는, 글로벌 ECC 로직(360)이 정정 이외에 추가적 에러 검출을 할 수 있도록, 예를 들어, SECDED(단일 에러 정정(Single-Error Correcting; SEC) 및 이중 에러 검출(Double-Error Detecting; DED))과 같이, 패리티 비트를 추가한다. 단계(408)에서, s1^3은 글로벌 ECC 로직(360) 내의 x^3 계산 회로(351)에 의해 계산된다. 단계(410)에서, 입력(s1^3, s3)의 XOR이 예를 들어 글로벌 ECC 로직(360) 내의 XOR 계산 회로(354)에 의해 계산되고, s1의 역수는 예를 들어 글로벌 ECC 논리(360) 내의 역수 계산 회로(355)에 의해 계산된다. 단계(412)에서, GF 다중은, 예를 들어 역수(s1) 및 XOR 계산으로부터의 출력을 사용하여 GF 다중 계산 회로(356)에 의해 계산된다. 일부 실시예에서, GF 다중 계산 회로(356)는 에러 검출 및 에러 정정을 포함하는 BCH 순환 에러 정정 코드의 디코더 스테이지일 수 있다. 일부 실시예에서, GF 다중 계산 회로(356)는 모든 데이터 비트의 갈루아 필드에서의 곱셈 및 누적을 통해 코드 워드 상에서 동작하며, 여기서 데이터 비트는 다항식의 계수로 취급된다. 단계(414)에서, 판독 데이터, 그리고 GF 다중 및 신드롬 s1 계산의 출력을 사용하여, 예를 들어 글로벌 ECC 로직(360) 내의 에러 정정 회로(362)에 의해 정정된 코드 워드가 계산된다. 단계(416)에서, 정정된 워드, 예를 들어 정정된 데이터는 정정된 코드 워드 및 검사 비트 생성기, 예를 들어 글로벌 ECC 로직(360) 내의 검사 비트 생성기(353)로부터 추출되고, 선택되는 ECC 유형 또는 방식에 따라 사전에 정의된 패리티 검사 매트릭스를 사용하여 정정된 데이터를 패리티 비트로 인코딩한다. 다음으로, 정정되고 인코딩된 코드 워드는 로컬 매크로(130)에 다시 기록된다.
도 5는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(500)를 일반적으로 도시하는 블록도이다. 도 3의 ECC 논리 프로세스(300)와 비교하여, ECC 논리 프로세스(500)에서는, 검사 비트 생성기(353)가 더 이상 글로벌 ECC 로직(360)에 포함되지 않지만, 로컬 ECC 로직(340)에 포함된다. ECC 로직 프로세스(300)와의 이러한 차이는, 패리티 비트를 정정된 데이터로 인코딩하는 동작 및 결과적인 정정된 코드워드를 로컬 메모리 어레이(102a)에 기록하는 동작을 로컬 메모리 어레이(102a)와 연관된 로컬 ECC 논리(340)으로 오프로드하여, 글로벌 ECC 로직(360)이, 패리티 비트를 인코딩하고, 글로벌 ECC 로직(360)을 공유하는 복수의 메모리 매크로(130a-n)를 위한 정정된 코드 워드를 기록하는 책임을 더 이상 갖지 않도록 한다.
도 6은 ECC 논리 프로세스(500)를 사용하여 MRAM 에러를 정정하는 방법(600)의 흐름도이다. 방법(600)은 상기 방법(400)과 유사하지만, 단계(616)에서 단계(416)에 포함되는 동일한 동작이 글로벌 ECC 보다는 로컬 ECC 내에서 수행되어, 그 작업을 도 5와 관련하여 전술한 바와 같이 로컬 ECC 논리 회로에 오프로드 한다는 차이점이 있다. 특히, 단계(616)은 정정된 코드 워드로부터 정정된 워드, 예를 들어 정정된 데이터를 추출하는 단계 및 선택된 ECC 유형 또는 방식에 따라 사전에 정의된 패리티 검사 매트릭스를 사용하여 정정된 데이터를 패리티 비트로 인코딩하는 단계 및 정정되고 인코딩된 코드 워드를 로컬 ECC 논리 회로와 연관되는 로컬 매크로에 다시 기록하는 단계를 포함한다.
도 7은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(700)를 일반적으로 도시하는 블록도이다. ECC 논리 프로세스(700)는 상기 ECC 논리 프로세스(500)와 유사하며, 두 가지 차이점을 포함한다. 첫 번째 차이점은 신드롬 s1 생성기(342)와 신드롬 s3 생성기(344)가 글로벌 ECC 로직(360) 내에서 중복된다는 점이다. 글로벌 ECC 로직(360) 내에서, 신드롬 s1 생성기(342)와 신드롬 s3 생성기(344)를 중복시키는 것은 전체 계층적 ECC 방식 내에서 필요로 하는 연결물 개수를 줄일 수 있고, 레이아웃 구조를 단순화할 수도 있다. 예를 들어, ECC 논리 프로세스(300, 500)는, 모든 로컬 ECC 회로(140a-n) 및 로컬 I/O 회로(106a-n)가 판독 데이터 및 신드롬 s1, s3을 전송하는 것을 지원하고, 글로벌 ECC 회로(160)가 판독 데이터와 함께 신드롬 s1, s3을 수신하는 것을 지원하도록 요구한다. 대조적으로, ECC 로직 프로세스(700)는, 로컬 ECC 회로(140a-n) 및 로컬 I/O 회로(106a-n)가 판독 데이터를 전송하는 것을 지원하기만을 요구하고, 글로벌 ECC 회로(160)가 판독 데이터를 수신하는 것을 지원하기만을 요구한다. 이와 같이, 일부 실시예에서, 로컬 I/O 회로(106a-n)와 글로벌 ECC 회로(160) 사이의 신드롬 s1, s3의 전송에 필요한 연결은 ECC 논리 프로세스(700)를 사용하여 제거될 수 있으며, 이는 MRAM 디바이스(100)의 레이아웃 구조를 간소화시킬 수 있다.
두 번째 차이점은 에러 검출 회로(357)가 글로벌 ECC 로직(360) 내에 포함된다는 점이다. 에러 검사 회로(346)와 유사하게, 에러 검출 회로(357)는 판독 데이터, 예를 들어 코드워드가 적어도 하나의 에러를 포함하는지 여부를 판단하도록 구성되었지만, 이는 글로벌 ECC 논리 회로(360) 내에서 이루어진다. 에러 검출 회로(357)는 EN 계산 회로(351)의 출력, s1, s3 및 s1^3을 입력으로서 수신하고, 판독 데이터가 적어도 한 개의 에러를 포함하는지 여부를 출력한다. 에러 검출 회로(357)는 판독 데이터에 적어도 한 개의 에러가 있는지 또는 판독 데이터에 적어도 두 개의 에러가 있는지 여부를 출력하고, 판독 데이터에 적어도 세 개 이상의 에러가 있는지 여부를 출력할 수 있다.
도 8은 ECC 논리 프로세스(700)를 사용하여 MRAM 에러를 정정하기 위한 방법(800)의 흐름도이다. 방법(800)은 상기 방법(600)과 유사하지만 두 개의 차이점이 있다. 첫 번째로, 단계(406)는 단계(806)로 대체되며, 여기서 신드롬 s1, s3은, 방법(400, 600)의 단계(406)에 포함되는 동일한 동작으로부터 입력되는 것이 아니라, 글로벌 ECC 회로(160)(예를 들어, 글로벌 ECC 로직(360)) 내에서 계산된다. 두 번째, 단계(408)와 단계(410) 사이에서, 단계(809)에서, 판독 데이터 내에 에러가 존재하는지 여부 및 에러의 개수가 글로벌 ECC 회로(160)(예를 들어, 에러 검출 회로(357)) 내에서 계산되는지 여부이다.
도 9는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(900)를 일반적으로 도시하는 블록도이다. ECC 논리 프로세스(900)는 상기 ECC 논리 프로세스(700)와 유사하지만, 네 가지 차이점이 있다. 첫째, 신드롬 s1 생성기(342) 및 신드롬 s3 생성기는 더 이상 글로벌 ECC 로직(360) 내에서 중복되지 않는다. 둘째, 세제곱 계산 회로(351), EN 계산 회로(352), 및 에러 검출 회로(357)는 로컬 ECC 로직(340)에 포함되고, 글로벌 ECC 로직(360)에 더 이상 포함되지 않는다. 로컬 ECC 로직(340) 내에 세제곱 계산 회로(351), EN 계산 회로(352), 및 에러 검출 회로(357)를 포함하는 것은 로컬 ECC 로직(340)의 계산 유틸리티 및 전력을 증가시킨다. 비교적 높은 데이터 에러율을 경험하는 MRAM 디바이스(100)의 경우, 데이터 이동의 에너지 소비 부담, 그리고 공유 글로벌 ECC 회로(160)에 대한 에러 검출 및 정정 동작의 오프로드로 인한 데이터의 레이턴시 모두는, 로컬 메모리 매크로(130a-n) 내에서 이러한 동작을 수행할 회로부를 제거하는 면적 절약 이점을 능가할 수 있다. 이러한 경우에, 로컬로 수행되는 동작을 증가시킴으로써, 에러 검사와 관련되는 면적, 에너지 소비 및 데이터 레이턴시 사이의 균형을 조정함으로써 MRAM 디바이스(100)의 효율이 증가될 수 있다. 예를 들어, EN 계산 및 신드롬 s1 세제곱 계산을 포함함으로써, ECC 논리 프로세스(900)의 로컬 ECC 논리(340)는 에러 검출을, 예를 들어 에러 검출 회로(357)를 통해, 포함할 수 있고, 이로 인해 더 정확하게는, 에러가 코드 워드 내에 존재하는지 여부 및 코드 워드 및 워드 내의 에러 개수를 검출하는 것을 포함하여, 에러의 개수를 더 정확하게 검출할 수 있다.
세 번째 차이점은 에러 검사 회로(351)가 생략된다는 것이다. 네 번째 차이점은 검사 비트 생성기(353)가, ECC 로직 프로세스(300)와 유사하게, 로컬 ECC 로직(340)보다는 글로벌 ECC 로직(360)에 다시 한번 포함된다는 것이다.
도 10은 ECC 논리 프로세스(900)를 사용하여 MRAM 에러를 정정하기 위한 방법(1000)의 흐름도이다. 방법(1000)은 네 가지 차이점을 제외하고는 상기 방법(800)과 유사하다. 첫째, 단계(1003)는 단계(402) 이후에 포함되며, 여기서 s1^3 및 EN은 로컬 ECC 로직(340) 내에서 각각 x^3 계산 회로(351) 및 EN 계산 회로(352)에 의해 계산된다. 둘째, 단계(404)는 단계(1004)로 대체되고, 여기서 판독 데이터 내의 에러의 존재 및 판독 데이터 내의 에러의 개수는 로컬 ECC 로직(340) 내의 에러 검출 회로(357)에 의해 계산되며, s1, s3, s1^3, 및 EN 계산에 기초한다. 에러가 없으면, 방법(1000)은 그 코드 워드에 대해 종료하고, 로컬 메모리 어레이(102a)에 대한 리프레시 주기에서 다음 코드 워드에 대한 방법(1000)의 단계(402)에서 시작한다. 세 번째, 적어도 하나의 에러가 있는 경우, 방법(1000)은 판독 데이터, 신드롬 s1, s3, s1^3 및 검출되는 에러의 개수가 글로벌 ECC 로직(360)에 입력되는 단계(1006)로 진행한다. 네 번째, 방법(1000)은 방법(800)의 단계(616)를 방법(400)의 단계(416)로 대체한다. 즉, 방법(1000)의 단계(416)에서, 정정된 워드, 예를 들어 정정된 데이터는 정정된 코드 워드로부터 추출되고, 글로벌 ECC 로직(360) 내의 검사 비트 생성기(353)는 선택되는 ECC 유형 또는 방식에 따라 사전에 정의된 패리티 검사 매트릭스를 사용하여 패리티 비트로 정정된 데이터를 인코딩하고, 정정되고 인코딩된 코드 워드는 로컬 매크로(130)에 다시 기록된다.
도 11은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(1100)를 일반적으로 도시하는 블록도이다. ECC 로직 프로세스(1100)는 상기 ECC 로직 프로세스(900)와 유사하지만, 검사 비트 생성기(353)가 더 이상 글로벌 ECC 로직(360) 내에 포함되지 않고 로컬 ECC 로직(340) 내에 포함된다는 차이점이 있다. 도 5의 ECC 논리 프로세스(500)와 관련하여 전술한 바와 같이, 이러한 차이는 패리티 비트를 정정된 데이터로 인코딩하는 동작 및 결과적인 정정된 코드워드를 로컬 메모리 어레이(102a)에 기록하는 동작을 로컬 메모리 어레이(102a)와 연관된 로컬 ECC 논리(340)으로 오프로드하여, 글로벌 ECC 로직(360)이, 더 이상 패리티를 인코딩하고, 글로벌 ECC 로직(360)을 공유하는 복수의 메모리 매크로(130a-n)를 위해 정정된 코드 워드를 다시 기록하는 책임을 갖지 않도록 한다.
도 12는 ECC 논리 프로세스(1100)를 사용하여 MRAM 에러를 정정하기 위한 방법(1200)의 흐름도이다. 방법(1200)은 상기 방법(1000)과 유사하지만, 단계(416)가 단계(616)로 대체되어, 정정된 워드, 예를 들어, 정정된 데이터를 정정된 코드 워드로부터 추출하는 단계, 선택된 ECC 유형 또는 방식에 따라 사전에 정의된 패리티 검사 매트릭스를 사용하여 정정된 데이터를 패리티 비트로 인코딩하는 단계, 및 정정되고 인코딩된 코드 워드를 로컬 ECC 논리(340)와 연관된 로컬 메모리 어레이(102)에 다시 기록하는 단계가, 글로벌 ECC 로직(360) 내가 아닌, 방법(600, 800)과 같은 로컬 ECC 로직(340) 내에서 수행된다는 차이점이 있다.
도 13은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(1300)를 일반적으로 도시하는 블록도이다. ECC 논리 프로세스(1300)는 상기 ECC 논리 프로세스(1100)와 유사하지만, 신드롬 s1 생성기(342), 신드롬 s3 생성기(344) 및 세제곱 계산 회로(351)가 글로벌 ECC 로직(360) 내에서 중복된다는 차이점이 있다. 도 7의 연결에 대해서 전술한 바와 같이, 글로벌 ECC 로직(360) 내에 신드롬 s1 생성기(342), 신드롬 s3 생성기(344), 및 세제곱 계산 회로(351)를 중복시키는 것은 전체 계층적 ECC 방식 내에서 필요한 연결의 개수를 감소시킬 수 있고, 레이아웃을 단순화할 수 있다.
도 14는 ECC 논리 프로세스(1300)를 사용하여 MRAM 에러를 정정하는 방법(1400)의 흐름도이다. 방법(1400)은 상기 방법(1200)과 유사하고, 단계(1406)이 단계(1006)를 대체한다는 차이점이 있다. 다시 말해서, 신드롬 s1, s3, s1^3은, 로컬 ECC 로직(340) 내에서 계산되는 수량을 중복하여 글로벌 ECC 로직(360) 내에서 계산된다. 이는 로컬 ECC 로직(340)으로부터 글로벌 ECC 로직(360)으로 그 수량을 입력하는 대신이며, 방법(1200)의 단계(1006)에서 수행되는 바와 같다. 이와 같이, 방법(1400)의 단계(1406)는, 글로벌 ECC 로직(360) 내에서 s1, s3, 및 s1^3의 계산을 중복하는 것뿐만 아니라, 단계(1004)에서 검출된 판독 데이터 및 에러의 개수를 글로벌 ECC 로직(360)으로 입력하는 것을 포함한다. 이는 도 7의 ECC 프로세스(700)와 관련하여 도 8에 도시되는 방법(800)에서 발생하는 중복과 유사하다.
도 15는 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(1500)를 일반적으로 도시하는 블록도이다. ECC 논리 프로세스(1500)는 상기 ECC 논리 프로세스(900)와 유사하지만, XOR 회로(354), 역수 계산 회로(355) 및 GF 다중 계산 회로(356)가 로컬 ECC 논리(340)에 포함되고, 더 이상 글로벌 ECC 논리(360)에 포함되지 않는다는 차이점이 있다. XOR 회로(354), 역수 계산 회로(355) 및 GF 다중 계산 회로(356)를 로컬 ECC 로직(340) 내에 포함하는 것은 로컬 ECC 로직(340)의 계산 유틸리티 및 전력을 증가시킨다. ECC 프로세스(900) 및 도 9와 관련하여 위에서 설명되는 바와 같이, MRAM 디바이스(100)의 효율은, 데이터 에러율이 증가함에 따라 로컬로 수행되는 동작을 증가시킴으로써, 에러 검사와 관련되는 면적, 에너지 소비 및 데이터 레이턴시 사이의 균형을 조정함으로써 증가될 수 있다. 예를 들어, 데이터를 공유 글로벌 ECC 회로(160)로 이동시키는 것과 관련되는 데이터 레이턴시 및 에너지 소비를 감소시키기 위해 로컬 ECC 회로(140a-n) 내에 로컬로 더 많은 에러 검사 회로부를 구현함으로써 면적과의 균형을 유지한다. 예를 들어, ECC 로직 프로세스(1500)에서, 로컬 ECC 로직(340)은, 에러 정정 및 코딩 및 에러 정정된 데이터를 로컬 매크로에 다시 기록하는 것을 제외하고, 모든 ECC 동작을 로컬로 수행한다.
도 16은 ECC 논리 프로세스(1500)를 사용하여 MRAM 에러를 정정하기 위한 방법(1600)의 흐름도이다. 방법(1600)은 상기 방법(1000)과 유사하지만, 다섯 가지 차이점이 있다. 첫 번째, 방법(1600)은 방법(1000)의 단계(1004)를 단계(1604)로 대체한다. 방법(1600)의 단계(1604)는 방법(1000)의 단계(1004)와 동일한 동작, 즉 s1, s3, s1^3 및 EN의 계산에 기초하여 로컬 ECC 로직(340) 내의 판독 데이터 내에 에러가 존재하는지 여부 및 에러의 개수의 계산을 수행한다. 유일한 차이는 판독 데이터 내에 에러가 존재하는 경우, 단계(1604)는 단계(1006)가 아니라 방법(1600)의 단계(1610)로 진행한다는 점이다. 이는 ECC 논리 프로세스(1500)에서 로컬 ECC 논리(340) 내에 포함되는 추가 회로 때문이다. 두 번째, 단계(1006)는 방법(1600)에서 수행되지 않고, 그보다 방법(1000)과의 세 번째 차이로서, 단계(1610)는 방법(1600)의 단계(1604)로부터 진행한다. 단계(1610)에서, s3과 s1^3의 XOR이, 예를 들어 로컬 ECC 논리(340) 내의 역수 계산 회로(355)에 의한 역수(s1)와 함께, 예를 들어 XOR 계산 회로(354)에 의해 계산된다. 네 번째, 단계(1612)에서, GF 다중은 로컬 ECC 논리(340) 내에서 계산된다. 다섯 번째, 단계(1613)에서, 판독 데이터, 검출되는 에러 개수, s1, 및 GF 다중 계산 결과가 글로벌 ECC 로직(360)에 입력되고 방법(1600)의 단계(414)에서 정정된 코드 워드의 계산에 사용된다.
도 17은 일 실시예에 따른 MRAM 에러 정정을 위한 예시적인 ECC 논리 프로세스(1700)를 일반적으로 도시하는 블록도이다. ECC 로직 프로세스(1700)는 상기 ECC 로직 프로세스(1500)와 유사하지만, 검사 비트 생성기(353)가 더 이상 글로벌 ECC 로직(360) 내에 포함되지 않고 로컬 ECC 로직(340) 내에 포함된다는 차이점이 있다. 도 5 및 도 11과 관련하여 전술한 바와 같이, ECC 논리 프로세스(1700)의 이러한 차이는, 패리티 비트를 정정된 데이터로 인코딩하는 동작 및 결과적인 정정된 코드워드를 로컬 메모리 어레이(102a)에 기록하는 동작을 로컬 메모리 어레이(102a)와 연관된 로컬 ECC 논리(340)로 오프로드하여, 글로벌 ECC 로직(360)이, 패리티를 인코딩하고, 글로벌 ECC 로직(360)을 공유하는 복수의 메모리 매크로(130a-n)를 위해 정정된 코드 워드를 기록하는 책임을 더 이상 갖지 않도록 한다.
도 18은 ECC 논리 프로세스(1700)를 사용하여 MRAM 에러를 정정하기 위한 방법(1800)의 흐름도이다. 방법(1800)은 상기 방법(1600)과 유사하지만, 단계(416)가 단계(616)로 대체되어, 정정된 워드, 예를 들어, 정정된 데이터를 정정된 코드워드로부터 추출하는 단계, 선택된 ECC 유형 또는 방식에 따라 사전에 정의된 패리티 검사 매트릭스를 사용하여 정정된 데이터를 패리티 비트로 인코딩하는 단계, 및 정정되고 인코딩된 코드 워드를 로컬 ECC 논리(340)와 연관되는 로컬 메모리 어레이(102)에 다시 기록하는 단계가 글로벌 ECC 로직(360) 내가 아닌, 방법(600, 800, 1200)과 같은 로컬 ECC 로직(340) 내에서 수행되는 데 차이점이 있다.
도 19는 일부 실시예에 따른 계층적 ECC 논리 프로세스를 사용하여 MRAM 에러를 정정하기 위한 방법(1900)의 흐름도이다. 방법(1900)은, 각각 적어도 메모리 셀 어레이 및 로컬 ECC 논리 회로를 포함하는 복수의 메모리 매크로, 예를 들어, MRAM 메모리 매크로(130a-n)가 제공되는 단계(1902)에서 시작한다. 일부 실시예에서, 복수의 메모리 매크로는 로컬 메모리 어레이(102a-n)를 포함하고, 로컬 메모리 어레이(102a-n) 각각은 로컬 ECC 로직(140a-n)을 각각 포함한다. 단계(1904)에서, 복수의 MRAM 매크로로부터 떨어져 있고 복수의 MRAM 매크로 각각에 결합되는 글로벌 ECC 논리 회로가 제공된다. 일부 실시예에서, 글로벌 ECC 로직 회로는 글로벌 ECC 로직(160)을 포함한다. 단계(1906)에서, 로컬 MRAM 매크로로부터의 데이터는, 로컬 MRAM 메모리의 일부, 예를 들어 판독 데이터 또는 코드 워드의 에러가 로컬 ECC 로직 회로 내에서 검사되는 리프레시 주기의 일부로서 검사된다. 특정 코드 워드에서 에러가 발견되지 않으면, 매크로 내의 다음 코드 워드가 리프레시 주기의 일부로 검사된다. 다음으로, 방법(1900)은 단계(1908)로 진행하는데, 여기서 적어도 하나의 에러가 로컬 매크로의 메모리 어레이 내에서 발견되면, 검사되어 적어도 하나의 에러를 갖는 것으로 밝혀진 데이터, 예를 들어 적어도 하나의 에러를 갖는 코드 워드는 로컬 ECC 로직 회로 내의 계산 회로의 출력과 함께 글로벌 ECC 로직으로 전송된다. 단계(1910)에서 적어도 하나의 에러를 갖는 데이터가 글로벌 ECC 논리 회로 내에서 정정되고, 단계(1912)에서 정정된 데이터가 로컬 매크로 메모리 어레이에 다시 기록된다.
따라서, 개시되는 예는 메모리 디바이스, 특히 주기적인 리프레시를 요구하는 MRAM과 같은 단기 보유 메모리 디바이스에 대한 에러 검출 및 정정을 제공한다. 일부 ECC 기능이 메모리 매크로에 로컬로 제공되고 다른 ECC 기능이 글로벌로 제공되는 계층적 ECC 접근법을 사용함으로써, MRAM 디바이스에 대한 전력 감소뿐만 아니라 매크로 면적 감소는 충분히 낮은 에러율로 달성될 수 있다. 소정의 개시된 실시예는 MRAM 메모리 디바이스와 같은 메모리 디바이스를 포함하며, 메모리 디바이스는, 각각 메모리 셀의 어레이 및 제1 ECC 회로를 포함하는 복수의 메모리 매크로를 포함한다. 제1 ECC 회로는 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성된다. 제2 ECC 회로는 복수의 메모리 매크로로부터 떨어져 있고, 복수의 메모리 매크로 각각에 통신가능하게 결합된다. 제2 ECC 회로는 복수의 메모리 매크로의 제1 ECC 회로로부터 검출된 데이터 에러를 수신하고, 데이터 에러를 정정하고, 메모리 어레이에 정정된 데이터를 기록하도록 구성된다.
더 나아간 양태에 따르면, ECC 시스템은 복수의 제1 ECC 회로를 포함한다. 복수의 제1 ECC 회로 각각은 각각의 메모리 어레이에 통신가능하게 결합되고, 각각의 메모리 어레이 내의 데이터 에러를 검출하도록 구성된다. 제2 ECC 회로는 복수의 제1 ECC 회로 각각에 통신가능하게 결합되고, 복수의 제1 ECC 회로로부터 검출된 데이터 에러를 수신하고 데이터 에러를 정정하도록 구성된다.
더 나아간 양태에 따르면, 방법은, 각각 메모리 셀 어레이 및 제1 ECC 회로를 포함하는 복수의 메모리 매크로를 제공하는 단계를 포함한다. 방법은 복수의 메모리 매크로들로부터 떨어져 있고 복수의 메모리 매크로 각각에 통신가능하게 결합되는 제2 ECC 회로를 제공하는 단계, 및 제1 ECC 회로로 메모리 어레이 내의 데이터 에러를 검사하는 단계를 포함하는 메모리 어레이를 리프레싱(refreshing)하는 단계를 더 포함한다. 제1 ECC 회로에 의해 데이터 에러가 식별되면, 방법은 검출된 데이터 에러를 제2 ECC 회로에 포워딩(forwarding)하는 단계, 제2 ECC 회로에 의해 데이터 에러를 정정하는 단계, 및 정정된 데이터를 메모리 어레이에 기록하는 단계를 더 포함한다.
전술한 바는 몇몇 실시예의 피처를 개략적으로 설명하여 당업자가 본 개시의 양태를 더 잘 이해할 수 있도록 한다. 당업자는 본 개시에서 소개하는 실시예와 동일한 목적을 수행하고/하거나 동일한 장점을 달성하기 위한 다른 공정 및 구조를 디자인 또는 변경하기 위한 기초로서 본 개시를 용이하게 사용할 수 있다는 것을 이해할 것이다. 당업자는 또한 이러한 균등 구성이 본 개시의 사상 및 범위를 벗어나지 않는다는 것과, 그들이 본 개시의 사상 및 범위를 벗어나지 않고 다양한 변경, 치환 및 변형을 행할 수 있음을 알 것이다.
실시예들
실시예 1. 메모리 디바이스에 있어서,
복수의 메모리 매크로(memory macro)로서, 메모리 셀의 어레이 및 상기 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성되는 제1 에러 정정 코드(error correction code; ECC) 회로를 각각 포함하는, 상기 복수의 메모리 매크로;
제2 ECC 회로로서, 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되며, 상기 복수의 메모리 매크로의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고, 상기 데이터 에러를 정정하며, 상기 메모리 어레이에 상기 정정된 데이터를 기록하도록 구성되는 것인, 상기 제2 ECC 회로를 포함하는, 메모리 디바이스.
실시예 2. 실시예 1에 있어서, 상기 메모리 매크로는 자기 랜덤 액세스 메모리(magnetic random access memory; MRAM) 매크로를 각각 포함하는 것인, 메모리 디바이스.
실시예 3. 실시예 2에 있어서, 상기 MRAM 매크로는 각각,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트 라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트 라인;
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부(local input-output circuitry)를 더 포함하는 것인, 메모리 디바이스.
실시예 4. 실시예 3에 있어서, 상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기(syndrome s1 generator);
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기; 및
상기 제1 신드롬 s1 생성기 및 상기 제2 신드롬 s3 생성기 각각의 출력부에 결합되는 에러 검사 회로를 포함하는 것인, 메모리 디바이스.
실시예 5. 실시예 4에 있어서, 상기 제2 ECC 회로는,
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로(syndrome s1 inversion circuit);
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, 메모리 디바이스.
실시예 6. 실시예 3에 있어서, 상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로를 포함하는 것인, 메모리 디바이스.
실시예 7. 실시예 6에 있어서, 상기 제2 ECC 회로는,
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, 메모리 디바이스.
실시예 8. 실시예 3에 있어서, 상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기; 및
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로를 포함하는 것인, 메모리 디바이스.
실시예 9. 실시예 8에 있어서, 상기 제2 ECC 회로는,
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기, 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, 메모리 디바이스.
실시예 10. ECC 시스템에 있어서,
복수의 제1 ECC 회로로서, 상기 복수의 제1 ECC 회로 각각은 각각의 메모리 어레이에 통신가능하게 결합되도록 구성되고, 상기 각각의 메모리 어레이 내의 데이터 에러를 검출하도록 구성되는 것인, 상기 복수의 제1 ECC 회로; 및
제2 ECC 회로로서, 상기 복수의 제1 ECC 회로 각각에 통신가능하게 결합되고, 상기 복수의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고 상기 데이터 에러를 정정하도록 구성되는 것인, 상기 제2 ECC 회로를 포함하는, ECC 시스템.
실시예 11. 실시예 10에 있어서, 상기 복수의 제1 ECC 회로 각각은,
제1 비트 라인 및 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기; 및
상기 제1 신드롬 s1 생성기 및 상기 제2 신드롬 s3 생성기 각각의 출력부에 결합되는 에러 검사 회로를 포함하고,
상기 제2 ECC 회로는,
로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기, 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, ECC 시스템.
*
실시예 12. 실시예 10에 있어서, 상기 복수의 제1 ECC 회로 각각은,
제1 비트 라인 및 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로를 포함하고,
상기 제2 ECC 회로는,
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기, 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, ECC 시스템.
실시예 13. 실시예 10에 있어서, 상기 복수의 제1 ECC 회로 각각은,
제1 비트 라인 및 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 생성기의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기; 및
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로를 포함하고,
상기 제2 ECC 회로는,
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기, 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, ECC 시스템.
실시예 14. 방법에 있어서,
복수의 메모리 매크로를 제공하는 단계로서, 상기 복수의 메모리 매크로는 메모리 셀의 어레이 및 제1 ECC 회로를 각각 포함하는 것인, 상기 복수의 메모리 매크로를 제공하는 단계;
제2 ECC 회로를 제공하는 단계로서, 상기 제2 ECC 회로는 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되는 것인, 상기 제2 ECC 회로를 제공하는 단계;
상기 메모리 어레이를 리프레싱(refreshing)하는 단계로서, 상기 제1 ECC 회로로 상기 메모리 어레이 내의 데이터 에러를 검사하는 단계를 포함하는, 상기 메모리 어레이를 리프레싱하는 단계;
상기 제1 ECC 회로에 의해 데이터 에러가 식별되면, 상기 검출된 데이터 에러를 상기 제2 ECC 회로에 포워딩(forwarding)하는 단계;
상기 제2 ECC 회로에 의해 상기 데이터 에러를 정정하는 단계; 및
상기 정정된 데이터를 상기 메모리 어레이에 기록하는 단계를 포함하는, 방법.
실시예 15. 실시예 14에 있어서, 상기 제1 ECC 회로로 상기 MRAM 어레이 내의 데이터 에러를 검사하는 단계는,
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s1을 생성하는 단계;
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s3을 생성하는 단계; 및
상기 신드롬 s1 및 상기 신드롬 s3에 기초한 에러 검사 단계를 포함하는 것인, 방법.
실시예 16. 실시예 15에 있어서, 상기 제2 ECC 회로로 상기 데이터 에러를 정정하는 단계는,
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 EN을 생성하는 단계;
상기 신드롬 s1 에 기초하여 신드롬 s1^3을 생성하는 단계;
상기 신드롬 s1에 기초하여 신드롬 s1 역수를 생성하는 단계;
상기 신드롬 s1^3과 상기 신드롬 s3을 비교하는 단계;
상기 신드롬 s1 역수 및 상기 신드롬 s1^3과 상기 신드롬 s3의 비교에 기초하여 GF 다중 계산을 생성하는 단계;
상기 EN, 상기 신드롬 s1, 및 상기 GF 다중 계산에 기초하여 검사 비트 에러 정정을 생성하는 단계; 및
상기 에러를 정정하기 위해 상기 검사 비트 에러 정정을 상기 MRAM 어레이에 기록하는 단계를 포함하는 것인, 방법.
실시예 17. 실시예 14에 있어서, 상기 제1 ECC 회로로 상기 MRAM 어레이 내의 데이터 에러를 검사하는 단계는,
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s1을 생성하는 단계;
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s3을 생성하는 단계;
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 EN을 생성하는 단계;
상기 신드롬 s1에 기초하여 신드롬 s1^3을 생성하는 단계; 및
상기 신드롬 s1, 상기 신드롬 s3, 상기 EN 및 상기 신드롬 s1^3에 기초한 에러 검사 단계를 포함하는 것인, 방법.
실시예 18. 실시예 17에 있어서, 상기 제2 ECC 회로로 상기 데이터 에러를 정정하는 단계는,
상기 신드롬 s1에 기초하여 신드롬 s1 역수를 생성하는 단계;
상기 신드롬 s1^3과 상기 신드롬 s3을 비교하는 단계;
상기 신드롬 s1 역수 및 상기 신드롬 s1^3과 상기 신드롬 s3의 비교에 기초하여 GF 다중 계산을 생성하는 단계;
상기 EN, 상기 신드롬 s1, 및 상기 GF 다중 계산에 기초하여 검사 비트 에러 정정을 생성하는 단계; 및
상기 에러를 정정하기 위해 상기 검사 비트 에러 정정을 상기 MRAM 어레이에 기록하는 단계를 포함하는 것인, 방법.
실시예 19. 실시예 14에 있어서, 상기 제1 ECC 회로로 상기 MRAM 어레이 내의 데이터 에러를 검사하는 단계는,
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s1을 생성하는 단계;
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 신드롬 s3을 생성하는 단계;
상기 MRAM 어레이로부터 수신되는 데이터에 기초하여 EN을 생성하는 단계;
상기 신드롬 s1에 기초하여 신드롬 s1^3을 생성하는 단계;
상기 신드롬 s1, 상기 신드롬 s3, 상기 EN, 및 상기 신드롬 s1^3에 기초한 에러 검사 단계;
상기 신드롬 s1에 기초하여 신드롬 s1 역수를 생성하는 단계;
상기 신드롬 s1^3과 상기 신드롬 s3을 비교하는 단계; 및
상기 신드롬 s1 역수 및 상기 신드롬 s1^3과 상기 신드롬 s3의 비교에 기초하여 GF 다중 계산을 생성하는 단계를 포함하는 것인, 방법.
실시예 20. 실시예 19에 있어서, 상기 제2 ECC 회로로 상기 데이터 에러를 정정하는 단계는,
상기 EN, 상기 신드롬 s1, 및 상기 GF 다중 계산에 기초하여 검사 비트 에러 정정을 생성하는 단계; 및
상기 에러를 정정하기 위해 상기 검사 비트 에러 정정을 상기 MRAM 어레이에 기록하는 단계를 포함하는 것인, 방법.
Claims (6)
- 메모리 디바이스에 있어서,
복수의 메모리 매크로(memory macro)로서, 메모리 셀의 메모리 어레이 및 상기 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성되는 제1 에러 정정 코드(error correction code; ECC) 회로를 각각 포함하는, 상기 복수의 메모리 매크로;
제2 ECC 회로로서, 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되며, 상기 복수의 메모리 매크로의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고, 상기 제1 ECC 회로로부터 수신된 상기 데이터 에러를 정정하며, 상기 메모리 어레이에 상기 정정된 데이터를 기록하도록 구성되는 것인, 상기 제2 ECC 회로를 포함하고,
상기 메모리 매크로는 자기 랜덤 액세스 메모리(magnetic random access memory; MRAM) 매크로를 각각 포함하고,
상기 MRAM 매크로는 각각,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트 라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트 라인; 및
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부(local input-output circuitry)
를 더 포함하고,
상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로; 및
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로
를 포함하는, 메모리 디바이스. - 제1항에 있어서, 상기 제2 ECC 회로는,
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 계산 회로의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 비트 셀을 정정하기 위한 검사 비트 생성기 회로를 포함하는 것인, 메모리 디바이스. - 메모리 디바이스에 있어서,
복수의 메모리 매크로(memory macro)로서, 메모리 셀의 메모리 어레이 및 상기 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성되는 제1 에러 정정 코드(error correction code; ECC) 회로를 각각 포함하는, 상기 복수의 메모리 매크로;
제2 ECC 회로로서, 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되며, 상기 복수의 메모리 매크로의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고, 상기 제1 ECC 회로로부터 수신된 상기 데이터 에러를 정정하며, 상기 메모리 어레이에 상기 정정된 데이터를 기록하도록 구성되는 것인, 상기 제2 ECC 회로
를 포함하고,
상기 메모리 매크로는 자기 랜덤 액세스 메모리(MRAM) 매크로를 각각 포함하고,
상기 MRAM 매크로는 각각,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트 라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트 라인;
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부(local input-output circuitry)
를 더 포함하고
상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기(syndrome s1 generator);
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기; 및
상기 제1 신드롬 s1 생성기 및 상기 제2 신드롬 s3 생성기 각각의 출력부에 결합되는 에러 검사 회로
를 포함하고,
상기 제2 ECC 회로는,
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로(syndrome s1 inversion circuit);
상기 신드롬 s1^3 계산 회로의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기;
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로;
상기 로컬 입출력 회로부, 상기 신드롬 s1 생성기 및 상기 GF 다중 계산 회로에 결합되는 에러 정정 회로; 및
에러가 있는 상기 MRAM 비트 셀을 정정하기 위한 검사 비트 생성기 회로
를 포함하는 것인, 메모리 디바이스. - 메모리 디바이스에 있어서,
복수의 메모리 매크로(memory macro)로서, 메모리 셀의 메모리 어레이 및 상기 각각의 메모리 매크로 내의 데이터 에러를 검출하도록 구성되는 제1 에러 정정 코드(error correction code; ECC) 회로를 각각 포함하는, 상기 복수의 메모리 매크로;
제2 ECC 회로로서, 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되며, 상기 복수의 메모리 매크로의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고, 상기 제1 ECC 회로로부터 수신된 상기 데이터 에러를 정정하며, 상기 메모리 어레이에 상기 정정된 데이터를 기록하도록 구성되는 것인, 상기 제2 ECC 회로
를 포함하고,
상기 메모리 매크로는 자기 랜덤 액세스 메모리(magnetic random access memory; MRAM) 매크로를 각각 포함하고,
상기 MRAM 매크로는 각각,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트 라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트 라인; 및
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부(local input-output circuitry)
를 더 포함하고,
상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로;
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1 역수 회로;
상기 신드롬 s1^3 계산 회로의 출력부 및 상기 제2 신드롬 s3 생성기의 출력부에 결합되는 신드롬 비교기; 및
상기 신드롬 비교기의 출력부 및 상기 신드롬 s1 역수 회로의 출력부에 결합되는 GF 다중 계산 회로
를 포함하는 것인, 메모리 디바이스. - ECC 시스템에 있어서,
복수의 제1 ECC 회로로서, 상기 복수의 제1 ECC 회로 각각은 각각의 메모리 어레이에 통신가능하게 결합되도록 구성되고, 상기 각각의 메모리 어레이 내의 데이터 에러를 검출하도록 구성되는 것인, 상기 복수의 제1 ECC 회로; 및
제2 ECC 회로로서, 상기 복수의 제1 ECC 회로 각각에 통신가능하게 결합되고, 상기 복수의 제1 ECC 회로로부터 상기 검출된 데이터 에러를 수신하고, 상기 복수의 제1 ECC 회로로부터 수신된 상기 데이터 에러를 정정하도록 구성되는 것인, 상기 제2 ECC 회로를 포함하고,
상기 각각의 메모리 어레이는,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트라인; 및
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부
를 더 포함하고,
상기 제1 ECC 회로는,
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제1 신드롬 s1 생성기;
상기 제1 비트 라인 및 상기 제2 비트 라인에 결합되는 제2 신드롬 s3 생성기;
상기 로컬 입출력 회로부에 결합되는 EN 계산 회로;
상기 제1 신드롬 s1 생성기의 출력부에 결합되는 신드롬 s1^3 계산 회로; 및
상기 제1 신드롬 s1 생성기, 상기 제2 신드롬 s3 생성기, 상기 EN 계산 회로, 및 상기 신드롬 s1^3 계산 회로 각각의 출력부에 결합되는 에러 검사 회로
를 포함하는, ECC 시스템. - 방법에 있어서,
복수의 메모리 매크로를 제공하는 단계로서, 상기 복수의 메모리 매크로는 메모리 셀의 메모리 어레이 및 제1 ECC 회로를 각각 포함하는 것인, 상기 복수의 메모리 매크로를 제공하는 단계;
제2 ECC 회로를 제공하는 단계로서, 상기 제2 ECC 회로는 상기 복수의 메모리 매크로로부터 떨어져 있고 상기 복수의 메모리 매크로 각각에 통신가능하게 결합되는 것인, 상기 제2 ECC 회로를 제공하는 단계;
상기 메모리 어레이를 리프레싱(refreshing)하는 단계로서, 상기 제1 ECC 회로로 상기 메모리 어레이 내의 데이터 에러를 검사하는 단계를 포함하는, 상기 메모리 어레이를 리프레싱하는 단계;
상기 제1 ECC 회로에 의해 데이터 에러가 식별되면, 상기 식별된 데이터 에러를 상기 제2 ECC 회로에 포워딩(forwarding)하는 단계;
상기 제2 ECC 회로에 의해 상기 제1 ECC 회로로부터 수신된 상기 데이터 에러를 정정하는 단계; 및
상기 정정된 데이터를 상기 메모리 어레이에 기록하는 단계를 포함하고,
상기 메모리 매크로는 자기 랜덤 액세스 메모리(magnetic random access memory; MRAM) 매크로를 각각 포함하고,
상기 MRAM 매크로는 각각,
MRAM 비트 셀의 어레이로서, 각각의 MRAM 비트 셀이,
자기 터널 접합 엘리먼트;
상기 자기 터널 접합 엘리먼트에 결합되는 액세스 트랜지스터;
상기 액세스 트랜지스터에 결합되는 제1 비트라인;
상기 자기 터널 접합 엘리먼트에 결합되는 제2 비트라인; 및
상기 액세스 트랜지스터의 게이트에 결합되는 워드 라인을 포함하는 것인, 상기 MRAM 비트 셀의 어레이; 및
상기 MRAM 비트 셀의 제1 비트 라인 및 제2 비트 라인에 결합되는 로컬 입출력 회로부
를 더 포함하고,
상기 제1 ECC 회로로 상기 메모리 어레이 내의 데이터 에러를 검사하는 단계는,
상기 제1 비트라인 및 상기 제2 비트라인으로부터 수신되는 데이터에 기초하여 신드롬 s1을 생성하는 단계;
상기 제1 비트라인 및 상기 제2 비트라인으로부터 수신되는 데이터에 기초하여 신드롬 s3을 생성하는 단계;
상기 로컬 입출력 회로부로부터 수신되는 데이터에 기초하여 EN을 생성하는 단계;
상기 신드롬 s1에 기초하여 신드롬 s1^3을 생성하는 단계; 및
상기 신드롬 s1, 상기 신드롬 s3, 상기 EN 및 상기 신드롬 s1^3에 기초하여 에러를 검사하는 단계
를 포함하는, 방법.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862738177P | 2018-09-28 | 2018-09-28 | |
US62/738,177 | 2018-09-28 | ||
US16/535,787 | 2019-08-08 | ||
US16/535,787 US11204826B2 (en) | 2018-09-28 | 2019-08-08 | Memory error detection and correction |
KR1020190118085A KR20200037090A (ko) | 2018-09-28 | 2019-09-25 | 메모리 에러 검출 및 정정 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190118085A Division KR20200037090A (ko) | 2018-09-28 | 2019-09-25 | 메모리 에러 검출 및 정정 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210075930A true KR20210075930A (ko) | 2021-06-23 |
KR102303961B1 KR102303961B1 (ko) | 2021-09-27 |
Family
ID=69946930
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190118085A KR20200037090A (ko) | 2018-09-28 | 2019-09-25 | 메모리 에러 검출 및 정정 |
KR1020210076475A KR102303961B1 (ko) | 2018-09-28 | 2021-06-14 | 메모리 에러 검출 및 정정 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190118085A KR20200037090A (ko) | 2018-09-28 | 2019-09-25 | 메모리 에러 검출 및 정정 |
Country Status (3)
Country | Link |
---|---|
KR (2) | KR20200037090A (ko) |
CN (1) | CN110970081A (ko) |
TW (1) | TWI714277B (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11170870B1 (en) * | 2020-05-28 | 2021-11-09 | Western Digital Technologies, Inc. | On-chip-copy for integrated memory assembly |
US11438015B2 (en) * | 2020-07-10 | 2022-09-06 | Taiwan Semiconductor Manufacturing Company, Ltd. | Two-level error correcting code with sharing of check-bits |
CN112397133B (zh) * | 2020-12-11 | 2023-05-30 | 西安紫光国芯半导体有限公司 | 存储器、阵列单元模块及其存储方法、构建方法 |
CN113223603B (zh) * | 2021-05-31 | 2022-12-06 | 西安紫光国芯半导体有限公司 | 存储器刷新控制方法、装置、控制电路及存储器件 |
CN113791737B (zh) * | 2021-09-15 | 2024-02-02 | 北京航空航天大学 | 一种非易失性存储阵列的软错误检测方法及装置 |
KR20230069316A (ko) | 2021-11-11 | 2023-05-19 | 삼성디스플레이 주식회사 | 표시 장치 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120063329A (ko) * | 2010-12-07 | 2012-06-15 | 삼성전자주식회사 | 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템 |
KR20140005757A (ko) * | 2012-07-03 | 2014-01-15 | 삼성전자주식회사 | 선택적 ecc 동작을 수행하는 메모리 장치 |
US20170365361A1 (en) * | 2014-08-26 | 2017-12-21 | Samsung Electronics Co., Ltd. | Semiconductor memory devices, memory systems including the same and method of correcting errors in the same |
KR20180019818A (ko) * | 2016-08-17 | 2018-02-27 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006190425A (ja) * | 2005-01-07 | 2006-07-20 | Nec Electronics Corp | 半導体記憶装置 |
JP4564520B2 (ja) * | 2007-08-31 | 2010-10-20 | 株式会社東芝 | 半導体記憶装置およびその制御方法 |
US9235466B2 (en) * | 2012-07-03 | 2016-01-12 | Samsung Electronics Co., Ltd. | Memory devices with selective error correction code |
US8938656B2 (en) * | 2012-09-14 | 2015-01-20 | Sandisk Technologies Inc. | Data storage device with intermediate ECC stage |
US9484113B2 (en) * | 2014-04-15 | 2016-11-01 | Advanced Micro Devices, Inc. | Error-correction coding for hot-swapping semiconductor devices |
US9654144B2 (en) * | 2014-09-30 | 2017-05-16 | Micron Technology, Inc. | Progressive effort decoder architecture |
KR20170001777A (ko) * | 2015-06-25 | 2017-01-05 | 에스케이하이닉스 주식회사 | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10140175B2 (en) * | 2015-11-20 | 2018-11-27 | Qualcomm Incorporated | Protecting an ECC location when transmitting correction data across a memory link |
US10056921B2 (en) * | 2016-08-25 | 2018-08-21 | Taiwan Semiconductor Manufacturing Company Ltd. | Memory system having flexible ECC scheme and method of the same |
-
2019
- 2019-09-24 TW TW108134418A patent/TWI714277B/zh active
- 2019-09-25 KR KR1020190118085A patent/KR20200037090A/ko active Application Filing
- 2019-09-27 CN CN201910927012.1A patent/CN110970081A/zh active Pending
-
2021
- 2021-06-14 KR KR1020210076475A patent/KR102303961B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120063329A (ko) * | 2010-12-07 | 2012-06-15 | 삼성전자주식회사 | 에러 체크 및 정정기 및 그것을 포함하는 메모리 시스템 |
KR20140005757A (ko) * | 2012-07-03 | 2014-01-15 | 삼성전자주식회사 | 선택적 ecc 동작을 수행하는 메모리 장치 |
US20170365361A1 (en) * | 2014-08-26 | 2017-12-21 | Samsung Electronics Co., Ltd. | Semiconductor memory devices, memory systems including the same and method of correcting errors in the same |
KR20180019818A (ko) * | 2016-08-17 | 2018-02-27 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR102303961B1 (ko) | 2021-09-27 |
TW202018725A (zh) | 2020-05-16 |
TWI714277B (zh) | 2020-12-21 |
CN110970081A (zh) | 2020-04-07 |
KR20200037090A (ko) | 2020-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762732B2 (en) | Memory error detection and correction | |
KR102303961B1 (ko) | 메모리 에러 검출 및 정정 | |
US11740960B2 (en) | Detection and correction of data bit errors using error correction codes | |
US8281221B2 (en) | Operation method of MRAM including correcting data for single-bit error and multi-bit error | |
US7107507B2 (en) | Magnetoresistive solid-state storage device and data storage methods for use therewith | |
JP2005085464A (ja) | 誤り訂正符号化を有する磁気メモリ | |
US5251219A (en) | Error detection and correction circuit | |
US9141473B2 (en) | Parallel memory error detection and correction | |
JPH05241975A (ja) | エラー検出/訂正機構を有するデータ処理システム | |
US10498364B2 (en) | Error correction circuits and memory controllers including the same | |
US10270471B2 (en) | Memory system having ECC self-checking function and associated method | |
US20220368354A1 (en) | Two-level error correcting code with sharing of check-bits | |
US10056921B2 (en) | Memory system having flexible ECC scheme and method of the same | |
US20160139988A1 (en) | Memory unit | |
US11265022B2 (en) | Memory system and operating method thereof | |
US7904786B2 (en) | Assisted memory system | |
Kang et al. | One-step majority-logic-decodable codes enable STT-MRAM for high speed working memories | |
Penumutchi et al. | Low Redundancy Matrix Code with Efficient PPA | |
Kokkiligadda et al. | Efficient and Failure Aware ECC for STT-MRAM Cache Memory | |
WO2014054345A1 (ja) | 半導体装置 | |
Venkatesh et al. | Implementation of Modified Decimal Matrix Code for Single Upsets | |
Baoming | Error control coding for semiconductor memories |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |