KR20180052068A - Ddr 버스를 통해 dram 내의 ecc 정보를 전달하는 방법 - Google Patents

Ddr 버스를 통해 dram 내의 ecc 정보를 전달하는 방법 Download PDF

Info

Publication number
KR20180052068A
KR20180052068A KR1020170058205A KR20170058205A KR20180052068A KR 20180052068 A KR20180052068 A KR 20180052068A KR 1020170058205 A KR1020170058205 A KR 1020170058205A KR 20170058205 A KR20170058205 A KR 20170058205A KR 20180052068 A KR20180052068 A KR 20180052068A
Authority
KR
South Korea
Prior art keywords
data
contamination
error
buffer
pattern
Prior art date
Application number
KR1020170058205A
Other languages
English (en)
Other versions
KR102274593B1 (ko
Inventor
디민 니우
무-티엔 창
홍종 정
김현중
송원형
최장석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20180052068A publication Critical patent/KR20180052068A/ko
Application granted granted Critical
Publication of KR102274593B1 publication Critical patent/KR102274593B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Dram (AREA)

Abstract

데이터를 오염시킬 수 있는 데이터 칩이 개시된다. 데이터 칩은 데이터 어레이, 데이터 어레이로부터 미가공 데이터를 읽는 읽기 회로, 및 미가공 데이터를 저장하는 버퍼를 포함할 수 있다. 마스크 레지스터에 저장된 오염 패턴을 이용하여, 데이터 오염 엔진은 미가공 데이터를 오염시킬 수 있다. 그 다음에 전송 회로는 오염된 데이터를 전송한다.

Description

DDR 버스를 통해 DRAM 내의 ECC 정보를 전달하는 방법{A METHOD TO DELIVER IN-DRAM ECC INFORMATION THROUGH DDR BUS}
본 발명은 일반적으로 메모리에 관련된 것으로, 좀 더 구체적으로 메모리 모듈 내 데이터 칩들의 수 증가 없이 에러 정정 능력을 제공하는 것에 관한 것이다.
앞으로는, 메모리 모듈(memory module)들은 DRAM 내(in-dynamic random access memory) 에러 정정(error correction)을 요구할 수 있다. 좁은 채널들의 사용과 결합되어, 에러 정정을 위해 요구되는 오버헤드(overhead)가 증가할 수 있다. 예를 들어, 광대역 채널(wide channel)들로부터 협대역 채널(narrow channel)들로 전환하는 것은 에러 정정 오버 헤드를 두 배로 만들 수 있다. 메모리에 대한 신뢰성, 효용성, 및 내구성(reliability, availability, serviceability; RAS) 요구들을 충족시키는 것은 비싸질 수 있다. 그러나 에러 정정 능력(error correction capability)을 완전히 버리는 것은 메모리 모듈의 유용성(usability)을 감소시킬 수 있다.
에러 정정을 위한 오버헤드 요구들의 증가 없이 메모리 모듈 내 에러 정정 능력을 제공하기 위한 방안에 대한 필요성이 남아 있다.
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로, 본 발명은 DDR 버스를 통해 DRAM 내의 ECC 정보를 전달하는 방법을 제공할 수 있다.
본 발명의 실시 예에 따른 데이터 칩은, 데이터 어레이(data array), 상기 데이터 어레이로부터 미가공 데이터(raw data)를 읽는 읽기 회로, 상기 읽기 회로에 의해 상기 데이터 어레이로부터 상기 미가공 데이터를 저장하는 버퍼(buffer), 오염 패턴을 저장하는 마스크 레지스터(mask register), 오염된 데이터를 생성하기 위해 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 수정하는 데이터 오염 엔진(data pollution engine), 및 상기 버퍼로부터 상기 오염된 데이터를 전송하는 전송 회로를 포함하는 데이터 칩을 포함할 수 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러는, 상기 복수의 데이터 칩으로부터 수신된 원본 데이터로부터 패리티를 연산하는 패리티 회로, 에러를 갖는 데이터 칩을 식별하기 위해 상기 패리티와 상기 복수의 데이터 칩에 프로그램된 복수의 오염 패턴을 비교하는 오염 패턴 분석 회로, 및 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 수신된 상기 원본 데이터 내 상기 에러를 정정하는 에러 정정 회로를 포함할 수 있다.
본 발명의 실시 예에 따른 방법은, 데이터 칩에서 어드레스에 값에 대한 요청을 수신하는 단계, 상기 어드레스에 상기 값을 포함하는 미가공 데이터를 상기 데이터 칩의 버퍼에 저장(buffer)하는 단계, 상기 버퍼 내 상기 미가공 데이터가 에러를 갖는지 결정하는 단계, 및 상기 버퍼 내 상기 미가공 데이터가 에러를 갖는 경우, 오염된 데이터를 생성하기 위해 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계, 및 상기 버퍼 내 상기 오염된 데이터를 메모리 컨트롤러로 전송하는 단계를 포함할 수 있다.
본 발명의 실시 예들은 기본적인 신뢰성, 효용성, 및 내구성 보호를 제공하기 위해, DRAM 내의 ECC에 더해, 단지 하나의 ECC 칩을 사용할 수 있다.
도 1은 본 발명의 실시 예에 따라, 메모리 및 메모리 컨트롤러를 갖는 머신을 도시한다.
도 2는 도 1의 머신의 추가 세부 사항들을 도시한다.
도 3은 도 1의 메모리 내 메모리 칩의 세부 사항들을 도시한다.
도 4는 도 3의 XOR 회로의 예시적인 구현을 도시한다.
도 5는 도 3의 데이터 칩의 데이터가 어떻게 오염될 수 있는지 도시한다.
도 6은 오염 패턴들을 저장하는 도 3의 데이터 칩 내 마스크 레지스터를 도시한다.
도 7은 도 1의 메모리 컨트롤러의 세부 사항들을 도시한다.
도 8은 도 1의 메모리 내 데이터 칩들로부터의 데이터에 대한 패리티 연산을 수행하는 도 1의 메모리 컨트롤러를 도시한다.
도 9는 도 7의 오염 패턴 분석 회로의 동작을 도시한다.
도 10은 데이터 칩으로부터 수신된 데이터로부터 오염 패턴을 제거하는 도 1의 메모리 컨트롤러를 도시한다.
도 11은 데이터가 오염 패턴을 갖는 데이터 칩에 대한 데이터를 연산하는 도 7의 패리티 회로를 도시한다.
도 12a 및 도 12b는 본 발명의 실시 예에 따라, 데이터를 오염시키기 위해 도 1의 메모리 모듈 내 데이터 칩에 대한 예시적인 방법의 순서도를 도시한다.
도 13은 본 발명의 실시 예에 따라, 오염 패턴을 이용하여 프로그램 되는 도 1의 메모리 모듈의 데이터 칩에 대한 예시적인 방법의 순서도를 도시한다.
도 14는 본 발명의 실시 예에 따라, 도 1의 메모리 컨트롤러로 원본 데이터를 전송하기 위한 도 1의 메모리 모듈 내 데이터 칩에 대한 예시적인 방법의 순서도를 도시한다.
도 15a 및 도 15b는 본 발명의 실시 예에 따라, 도 1의 메모리 모듈 내 데이터 칩이 오염 패턴을 이용하여 데이터를 오염시키는 경우 에러 정정을 수행하는 도 1의 메모리 컨트롤러에 대한 예시적인 방법의 순서도를 도시한다.
도 16은 본 발명의 실시 예에 따라, 데이터를 오염시키기 위해 사용된 오염 패턴을 식별하기 위해 도 7의 오염 패턴 분석 회로에 대한 예시적인 방법의 순서도를 도시한다.
도 17은 본 발명의 실시 예에 따라, 도 1의 메모리 모듈 내 데이터 칩 내 에러를 정정하기 위한 도 7의 에러 정정 회로에 대한 예시적인 방법의 순서도를 도시한다.
도 18은 본 발명의 실시 예에 따라, 도 1의 메모리 모듈 내 데이터 칩으로부터 원본 데이터를 요청하기 위한 도 1의 메모리 컨트롤러에 대한 예시적인 방법의 순서도를 도시한다.
본 발명의 기술적 사상의 실시 예들이 참조되며, 이들의 예들이 첨부된 도면들에 도시된다. 후술되는 상세한 설명에서, 다양한 특정한 상세들이 본 발명의 기술적 사상의 충분한 이해를 돕기 위하여 제공된다. 그러나 이 분야에 통상적인 기술을 가진 자들은 이러한 특정한 상세들 없이도 본 발명의 기술적 사상을 구현할 수 있다. 다른 예들로서, 잘 알려진 방법들, 절차들, 구성 요소들, 회로들, 그리고 네트워크들은 실시 예들의 측면들을 불필요하게 모호하게 하지 않기 위해 상세하게 설명되지 않는다.
여기에서 제 1, 제 2 등과 같은 용어들이 다양한 원소들을 설명하기 위하여 사용되지만, 이러한 원소들은 이러한 용어들에 의해 한정되지 않는다. 이러한 용어들은 하나의 원소를 다른 하나의 원소와 구별하기 위해서만 사용된다. 예를 들어, 본 발명의 기술적 사상의 범위로부터 멀어지지 않으면서 제 1 모듈은 제 2 모듈로 명명될 수 있다. 마찬가지로, 제 2 모듈은 제 1 모듈로 명명될 수 있다.
본 발명의 기술적 사상의 설명에서 사용되는 용어들은 특정한 실시 예들을 설명하기 위한 목적으로만 사용되며, 본 발명의 기술적 사상을 한정하는 것으로 의도되지 않는다. 본 발명의 기술적 사상의 설명 및 첨부된 청구항들에서 사용되는 바와 같이, 맥락에서 명확하게 명시되지 않으면 단수 표현들은 복수 표현들 또한 포함하는 것으로 의도된다. "그리고/또는"의 용어는 하나 또는 그보다 많은 연관된 항목들의 임의의 그리고 가능한 모든 조합들을 포함하는 것으로 참조된다. "포함한다" 그리고/또는 "포함하는"의 용어들은 상세한 설명에서 사용된 때에 언급된 특성들, 정수들, 단계들, 동작들, 원소들, 그리고/또는 구성 요소들의 존재를 명시하며, 하나 또는 그보다 많은 다른 특성들, 정수들, 단계들, 동작들, 원소들, 구성 요소들, 그리고/또는 그것들의 그룹들의 존재 또는 추가를 배제하지 않는다. 도면들의 구성 요소들 및 특성들은 실제 비율에 필수적으로 비례하지 않는다.
본 발명의 실시 예들은 DRAM 모듈(dynamic random access memory module)들의 에러 정정 코드(error correction code; ECC) 오버헤드(overhead)들을 감소시킬 수 있다. 본 발명의 실시 예들은 현재의 DDR(dual date rate)-4 64 비트(bit)들 채널들 및 차세대 협대역 DDR 채널들(32 비트들)에 사용될 수 있다. 본 발명의 실시 예들은 x4(4 비트 데이터 폭 DRAM), x8, x16 또는 임의의 다른 버스트 사이즈(burst size)를 포함하는 임의의 DRAM 유형을 지원할 수 있다. 본 발명의 실시 예들은 또한 메모리 처리(transaction) 동안, 8 버스트(메모리 처리마다 데이터 칩 당 8개 버스트들), 16 버스트, 또는 메모리 처리마다 버스트들의 임의의 다른 수를 포함하는, 버스트들 임의의 수를 지원할 수 있는 메모리 모듈들을 지원할 수 있다.
차세대 DRAM 장치들은 증가하는 처리량을 유지하기 위해 협대역 채널(64 비트들이 아닌, 32 비트들)을 사용할 수 있다. 내부 프리패치(internal prefetch, 16n vs. 8n) 및 외부 버스트 랭스(external burst length, 16n vs. 8n)도 이에 상응하여 증가할 수 있다.
그러나 이러한 변경들은 현재의 DRAM DIMM(dual in line module) 장치들과 유사한 오버헤드로 현재의 신뢰성, 효용성, 및 내구성(reliability, availability, serviceability; RAS) 특성들을 유지하기 어려워지게 한다. 예를 들어, 현재의 DDR-4 ECC(error correcting code) DRAM DIMM들은 각 채널에 대해서 16개 데이터 칩들 및 2개 ECC 칩들을 사용한다. 동일한 ECC 범위(coverage)를 유지하기 위해, 차세대 협대역 DRAM 채널은 단지 8개 데이터 칩들을 보호하기 위해 2개 ECC 칩들을 요구할 수 있다: 16개 데이터 칩들을 보호하기 위해 단지 2개 ECC 칩들을 계속 사용하는 것은 격하된(downgraded) ECC 범위를 야기할 수 있다.
뿐만 아니라, 차세대 DRAM 장치들은 DRAM 장치들에 대한 BER(bit error rate)을 낮추기 위해 DRAM 내의 ECC(in-DRAM ECC)를 사용할 수 있다. DRAM 장치로부터 메모리 컨트롤러(memory controller)로 DRAM 내의 ECC 정보를 전달하기 위해, 전용의(dedicated) 또는 공유된(shared) 핀(들)이 요구된다. 대신에, DRAM 내의 ECC 정보를 전달하기 위한 방법 및 메커니즘(mechanism)은 DRAM 장치들에서 에러가 감지되면 추가 에러들을 주입(inject)하는 것에 의해 구현될 수 있다. 즉, 메모리 컨트롤러는 부팅(boot-up) 동안 동일한 채널 내 DRAM 칩들을 상이한 오염 패턴(pollution pattern)들을 이용하여 프로그램(program)할 수 있다. 동일한 채널 내 상이한 DRAM 칩들은 상이한 오염 패턴들을 가져야 한다. 오염 패턴 선택은 상이한 칩 세트(set) 공급자들에 따라 상이할 수 있다. 오염 패턴 선택은 상이한 에러 범위를 야기할 수 있다.
본 발명의 실시 예들은 기본적인 신뢰성, 효용성, 및 내구성(RAS) 보호를 제공하기 위해, DRAM 내의 ECC에 더해, 단지 하나의 ECC 칩을 사용할 수 있다. 예를 들면:
● x4 칩들을 사용하는 DDR-4 64 비트 채널에서, 메모리 모듈은 16개 x4 데이터 칩들에 더해 1개 ECC 칩을 포함할 수 있다. 본 발명의 이러한 실시 예는 현재 에러 정정(16개 데이터 칩들과 2개 ECC 칩들을 사용)의 오버헤드의 절반 수준으로 에러 정정을 제공할 수 있다.
● x8 칩들을 사용하는 DDR-4 64 비트 채널에서, 메모리 모듈은 8개 x8 데이터 칩들과 1개 ECC 칩을 포함할 수 있다. 본 발명의 이러한 실시 예는 현재 DDR-4 x8은 지원하지 않는 기본 칩킬(chip kill, 1개 데이터 칩 고장)을 제공할 수 있다.
● x16 칩들을 사용하는 DDR-4 64 비트 채널에서, 메모리 모듈은 4개 x16 데이터 칩들과 1개의 ECC 칩을 포함할 수 있다. 본 발명의 이러한 실시 예는 현재 DDR-4 x16은 지원하지 않는 기본 칩킬(1개 데이터 칩 고장)을 제공할 수 있다.
● x4 메모리 모듈들의 차세대 32 비트 채널에 대해, 메모리 모듈은 8개 x4 데이터 칩들과 1개 ECC 칩을 포함할 수 있다. 본 발명의 이러한 실시 예는 현재 에러 정정 오버헤드의 절반 수준으로 에러 정정을 제공할 수 있다.
● 일반적으로, 채널당 N 비트들의 차세대 메모리 모듈, 및 x(4M)의 데이터 칩들에 대해, 메모리 모듈은 N/(4M) 개 x(4M) 데이터 칩들과 1개 x(M) ECC 칩을 포함할 수 있다(여기서, M 및 N 각각은 양의 정수이다.).
DRAM 내의 ECC 메커니즘(mechanism)이 내부적으로 정정할 수 없는 에러(uncorrectable error)를 감지하면, DRAM은 이 저장된 패턴들을 이용하여 데이터를 오염시킨다. 데이터 오염은 내부적으로 정정할 수 없는 에러가 발생하면 오염 패턴을 이용하여 칩의 데이터를 XOR(배타적 논리합, exclusive or)하여 달성될 수 있다.
오염 패턴은 큰 단위 세분성(coarse granularity) 또는 작은 단위 세분성(fine granularity) 중 어느 하나를 이용할 수 있다. 작은 단위 세분성을 이용하여, 각 패턴은 비트 대 비트 맵핑(bit-to-bit mapping)에서 64 비트들을 갖는다. 이것은 좀 더 유연한 정보 전달을 가능하게 하지만, 마스크 레지스터(mask register) 내에 더 많은 비트들(스토리지(storage) 오버헤드)을 요구하고, 덜 안정적이다. 큰 단위 세분성에서, 각 칩에는 반복적이고, 사전에 정의된 패턴이 주어진다. 이것은 오염 패턴들이 고정되고 유연하지 않은 것을 의미하지만, 마스크 레지스터 내에 더 적은 비트들(스토리지 오버헤드)을 요구하고, 더 안정적이다.
오염 패턴은 임의의 원하는 사이즈일 수 있다. (비록 메모리 컨트롤러가 어떤 데이터 칩이 오염 패턴을 적용했는지 결정할 수 있기만 하면 어떤 오염 패턴 사이즈가 사용될 수 있어도) 권장되는 최소 오염 패턴 사이즈는 1개 버스트의 사이즈이다. 따라서, 본 발명의 실시 예들은 x4 데이터 칩들과 함께 4 비트 오염 패턴들, x8 데이터 칩들과 함께 8비트 오염 패턴들, x16 데이터 칩들과 함께 16비트 오염 패턴들, 등을 사용할 수 있다. 오염 패턴은, 예를 들어, 32 비트들(x4 데이터 칩들의 8개 버스트)부터 256 비트들(x16 데이터 칩들의 16개 버스트)까지, 또는 심지어 더 크게 변할 수 있는, 메모리 처리(memory transaction)만큼(1개 버스트 내 비트들 수에 메모리 처리 내 버스트들의 수를 곱한 값) 클 수 있다.
추가로, 오염 패턴은 1개 메모리 처리보다 더 클 수 있다. 그러나 오염 패턴이 1개 메모리 처리보다 크면, 오염 패턴을 감지하는 것은 연속적으로 발생하는 2개 이상의 메모리 처리를 요구하고, 이는 성능 면에서 비효율적일 수 있다.
메모리 컨트롤러가 에러를 감지할 수 있다고 가정하면, 메모리 컨트롤러는 오염 패턴들을 이용하여 에러 위치(에러를 갖는 칩)를 식별할 수 있다. 그 다음에 메모리 컨트롤러는 에러를 정정하기 위해 칩들에 걸쳐 패리티(parity)를 사용할 수 있다.
도 1은 본 발명의 실시 예에 따라, 메모리 및 메모리 컨트롤러를 갖는 머신을 도시한다. 도 1에서, 머신(105, machine)이 도시되었다. 머신(105)은 제한 없이 데스크톱(desktop) 또는 노트북 컴퓨터(laptop computer), 서버(server, 독립 실행형 서버(standalone server) 또는 랙 서버(rack server) 중 어느 하나), 또는 본 발명의 실시 예들로부터 이익을 얻을 수 있는 임의의 다른 장치를 포함하는 임의의 원하는 장치일 수 있다. 머신(105)은 또한 특정 휴대용 컴퓨팅(computing) 장치들, 태블릿 컴퓨터(tablet computer)들, 및 심지어 스마트 폰(smartphone)들과 같은 장치들을 포함할 수 있다. 그리고 본 발명의 설명된 실시 예들이 DRAM 모듈들을 나타내는데 반하여, 본 발명의 실시 예들은 내부적으로 다중 칩들(칩들 각각은 잠재적으로 별개 고장 원인일 수 있다.)에 걸쳐 정보를 저장하는 메모리의 임의의 형태에도 적용될 수 있다.
머신의 특정 형태와 관계 없이, 머신(105)은 프로세서(processor, 110), 메모리(115), 저장 장치(storage device, 120), 및 메모리 컨트롤러(125)를 포함할 수 있다. 프로세서(110)는 임의의 다양한 프로세서일 수 있다: 예를 들면, 인텔(intel)의 엑스온(xeon), 셀러론(celeron), 아이타니엄(itanium), 또는 아톰(atom) 프로세서, AMD 옵테론(opteron) 프로세서, 암(arm) 프로세서, 등. 도 1은 하나의 프로세서를 도시하는 반면에, 머신(105)은 임의의 수의 프로세서들을 포함할 수 있다. 메모리(115)는 본 발명의 실시 예들이 적용될 수 있는 플래시(flash) 메모리, SRAM(static random access memory), 영구 RAM(persistent random access memory), FRAM(ferroelectric random access memory), 또는 MRAM(magnetoresistive random access memory) 등과 같은 불휘발성 RAM(non-volatile random access memory; NVRAM)과 같은 임의의 다양한 메모리일 수 있으나, 그러나 일반적으로 DRAM이다. 메모리(115)는 상이한 메모리 유형들의 임의의 원하는 조합일 수 있다.
저장 장치(120)는 임의의 다양한 저장 장치일 수 있다. 이러한 장치들의 예시들은 솔리드 스테이트 드라이브(solid state drive; SSD)들을 포함할 수 있으나, 하드 디스크(hard disk) 드라이버들 또는 다른 장기(long-term) 저장 장치들과 같은 다른 저장 장치 형태들도 가능하다. 뿐만 아니라, 메모리(115) 및 저장 장치(120)는 조합될 수 있다: 즉, 본 발명의 실시 예들은 단기(short-term) 및 장기 저장 장치의 개념들을 구별하지 않고, 하나의 형태 요인(form factor)으로 모두를 관리한다. 최종적으로, 메모리 컨트롤러(125)는 적절하게 메모리(115) 내의 정보를 요청하여(그리고 저장하여), 프로세서(110) 및 메모리(115) 사이의 통신을 관리할 수 있다. 메모리 컨트롤러(125)는 프로세서(110)와 함께 집적될 수 있거나 분리된 칩에 집적될 수 있다.
도 2는 도 1의 머신의 추가 세부 사항들을 도시한다. 도 2를 참조하면, 일반적으로, 머신(105)은 머신(105)의 구성 요소들의 동작들을 조정하는데 사용될 수 있는, 메모리 컨트롤러(125) 및 클럭(clock, 205)을 포함할 수 있는, 하나 이상의 프로세서들(110)을 포함한다. 프로세서들(110)은 또한 예시들로써, RAM(random access memory), ROM(read-only memory), 또는 다른 상태 보존 매체를 포함할 수 있는, 메모리(115)에 연결될 수 있다. 프로세서들(110)은 또한 저장 장치들(120), 그리고 예를 들면, 이더넷 커넥터(Ethernet connector) 또는 무선 커넥터(wireless connector)일 수 있는, 네트워크 커넥터(network connector, 210)와 연결될 수 있다. 프로세서들(110)은 또한, 유저 인터페이스(user interface, 220) 및 다른 구성 요소들 중, 입출력 엔진(input/output engine, 225)을 이용하여 관리될 수 있는 입출력 인터페이스 포트(input/output interface port)들이 부착된 버스(215)와 연결될 수 있다.
도 3은 도 1의 메모리(115) 내 메모리 칩의 세부 사항들을 도시한다. 도 3에서, (메모리(115) 내 복수의 칩 중 하나일 수 있는) 데이터 칩(305)은 DRAM 어레이(array, 310), 읽기 회로(read circuitry, 315), 버퍼(buffer, 320), ECC 엔진(error correcting code engine, 325), 데이터 오염 엔진(data pollution engine, 330), 마스크 레지스터(335), 디멀티플렉서(demultiplexer, 340), 및 전송 회로(transmission circuitry, 345, 도 3에서는 DQ TX)를 포함할 수 있다. DRAM 어레이(310)는 데이터 칩(305) 내에 데이터를 저장할 수 있다. 읽기 회로(315)는 DRAM 어레이(310)로부터 데이터를 읽을 수 있다. 예를 들어, 읽기 회로(315)는 DRAM 어레이(310)로부터 값들을 읽는 센스 앰프(sense amplifier)들을 포함할 수 있다. 데이터 칩(305)이 처리를 일부 수행하는 동안, 버퍼(320)는 읽기 회로(315)에 의해 DRAM 어레이(310)로부터 읽은 데이터를 임시로 저장할 수 있다. ECC 엔진(325)은 가능하면, 버퍼(320) 내 데이터에 대한 에러 정정 수행을 시도할 수 있다. ECC 엔진(325)은 데이터 오염 엔진(330)이 동작할 필요가 있는지 없는지를 알도록 하기 위해, 자신의 동작 결과들을 데이터 오염 엔진(330)에 제공할 수 있다.
데이터 오염 엔진(330)은 필요하면 버퍼(320)로부터의 데이터를 오염시킬 수 있다. 도 5를 참조하여 후술되는 바와 같이, 오염(pollution)은 오염 패턴(pollution pattern)에 기초하여 버퍼(320) 내 데이터를 수정하는 것을 포함한다. 데이터 오염은 버퍼(320) 내의 데이터와 오염 패턴을 XOR하여 수행될 수 있다: 예를 들어, XOR 회로(350)를 이용한다. 그렇지 않으면, 데이터 오염은 에러가 실제로 무엇인지 관계 없이, 버퍼(320) 내 데이터를 오염 패턴으로 간단하게 대체하여 수행될 수 있다. 만약 버퍼(320) 내 데이터가 정확하게 오염 패턴과 일치하면, 이 사실은 시스템이 잘못된 고장 에러를 “감지”하는 것을 야기할 수 있으나, (바라건대) 시스템은 이러한 상황으로부터 회복할 수 있다. 오염 패턴은 마스크 레지스터(335)로부터 접근될 수 있다. 데이터 오염 엔진(330)은, 본 명세서에서 설명된 임의의 다른 엔진 또는 회로와 마찬가지로, 임의의 원하는 방식으로 구현될 수 있다. 예를 들어, 엔진들 및 회로는 원하는 기능을 구현하는 커스텀(custom) 회로를 이용하여 구현될 수 있거나, 또는 FPGA(field programmable gate array)와 같은 어레이 또는 이와 동등한 기술을 이용하여 구현될 수 있다.
메모리 컨트롤러(125)가 버퍼(320)로부터 미가공(raw, 오염되지 않은(unpolluted)) 데이터를 원하는 상황들이 있을 수 있으므로, 메모리 컨트롤러(125)는 메모리 컨트롤러 비활성화 신호(memory controller disable signal; MC Disable, 355)를 데이터 오염 엔진(330)으로 보낼 수 있다. 따라서, 데이터 오염 엔진(330)은 메모리 컨트롤러(125)가 메모리 컨트롤러 비활성화 신호(355)를 보내지 않는 한, ECC 엔진(325)이 정정할 수 없는 에러가 있다는 것을 나타내면 데이터를 오염시키기 위해 동작할 수 있다.
그 다음에 데이터 오염 엔진(330)의 출력은 메모리 컨트롤러(125)로 출력되는 적절한 데이터를 선택할 수 있는 디멀티플렉서(340)로 보내질 수 있다. 그 다음에 전송 회로(345)는 선택된 데이터를 메모리 컨트롤러(125)로 보내기 위해 사용될 수 있다.
도 4는 도 3의 XOR 회로(350)의 예시적인 구현을 도시한다. 도 4에서, XOR 회로(350)는, (신호 스플리터(splitter), 신호 반전(negation), 및 멀티플렉서(multiplexer)를 이용하여) 비트의 원래의 입력 값 또는 그것의 반전 값이 선택되는지를 제어할 수 있는, 로직들(405, 410)을 포함할 수 있다. 로직들(405, 410)은 선택할 값을 결정하기 위해 제어 로직 비트들(control logic bits)을 사용할 수 있다.
일반적으로, 제어 로직은 도 3의 ECC 엔진(325)이 에러를 정정할 수 없고 그리고 도 1의 메모리 컨트롤러(125)가 도 3의 메모리 컨트롤러 비활성화 신호(355)를 보내지 않는 한, 비트에 대한 원래의 값을 선택할 것이다. 따라서, 논리 방정식의 관점에서, 제어 로직(CL)은 [도 3의 마스크 레지스터(335)의 오염 패턴(PP) AND (도 3의 메모리 컨트롤러 비활성화 신호(355)가 보내지지 않고(not)) AND 도 3의 ECC 엔진(325)] 방정식의 결과로써 생각될 수 있다. 오염 패턴, 도 3의 메모리 컨트롤러 비활성화 신호(355), 및 도 3의 ECC 엔진(325)에 대해 상이한 값들이 주어질 때, 표(415)는 제어 로직이 취할 수 있는 값들을 도시한다. 그러나 표(415)는 단지 예시적인 것이고, 다른 입력들이 주어지면 제어 로직은 다른 논리 방정식들을 이용하여 특정될 수 있다.
도 5는 도 3의 데이터 칩(305) 내의 데이터가 어떻게 오염될 수 있는지 도시한다. 도 5에서, 도 3의 버퍼(320)에 저장된 값들이 32 비트들을 포함하는 것으로 도시되었다(도 3의 버퍼(320)의 폭은 임의의 폭일 수 있지만, 32 비트들은 단지 예시적이다.). 실제로는 도 3의 버퍼(320)는 1차원일 수 있지만, 표현의 간결함을 위해, 도 5는 2차원에 배열된 데이터를 도시한다. 미가공 데이터(505)는 오염 패턴(510)과 XOR될 수 있고, 그리고 이것은 오염된 데이터(515)를 생성한다. 오염된 데이터(515)의 각 비트는 미가공 데이터(505) 및 오염 패턴(510)의 해당 비트들의 XOR임을 유의한다. 그러나 도 5가 오염 패턴(510)을 이용하여 미가공 데이터(505)를 XOR하는 것을 도시하는 반면에, 본 발명의 실시 예들은 미가공 데이터(505)를 오염시키기 위한 임의의 원하는 접근을 지원할 수 있다.
도 6은 오염 패턴들을 저장하는 도 3의 데이터 칩(305) 내 도 3의 마스크 레지스터(335)를 도시한다. 도 6에서, 마스크 레지스터(335)는 오염 패턴(510)과 같은 오염 패턴들을 포함할 수 있다. 본 발명의 몇몇의 실시 예들에 있어서, 도 1의 메모리 컨트롤러(125)는 부팅 시 오염 패턴(510)을 마스크 레지스터(335)로 프로그램할 수 있다. 전술한대로, (적어도 동일한 데이터 채널 내에서) 도 3의 각 데이터 칩(305)을 상이한 오염 패턴으로 프로그램하여, 그 다음에 도 1의 메모리 컨트롤러(125)는 도 3의 어느 데이터 칩(305)이 칩 내의 ECC를 이용하여 정정될 수 없는 에러를 갖는 데이터 칩인지 결정하는 시도를 할 수 있다.
그렇지 않으면, 본 발명의 다른 실시 예들에서, 도 3의 데이터 칩(305)은 (예를 들면, 제조사에 의해) 다양한 오염 패턴들로 사전에 프로그램될 수 있다. 예를 들어, 마스크 레지스터(335)는 상술한 패턴들 중에서도, 오염 패턴들(605, 610, 615, 620, 625, 630)로 사전에 프로그램될 수 있다. 도 6이 6개 사전에 프로그램된 오염 패턴들을 도시하는 반면에, 일반적으로 사전에 프로그램된 오염 패턴들의 수는 최소한 메모리 모듈 내 데이터 칩들의 수만큼일 것이다(하지만 동일한 데이터 채널 내 각 데이터 칩에 고유한 오염 패턴이 할당될 수 있으면 더 적은 오염 패턴들이 사전에 프로그램될 수 있다.). 그 다음에 도 1의 메모리 컨트롤러(125)는 사전에 프로그램된 오염 패턴들(605, 610, 615, 620, 625, 630)로부터 사용하기 위해 데이터 칩에 대한 오염 패턴을 선택할 수 있다.
각 사전에 프로그램된 오염 패턴은 식별자(identifier)가 할당될 수 있다. 예를 들어, 사전에 프로그램된 오염 패턴(605)은 식별자(635)가 할당될 수 있고, 사전에 프로그램된 오염 패턴(610)은 식별자(640)가 할당될 수 있고, 그리고 식별자들(645, 650, 655, 660)도 마찬가지이다. 그 다음에 도 1의 메모리 컨트롤러(125)는 간편하게 사용하기 위해 선택된 사전에 프로그램된 오염 패턴의 식별자를 도 3의 데이터 칩(305)에 전달하여 사전에 프로그램된 오염 패턴을 식별할 수 있다.
도 6에서, 오염 패턴(510)은 32 비트들의 길이이고, 반면에 오염 패턴들(605 내지 630)은 4 비트들의 길이이다. 본 발명의 몇몇의 실시 예들에 있어서, 도 3의 버퍼(320)와 동일한 폭을 갖는 (오염 패턴(510)과 같은) 오염 패턴들이 사용될 수 있으나, 반면에 본 발명의 다른 실시 예들에서 도 3의 버퍼(320)보다 적은 폭들을 갖는 (오염 패턴(605)과 같은) 오염 패턴들이 도 3의 버퍼(320) 전체를 커버(cover)하는 오염 패턴을 설정하기 위해 필요한 만큼 반복되는 패턴으로, 사용될 수 있다. 작은 단위 세분성(전폭(full-width))의 오염 패턴을 사용하는 장점은 오염 패턴을 설정 및 사용하는데 있어서 증가된 유연성이다; 작은 단위 세분성의 오염 패턴의 단점은 도 3의 마스크 레지스터(335)가 더 정보를 저장할 필요가 있다는 것과, 오염 패턴이 잠재적으로 덜 안정적이라는 것이다. 큰 단위 세분성(좁은 폭(narrow-width))의 오염 패턴의 장점은 그것이 도 3의 버퍼(320)만큼 넓지 않다는 것이고 그러므로 도 3의 마스크 레지스터(335) 내 더 적은 비트들을 요구한다는 것이다; 큰 단위 세분성의 오염 패턴들은 또한 더 안정적이다. 큰 단위 세분성의 오염 패턴의 단점은 오염 패턴이 덜 유연하고 가능한 오염 패턴들의 수가 제한된다는 것이다.
참고로, 이상적으로, 메모리 모듈에서 사용되는 오염 패턴들의 임의의 쌍의 공통 비트들의 수는 오염 패턴 내 비트들 수의 절반 이하여야 한다. 예를 들어, 두 오염 패턴들이 1개 비트 값을 제외하고 동일하면, 그 비트에 영향을 미치는 에러는 도 1의 메모리 컨트롤러(125)가 어느 데이터 칩이 에러를 갖는지 결정할 수 없게 할 수 있다. 오염 패턴들간 다른 비트들 수의 증가는 도 1의 메모리 컨트롤러(125)가 어느 데이터 칩이 에러를 갖는지 식별할 수 있는 가능성을 증가시킨다. 따라서, 오염 패턴들(605, 610, 615, 620, 625, 630) 중 임의의 쌍에 대한, 4 비트들 중 단지 2 비트들만 동일하고, 오염 패턴들을 가능한 멀리 유지한다.
도 7은 도 1의 메모리 컨트롤러(125)의 세부 사항들을 도시한다. 도 7에서, 메모리 컨트롤러(125)가 오염 패턴 프로그래밍 회로(pollution pattern programming circuitry, 705), 읽기 회로(710), 패리티 회로(parity circuitry, 715), 오염 패턴 결정 회로(pollution pattern determination circuitry, 720), 오염 패턴 분석 회로(pollution pattern analysis circuitry, 725), 에러 정정 로직(error correction logic, 730), 및 로그(log, 735)를 포함하는 것으로 도시되었다. 오염 패턴 프로그래밍 회로(705)는 오염 패턴을 이용하여, 도 1의 메모리 모듈(115)의, 도 3의 데이터 칩(305)과 같은, 데이터 칩을 프로그램할 수 있다. 도 6을 참조하여 전술한대로, 오염 패턴 프로그래밍 회로(705)는 (작은 단위 세분성 또는 큰 단위 세분성 중 어느 하나의) 특정 오염 패턴을 도 3의 데이터 칩(305)으로 프로그램할 수 있거나, 또는 오염 패턴 프로그래밍 회로(705)는 사용하기 위한 도 3에 데이터 칩(305)에 대한 (다시, 작은 단위 세분성 또는 큰 단위 세분성 중 어느 하나의) 사전에 프로그램된 오염 패턴을 식별할 수 있다. 오염 패턴 프로그래밍 회로(705)는 머신이 다시 부팅될 때까지 도 3의 데이터 칩(305) 내에 변하지 않고 남아있는 프로그램된 오염 패턴으로, 머신의 부팅에서 일반적으로 사용되지만, 본 발명의 실시 예들은 언제라도 프로그램된 오염 패턴들을 변경하는 것을 지원할 수 있다.
본 발명의 다른 실시 예들에 있어서, 도 3의 데이터 칩들(305)은 오염 패턴들로 도 1의 메모리 모듈(115)의 제조사에 의해 프로그램될 수 있다. 본 발명의 이러한 실시 예에 있어서, 특정 채널 내의 각 데이터 칩은 고유의 오염 패턴을 갖는 것으로 가정한다. (상이한 채널들 내의 데이터 칩들은 그들의 채널로 구별될 수 있고, 따라서 상이한 채널들에서의 데이터 칩들은 동일한 오염 패턴을 가질 수 있다.) 그런 상태로, 오염된 데이터가 감지된 때, 에러를 갖는 특정 칩은 (바라건대) 식별될 수 있다.
일반 동작들 동안, 읽기 회로(710)는 도 1의 메모리 모듈(115)로부터 데이터를 읽기 위해 요청들을 보낼 수 있고, 그 다음에 데이터는 메모리 컨트롤러(125)에 의해 수신될 수 있다. 그 다음에 패리티 회로(715)는 데이터 칩들로부터 수신된 데이터에 대해 패리티 연산(parity calculation)을 수행할 수 있다. 데이터 칩들로부터 데이터를 읽는 중에 에러들이 없으면, (또는 임의의 에러들이 내부적으로 데이터 칩들에서 성공적으로 정정되었으면), 그 다음에 패리티 회로(715)의 결과는 수신된 데이터 내에 패리티 에러들이 없다는 것을 나타내야 하고, 메모리 컨트롤러(125)는 호스트 또는 데이터를 요청한 다른 엔티티(entity)에 데이터를 보낼 수 있다.
그러나 패리티 회로(715)의 결과가 패리티 에러가 있는 것으로 나타내면, 그 다음에 메모리 컨트롤러(125)는 에러를 정정하기 위한 시도를 할 수 있다. 오염 패턴 분석 회로(725)는 일치하는 것(또는 근접하게 일치하는 것)이 발견될 수 있는지 확인하기 위해 패리티 회로(715)의 결과와 도 3의 데이터 칩들(305)에 프로그램된 오염 패턴들을 비교할 수 있다. 일치하는 것(또는 근접하게 일치하는 것)이 발견될 수 있으면, 그 다음에 에러 정정 회로(730)는 도 1의 메모리 모듈(115) 내 도 3의 모든 데이터 칩들(305)에 걸친 정보를 이용하여 에러를 정정하는 시도를 할 수 있다. 임의의 이유로 에러가 정정될 수 없으면, 로그(735)는 에러에 대한 정보를 저장할 수 있다.
도 8은 도 1의 메모리(115) 내 도 3의 데이터 칩들(305)로부터의 데이터에 대한 패리티 연산을 수행하는 도 3의 메모리 컨트롤러(125)를 도시한다. 도 8에서, 원본 데이터(805, 810, 815, 등)부터 원본 데이터(820)까지는 도 1의 메모리 모듈(115) 내 다양한 데이터 칩들로부터의 데이터를 나타낼 수 있다. 도 8에서, 총 9개 데이터 칩들의 데이터가 도시되었으나, 본 발명의 실시 예들은 임의의 수의 데이터 칩들로부터의 데이터를 지원할 수 있다. 도 3의 하나 이상의 데이터 칩들(305)은 칩 내부의 ECC의 결과일 수 있음을 유의해야 한다: 원본 데이터(805, 810, 815, 820)는 엄격하게 실제 데이터를 저장하는 칩들로부터일 필요는 없다.
패리티(825)는 원본 데이터(805, 810, 815, 820)의 패리티 연산 결과이다. 패리티(825)는 임의의 원하는 방식으로 연산될 수 있다: 도 8에서, 패리티(825)는 원본 데이터(805, 810, 815, 820)의 XOR로써 연산된다. 패리티(825)가 모두 0이면, 그 다음에 도 1의 메모리 컨트롤러(125)는 도 3의 데이터 칩들(305)의 어디에도 에러가 없는 것으로 결론을 내릴 수 있다. 그러나 패리티(825)가 (패리티 에러를 나타내는) 어떤 1을 가지면, 그 다음에 그 결과는 에러를 갖는 적어도 하나의 도 3의 데이터 칩이 있는 것을 나타낸다. 데이터 칩들의 하나 또는 데이터 칩들의 하나 이상이 정정될 수 없는 에러를 가질 수도 있으므로, 그것/그것들 칩(들)의 데이터는 데이터 칩(들)에 연관된 오염 패턴(들)에 의해 오염될 것이다.
전술한 설명은 에러가 없을 때 패리티(825)가 모두 0을 포함하는 것으로 가정한다. 다른 원리에 따라 패리티(825)가 연산되면(예를 들어, 모든 1은 에러가 없음을 표시), 그 다음에 설명은 패리티(825)를 연산하는 방법에 맞게 적절하게 조정될 것이다.
패리티(825)가 도 3의 1개의 데이터 칩(305)이 에러를 갖는 것을 나타낸다고 가정하면, 도 1의 메모리 컨트롤러(125)는 어느 데이터 칩이 에러를 갖는지 결정할 필요가 있다. 도 7의 오염 패턴 분석 회로(725)는 이 분석을 수행한다. 오염 패턴 분석 회로(725)의 동작은 도 9에서 도시된다.
도 9에서 도시된 대로, 오염 패턴 분석 회로(725)는 오염 패턴들(605, 610, 615, 620, 625, 630)와 함께, 패리티(825)를 수신할 수 있다. 도 9는 6개 오염 패턴들을 도시하지만, 본 발명의 실시 예들은 임의의 수의 오염 패턴들을 지원할 수 있다. 오염 패턴 분석 회로(725)는 패리티(825)와 오염 패턴들(605, 610, 615, 620, 625, 630) 각각을 비교할 수 있고, 패리티(825)에 가장 가까운 오염 패턴을 결정하는 시도를 할 수 있다. 이 비교 결과는 결과(905)일 수 있다.
오염 패턴 분석 회로(725)는 패리티(825)에 “가장 가까운” 오염 패턴을 결정하는 시도로써 설명되었음을 유의한다. 이 설명에 대해서는 두 가지 이유들이 있다. 첫 번째로, 에러를 갖는 데이터 칩은 패리티(825)가 프로그램된 오염 패턴들 중 어떤 것과도 정확하게 일치하지 못하게 하는 하나 이상의 에러들을 포함할 수 있다. 예를 들어, 에러는 특정 비트를 부정확한 값으로 강제로 만들 수 있다. 이러한 경우, 그 부정확한 비트는 비트가 오염 패턴의 일부분이 아님에도 불구하고 데이터 오염같이 보일 수 있거나, 또는 부정확한 비트는 비트가 오염되었음에도 불구하고 오염 패턴의 일부분이 아닌 비트와 같이 보일 수 있다. 두 번째로, 데이터 에러들 때문에, 패리티(825)는 오염 패턴 분석 회로(725)가 어떤 오염 패턴이 사용되었는지 (따라서 어떤 데이터 칩이 에러를 갖는지) 명확하게 결정할 수 없는 임의의 프로그램된 오염 패턴으로부터 충분히 떨어져있을 수 있다.
이러한 문제들에 대한 해결책들은 두 가지이다. 첫 번째로, 오염 패턴 분석 회로(725)는 패리티(825)에 가장 가까운(즉, 비트들 매칭(matching)이 가장 높은) 프로그램된 오염 패턴을 선택할 수 있다. (이러한 비교는 0 및 1 전부에 대해 모든 비트들을 매칭하거나(모든 0 또는 모든 1) 또는 오염 패턴 내 단지 1인 비트들만 매칭하는 것 중 어느 하나에 의해 수행될 수 있다.) 예를 들어, 패리티(825)는 프로그램된 오염 패턴들(605, 610, 620) 중 2개 비트들, 그리고 프로그램된 오염 패턴들(615, 625, 630) 중 1개 비트와 일치한다. 이것이 결정적이지 않은 것으로 보일 수 있지만, 도 3의 각 데이터 칩(305)은 4 비트들 이상의 데이터를 제공하는 것을 상기한다. 따라서, 오염 패턴들(605, 610, 615, 620, 625, 630)은 데이터 칩들로부터의 데이터 전체를 커버하기 위해 반복되지만, 그들 자체의 에러들 수는 오염 패턴과 동일한 빈도로 반복되지는 않을 것이다. 예를 들어, 에러를 갖는 데이터 칩이 원본 데이터(805)를 제공했던 데이터 칩이었다고 가정한다. 이 경우, 패리티(825)의 첫 번째, 두 번째 비트들은 오염 패턴에 의해 기여된 반면, 패리티(825)의 세 번째 비트는 데이터 에러로 인한 것이다. 세 번째 비트가 데이터 에러를 갖는 유일한 비트이면, 그러면 패리티(825)는 첫 번째 데이터 칩과 연관된 오염 패턴 내 모든 비트들과 실제로 일치할 것이다.
두 번째로, 오염 패턴 분석 회로(725)는 임계값(threshold, 910)을 포함할 수 있다. 임계값(910)은 패리티(825)와 프로그램된 오염 패턴들(605, 610, 615, 620, 625, 630) 사이의 최대 거리(즉, 상이한 비트들 수)를 명시할 수 있다. 패리티(825)가 프로그램된 오염 패턴들(605, 610, 615, 620, 625, 630) 중 적어도 하나의 임계값(910) 이내이면, 그러면 패리티(825)에 가장 가까운 프로그램된 오염 패턴이 선택될 수 있다. 그리고 패리티(825)의 임계값(910) 이내에 오염 패턴이 없으면, 그러면 도 1의 메모리 컨트롤러(125)는 에러가 정정되지 않을 수 있다고 결론을 내릴 수 있다. 임계값(910)은 임의의 원하는 거리로 설정될 수 있다: 예를 들어, 도 3의 버퍼(320)의 사이즈의 절반(물론, 이는 도 3의 데이터 칩(305)으로부터 도 1의 메모리 컨트롤러(125)에 의해 수신된 데이터의 사이즈 및 패리티(825)의 사이즈와 동일) 또는 오염 패턴들의 사이즈의 절반(오염 패턴이 도 3의 버퍼(320)보다 적은 비트들을 갖는 경우). 그러나 본 발명의 실시 예들은 다른 임계값들도 지원할 수 있다. 임계값(910)을 결정하기 위해 사용될 수 있는 다른 기준은 (도 3의 버퍼(320)를 완벽하게 오염시키기 위해 필요한 만큼 반복되는 프로그램된 오염 패턴들을 고려하여) 임의의 두 프로그램된 오염 패턴들간 차이의 최소 비트들의 수일 수 있다.
도 8 및 도 9는 오염 패턴을 식별하기 위해 사용되는 데이터의 소스(source)로써 패리티(825)를 사용하는 것을 설명하였으나, 본 발명의 실시 예들은 오염 패턴을 식별하기 위한 다른 메커니즘(mechanism)들을 지원할 수 있다. 예를 들어, 패리티(925)를 사용하는 대신에, 도 7의 메모리 컨트롤러(125)는 오염 패턴 결정 회로를 포함할 수 있다. 오염 패턴 결정 회로는 결정된 오염 패턴을 연산하기 위해 도 8의 원본 데이터(805, 810, 815, 820) 중 임의의 것 또는 모두에 대해 임의의 원하는 연산을 수행할 수 있고, 그 다음에 결정된 오염 패턴은 오염 패턴 분석 회로(725)에 의해 프로그램된 오염 패턴들과 비교될 수 있다. 본 발명의 이러한 실시 예에서, 패리티(825)는, 에러가 있는지 결정하기 위해 단독으로 사용될 수 있으나, 오염 패턴 결정 회로는 에러를 갖는 데이터 칩에 의해 사용되는 오염 패턴으로 기대되는 것을 결정하는데 사용될 수 있다.
도 10은 데이터 칩으로부터 수신된 도 8의 패리티(825)로부터 오염 패턴을 제거하는 도 3의 메모리 컨트롤러(125)를 도시한다. 도 10에서, 도 7의 오염 패턴 분석 회로(725)가 사용된 오염 패턴이 도 6의 오염 패턴(605)인 것으로 결정한 후, 도 3의 메모리 컨트롤러(125)는 패리티(825)로부터 오염 패턴(605)을 제거할 수 있다. 미가공 데이터에 오염 패턴(605)을 이용하여 XOR하는 것에 의해 오염 패턴(605)이 미가공 데이터에 추가되었다면, 그러면 오염 패턴(605)은 패리티(825)를 이용하여 오염 패턴(605)을 XOR하는 것에 의해 패리티(825)로부터 오염 패턴(605)이 제거될 수 있다. 다른 기술이 데이터 칩에 의해 미가공 데이터를 오염시키는데 사용된다면, 그러면 해당 기술은 패리티(825)로부터 오염 패턴을 제거하는데 사용될 수 있다. 사용된 기술과 관계 없이, 결과는 에러(1005)이다: 실제로 에러를 갖는 비트들의 집합. 일단 에러(1005)에서 이러한 비트들이 식별되면, 이러한 비트들은 정정될 수 있다.
비트들을 정정하는 한 방법은 데이터 칩으로부터 에러가 있는 원본 비트들을 재구성하기 위해, (패리티 데이터를 포함하는) 다른 데이터 칩들 전부로부터의 원본 데이터를 이용하는 것이다. 이 정정은 임의의 원하는 방법을 이용하여, 비트 레벨(bit level)에서 다루어질 수 있다: 예를 들어, 패리티 정보 및 다른 데이터 칩들로부터의 해당 비트들을 이용하여, 에러가 있은 원본 비트는 재구성될 수 있다. 그러나 에러를 갖는 데이터 칩으로부터 데이터를 단지 무시하고, 대신에 에러를 갖는 데이터 칩으로부터의 데이터 전체를 재구성하는 것이 더 간단할 수 있다. 도 11은 이러한 방법을 도시한다.
도 11에서, 에러를 갖는 데이터 칩에 대한 데이터(예를 들면, 도 8의 원본 데이터(805))는 무시된다. 에러를 갖는 데이터 칩의 전체 데이터는 원본 데이터(810, 815, 등)에서 원본 데이터(820)까지로부터 재구성될 수 있다. 원본 데이터(810, 815, 및 820)는 패리티 칩으로부터의 정보를 포함할 수 있으므로, 원본 데이터(810, 815, 등)에서 원본 데이터(820)까지는 에러를 갖는 데이터 칩에 대한 정정 정보를 재구성하기 위한 충분한 정보를 포함할 수 있다. 즉, 원본 데이터(810, 815, 등)에서 원본 데이터(820)까지 XOR에 의해, 결과는 에러를 갖는 데이터 칩의 원본 데이터를 복원할 수 있다.
도 11은 패리티 칩으로부터의 데이터가 포함된 에러를 갖고 있는 데이터 칩의 원본 데이터를 어떻게 복원하는지에 대해 도시한다. 몇몇의 다른 기술이 에러 정정을 위해 제공되는데 사용되면, 도 11에서 도시된 기술은 적절하게 수정될 수 있다.
도 12a 및 도 12b는 본 발명의 실시 예에 따라, 데이터를 오염시키기 위한 도 1의 메모리 모듈(115) 내 도 3의 데이터 칩(305)에 대한 예시적인 방법의 순서도이다. 도 12a 에서, 단계(1205)에서, 도 3의 데이터 칩(305)은 도 1의 메모리 컨트롤러(125)에 의해 지시된 대로 오염 패턴을 저장할 수 있다. 단계(1205)는 메모리 접근이 수행될 때마다가 아니라, 시스템의 초기 부팅 시에만 수행될 수 있다. 후술할 도 13은 도 3의 데이터 칩(305)이 어떻게 오염 패턴을 저장할 수 있는지에 대한 더 많은 세부 사항들을 제공한다. 단계(1210)에서, 도 3의 데이터 칩(305)은 도 1의 메모리 컨트롤러(125)로부터 메모리 어드레스에 값에 대한 요청을 수신할 수 있다. 이 요청은 1개 데이터 칩 내에 단독으로 위치하는 데이터에 대한 요청 또는 그 특정 비트에서의 데이터에 대한 요청이 아니라, 도 1의 메모리 모듈(115) 내 모든 데이터 칩들에 걸쳐 저장된 값에 대한 더 광범위한 요청의 일부일 수 있다. 단계(1215)에서, 도 3의 버퍼(320)는 도 3의 DRAM 어레이(310)로부터 회수된 데이터를 저장(buffer)할 수 있다. 단계(1220)에서, 도 3의 데이터 칩(305)은 도 3의 버퍼(320) 내 데이터가 에러를 포함하는지를 결정할 수 있다. 예를 들어, 도 3의 데이터 칩(305)은 에러가 있는지 결정하기 위해 도 3의 버퍼(320) 내 비트들에 대한 패리티 연산을 수행할 수 있거나, 도 3의 ECC 엔진(325)이 에러가 존재한다는 것을 나타낼 수 있다. 도 3의 데이터 칩(305)이 에러가 없는 것으로 결정하면, 그 다음에 단계(1225)에서 도 3의 전송 회로(345)는 도 1의 메모리 컨트롤러(125)로 미가공 데이터를 전송할 수 있다.
그러나 단계(1220)에서 도 3의 데이터 칩(305)이 에러가 있는 것으로 결정하면, 그 다음에 단계(1230, 도 12b)에서 도 3의 데이터 칩(305)은 도 3의 ECC 엔진(325)을 이용하여 에러가 정정될 수 있는지 결정할 수 있다. 에러가 정정 가능하면, 그 다음에 단계(1235)에서 도 3의 ECC 엔진(325)은 에러를 정정할 수 있고, 이후 단계(1240)에서 정정된 데이터가 도 3의 전송 회로(345)를 통해 도 1의 메모리 컨트롤러(125)로 보내질 수 있다. 그렇지 않으면, 단계(1245)에서, 도 3의 데이터 칩(305)은 도 3의 마스크 레지스터(335)로부터 오염 패턴에 접근할 수 있다. 단계(1250)에서, 도 3의 데이터 오염 엔진(330)은 접근된 오염 패턴을 이용하여 도 3의 버퍼(320) 내 데이터를 오염시킬 수 있다. 도 3을 참조하여 전술한대로, 데이터를 오염시키는 것은 도 3의 버퍼(320) 내 데이터를 오염 패턴으로 XOR하는 것에 의해 달성될 수 있다. 최종적으로, 단계(1255)에서, 도 3의 전송 회로(345)는 도 1의 메모리 컨트롤러(125)에 오염된 데이터를 전송할 수 있다.
도 13은 본 발명의 실시 예에 따라, 오염 패턴으로 프로그램되는 도 1의 메모리 모듈(115) 내 데이터 칩(305)에 대한 예시적인 방법의 순서도를 도시한다. 도 13에서, 단계(1305)에서, 도 3의 데이터 칩(305)은 도 1의 메모리 컨트롤러(125)로부터 오염 패턴을 수신할 수 있고, 그리고 단계(1310)에서, 도 3의 데이터 칩(305)은 도 3의 마스크 레지스터(335) 내에 수신된 오염 패턴을 저장할 수 있다. 그렇지 않으면, 단계(1315)에서, 도 3의 데이터 칩(305)은 도 3의 마스크 레지스터(335)에 사전에 프로그램 되었던 오염 패턴의 식별자를 수신할 수 있고, 그리고 단계(1320)에서, 도 3의 데이터 칩(305)은 필요할 때 데이터를 오염시키는 것에 사용하기 위해 도 3의 마스크 레지스터(335) 내 식별된 오염 패턴의 위치를 찾아낼 수 있다.
도 14는 본 발명의 실시 예에 따라, 도 1의 메모리 컨트롤러(125)로 원본 데이터를 전송하기 위해 도 1의 메모리 모듈(115) 내 도 3의 데이터 칩(305)에 대한 예시적인 방법의 순서도를 도시한다. 도 3을 참조하여 전술한대로, 도 1의 메모리 컨트롤러(125)는 메모리 컨트롤러 비활성화 신호(355)를 데이터 오염 엔진(330)으로 전송할 수 있다. 도 3의 메모리 컨트롤러 비활성화 신호(355)는 도 3의 데이터 오염 엔진(330)이 달리 정정할 수 없는 에러를 포함하는 데이터를 오염시키는 경우 도 1의 메모리 컨트롤러(125)가 도 3의 버퍼(320)로부터 미가공 데이터(즉, 오염되지 않은 데이터)를 수신할 수 있는 메커니즘을 위해 제공된다. 도 3의 메모리 컨트롤러 비활성화 신호(355)는, 예를 들면, 오염 패턴이 몇몇의 이유로 오염된 데이터로부터 제거될 수 없고 그리고 도 1의 메모리 컨트롤러(125)가 오염되지 않은 데이터를 원하는 상황들에서, 유용할 수 있다.
도 14의 단계(1405)에서, 도 3의 데이터 칩(305)은 도 3의 메모리 컨트롤러 비활성화 신호(355)를 수신할 수 있다. 단계(1225, 도 12a의 단계(1225)와 기능적으로 동일함)에서, 도 3의 전송 회로(345)는 도 3의 버퍼(320)로부터 미가공(오염되지 않은) 데이터를 도 1의 메모리 컨트롤러(125)로 전송할 수 있다.
도 14는 도 12a의 단계들(1220, 1225)의 변형으로써 간주될 수 있다. 예를 들어, 도 12a의 단계(1220)에서 수행되는 테스트는 두 부분의 테스트일 수 있다: 첫 번째로, 도 3의 버퍼(320) 내 미가공 데이터에 에러가 없는지; 두 번째로, 도 3의 데이터 칩(305)이 도 1의 메모리 컨트롤러(125)로부터 도 3의 메모리 컨트롤러 비활성화 신호(355)를 수신했는가 테스트 부분 중 어느 하나가 긍정 답변 결과이면, 그 다음에 도 3의 전송 회로(345)는 도 3의 버퍼(320)로부터 미가공 데이터를 전송한다; 그렇지 않으면, 처리(processing)는 도 12b의 단계(1230)가 계속될 것이다.
도 15a 및 도 15b는 본 발명의 실시 예에 따라, 도 1의 메모리 모듈(115) 내 데이터 칩(305)이 오염 패턴을 이용하여 데이터를 오염시키는 경우 에러 정정을 수행하기 위한 도 1의 메모리 컨트롤러(125)에 대한 예시적인 방법의 순서도를 도시한다. 도 15a에서, 단계(1505)에서, 도 1의 메모리 컨트롤러(125)는 오염 패턴을 이용하여 도 3의 데이터 칩(305)을 프로그램할 수 있다. 도 15a에서, 단계(1505)에서, 도 1의 메모리 컨트롤러(125)는 작은 단위의 또는 큰 단위 세분성 중 어느 하나의 임의의 원하는 오염 패턴을 선택할 수 있다. 그렇지 않으면, 단계(1510)에서, 도 1의 메모리 컨트롤러(125)는 사전에 프로그램된 오염 패턴의 식별자를 선택할 수 있고, 그리고 단계(1515)에서, 도 1의 메모리 컨트롤러(125)는 선택된 식별자를 이용하여 도 3의 데이터 칩(305)을 프로그램할 수 있다. 도 12a의 단계(1205)처럼, 단계들(1505, 1510)은 메모리 접근이 수행될 때마다가 아니라, 시스템의 초기 부팅 시에만 수행될 수 있다.
도 1의 메모리 컨트롤러(125)가 오염 패턴을 이용하여 도 3의 데이터 칩(305)을 어떻게 프로그램 하는지 관계 없이, 단계(1520)에서, 도 7의 읽기 회로(710)는 도 3의 데이터 칩(305)으로부터 원본 데이터를 수신할 수 있다. 단계(1525)에서, 도 7의 패리티 회로(715)는 도 8의 패리티(825)를 연산할 수 있다. 단계(1530)에서, 도 1의 메모리 컨트롤러(125)는 (도 8의 패리티(825)에 기초하여) 원본 데이터에 에러가 있는지를 결정할 수 있다. 전술한대로, 도 8의 패리티(825)를 연산하는 것은 한 가지 방법이나, 원본 데이터에 에러가 있는지를 결정하기 위한, 유일한 방법은 아니고, 본 발명의 실시 예들은 원본 데이터에 에러가 있는지 결정하기 위한 다른 기술들을 사용하는 것을 지원할 수 있다.
단계(1535, 도 15b)에서, 도 1의 메모리 컨트롤러(125)는 원본 데이터에 에러가 있는지 결정한다. 원본 데이터에 에러가 없으면, 그 다음에 단계(1540)에서 도 1의 메모리 컨트롤러(125)는 프로세서로 원본 데이터를 전송할 수 있다. 원본 데이터에 에러가 있으면, 단계(1545)에서, 도 7의 오염 패턴 분석 회로(725)는 패리티(825) 내 오염 패턴을 식별하는 시도를 할 수 있다. 단계(1550)에서, 메모리 컨트롤러(125)는 에러를 갖고 있는 도 3의 데이터 칩(305)을 식별하기 위해 식별된 오염 패턴을 사용할 수 있다. 단계(1555)에서, 도 7의 에러 정정 회로(730)는 도 3의 데이터 칩(305) 내 에러를 정정할 수 있다. 최종적으로, 단계(1560)에서, 도 1의 메모리 컨트롤러(125)는 호스트로 정정된 데이터를 전송할 수 있다.
도 16은 본 발명의 실시 예에 따라, 데이터를 오염시키기 위해 사용되었던 오염 패턴을 식별하기 위해 도 7의 오염 패턴 분석 회로(725)에 대한 예시적인 방법의 순서도를 도시한다. 도 16에서, 단계(1525, 도 15a의 단계(1525)와 기능적으로 유사하고, 사실상 두 단계들은 하나의 동작일 수 있음)에서, 도 8의 패리티(825)는 계산된 오염 패턴을 생성하기 위해, 연산될 수 있다. 단계(1605)에서, 도 7의 오염 패턴 분석 회로(725)는 계산된 오염 패턴과 도 1의 메모리 모듈(115) 내 데이터 칩들과 연관된 오염 패턴들을 비교할 수 있다. 단계(1610)에서, 도 7의 오염 패턴 분석 회로(725)는 도 1의 메모리 모듈(115) 내 데이터 칩들과 연관된 오염 패턴들 중 어느 것이라도 계산된 오염 패턴의 임계값 거리 이내에 있는지를 결정할 수 있다. 도 9를 참조하여 전술한대로, 거리는 계산된 오염 패턴 및 프로그램된 오염 패턴들간 상이한 비트들 수로써 측정될 수 있고, 임계값은 임의의 원하는 임계값일 수 있다.
계산된 오염 패턴이 프로그램된 오염 패턴들 중 임의의 것의 임계값 거리 내가 아니면, 그 다음에 단계(1615)에서, 도 1의 메모리 컨트롤러(125)는 오염 패턴을 식별하지 않기로 결정할 수 있고, 그리고 단계(1620)에서, 도 1의 메모리 컨트롤러(125)는 정정할 수 없는 에러(uncorrectable error; UE)로써 에러를 도 7의 로그(735)에 기록할 수 있다. 계산된 오염 패턴이 프로그램된 오염 패턴들 중 임의의 것의 임계값 거리 내면, 단계(1625)에서, 도 7의 오염 패턴 분석 회로(725)는 계산된 오염 패턴에 가장 가까운 오염 패턴을 식별할 수 있고, 그리고 그렇게 함으로써 에러를 갖는 데이터 칩을 식별할 수 있다.
도 17은 본 발명의 실시 예에 따라, 도 1의 메모리 모듈(115) 내 도 3의 데이터 칩(305) 내 에러에 대해 정정하기 위해 도 7의 에러 정정 회로(730)의 예시적인 방법의 순서도를 도시한다. 도 17에서, 단계(1705)에서, 도 7의 에러 정정 회로(730)는 에러를 갖는 데이터 칩(305)의 데이터를 무시할 수 있다. 단계(1710)에서, 도 7의 에러 정정 회로(730)는 도 1의 메모리 모듈(115) 내 다른 데이터 칩들로부터의 패리티를 연산할 수 있고, 그리고 단계(1715)에서, 도 7의 에러 정정 회로(730)는 식별된 데이터 칩의 데이터로써 연산된 패리티를 사용할 수 있다.
그렇지 않으면, 단계(1720)에서, 도 7의 에러 정정 회로(730)는 에러를 갖는 도 3의 데이터 칩(305)으로부터 원본 데이터로부터 오염 패턴을 제거할 수 있다. 단계(1725)에서, 도 7의 에러 정정 회로(730)는 에러를 갖는 도 3의 데이터 칩(305)의 오염되지 않은 데이터를 이용하여 패리티를 연산할 수 있고, 그리고 단계(1730)에서, 도 7의 에러 정정 회로(730)는 연산된 패리티에 기초하여 오염되지 않은 데이터 내 비트들을 반전시킬 수 있다.
도 18은 본 발명의 실시 예에 따라, 도 1의 메모리 모듈(115) 내 데이터 칩(305)으로부터 원본 데이터를 요청하기 위한 도 1의 메모리 컨트롤러(125)의 예시적인 방법의 순서도를 도시한다. 도 18에서, 단계(1805)에서, 도 1의 메모리 컨트롤러(125)는 도 3의 메모리 컨트롤러 비활성화 신호(355)를 도 3의 데이터 칩(305)으로 보낼 수 있다. 단계(1810)에서, 도 1의 메모리 컨트롤러(125)는 도 3의 데이터 칩(305)으로부터 미가공 데이터를 수신할 수 있다.
도 12a 내지 도 18에서, 본 발명의 몇몇의 실시 예들이 도시되었다. 그러나 당업자는 단계들의 순서를 변경하거나, 단계들을 생략하거나, 또는 도면에 도시되지 않은 링크들을 포함함으로써, 본 발명의 다른 실시 예들도 가능하다는 것을 인식할 것이다. 순서도의 이러한 모든 변형들은 명시적으로 설명되었든 아니든 간에, 본 발명의의 실시 예들인 것으로 간주된다.
아래의 설명은 본 발명의 기술적 사상의 일부 측면들이 구현되는 적절한 머신 또는 머신들의 짧고 일반적인 설명을 제공하고자 한다. 머신 또는 머신들은 적어도 일부는 다른 머신으로부터 수신되는 지시들, 가상현실(VR) 환경과의 상호 작용, 생체 피드백, 또는 다른 입력 신호뿐 아니라 키보드, 마우스 등과 같은 통상적인 입력 장치들로부터의 입력에 의해 제어될 수 있다. 여기에서 사용되는 바와 같이, "머신"의 용어는 단일 머신, 가상 머신, 또는 머신들, 가상 머신들 또는 함께 동작하는 장치들과 통신하도록 결합된 시스템을 넓게 포함하는 것으로 의도된다. 예시적인 머신들은 예를 들어 자동차, 기차, 택시 등과 같은 개인용 또는 공공 수송과 같은 수송 장치들뿐 아니라 개인용 컴퓨터들, 워크스테이션들, 서버들, 포터블 컴퓨터들, 핸드헬드(handheld) 장치들, 전화들, 태블릿들 등과 같은 컴퓨팅 장치들을 포함할 수 있다.
머신 또는 머신들은 프로그램 가능한 또는 프로그램 불가능한 논리 장치들 또는 어레이들, ASIC(application specific integrated circuit), 임베디드 컴퓨터들, 스마트 카드들 등과 같은 임베디드 컨트롤러들을 포함할 수 있다. 머신 또는 머신들은 네트워크 인터페이스, 모뎀, 또는 다른 통신 결합들을 통해서와 같이 하나 또는 그보다 많은 원격 머신들에 대한 하나 또는 그보다 많은 연결들을 활용할 수 있다. 머신들은 인트라넷, 인터넷, LAN(local area networks), WAN(wide area networks) 등과 같은 물리적 그리고/또는 논리적 네트워크의 수단으로 서로 연결될 수 있다. 이 분야에 숙련된 자는 네트워크 통신이 다양한 유선 그리고/또는 무선 근거리 또는 원거리 캐리어(carrier)들 및 무선 주파수(RF), 위성, 마이크로파, IEEE(Institute of Electrical and Electronics Engineers) 802.11, 블루투스, 광학, 적외선, 케이블, 레이저 등을 포함하는 프로토콜을 활용함을 이해할 것이다.
본 발명의 기술적 사상의 실시 예들은, 기계에 의해 액세스되는 때에 기계가 작업들을 수행하거나 또는 추상적인 데이터 타입들 또는 저레벨 하드웨어 콘텍스트(context)들을 정의하는 것을 유발하는 함수들, 절차들, 데이터 구조들, 응용 프로그램들 등을 포함하는 연관된 데이터를 참조하여 또는 협력하여 설명될 수 있다. 연관된 데이터는, 예를 들어 RAM, ROM 등과 같은 휘발성 그리고/또는 불휘발성 메모리, 또는 다른 스토리지 장치들, 그리고 하드 드라이브, 플로피 디스크, 광학 스토리지, 테이프들, 플래시 메모리, 메모리 스틱(stick)들, 디지털 비디오 디스크들, 생체 스토리지 등을 포함하는 연관된 스토리지 매체에 저장될 수 있다. 연관된 데이터는 물리적 그리고/또는 논리적 네트워크를 포함하는 전송 환경들을 거쳐 패킷(packet)들, 직렬 데이터, 병렬 데이터, 전송신호들 등의 형태로 전달되고, 압축된 또는 암호화된 포맷으로 이용될 수 있다. 연관된 데이터는 분산 환경에서 사용될 수 있으며, 기계 액세스에 대해 지역적 그리고/또는 원격으로 저장될 수 있다.
본 발명의 기술적 사상의 실시 예들은 하나 또는 그보다 많은 프로세서들에 의해 실행 가능하며 여기에 설명된 바와 같이 본 발명의 기술적 사상의 원소들을 수행하게 하는 명령들을 포함하는 실재하는 비임시 기계 읽기 매체를 포함할 수 있다.
도시된 실시 예들을 참조하여 설명된 본 발명의 기술적 사상의 원칙들을 가지면, 도시된 실시 예들이 이러한 원칙들로부터 멀어지지 않으면서 배열 및 상세에서 수정될 수 있고 필요한 임의의 방법으로 조합될 수 있음이 이해될 것이다. 앞선 설명이 구체적인 실시 예들에 집중하였지만, 다른 구성돌 또한 고려된다. 구체적으로, "본 발명의 기술적 사상의 실시 예에 따른"과 같은 설명들 또는 여기에 사용된 유사한 것들에 불구하고, 이러한 문구들은 일반적으로 실시 예의 가능성들을 참조하며, 본 발명의 기술적 사상을 구체적인 실시 예의 구성들로 한정하는 것을 의도하지 않는다. 여기에 사용되는 바와 같이, 이러한 용어들은 다른 실시 예들로 조합 가능한 동일한 또는 상이한 실시 예들을 참조할 수 있다.
앞서 설명된 실시 예들은 본 발명의 기술적 사상을 그것들로 한정하는 것으로 해석되지 않는다. 적은 실시 예들만이 설명되었지만, 이 분야에 숙련된 자들은 본 기재의 신규한 설명들 및 장점들로부터 실질적으로 멀어지지 않으면서 이러한 실시 예들에 많은 수정들이 가능함을 충분히 이해할 것이다. 따라서, 이러한 모든 수정들은 청구항들에서 정의되는 바와 같이 본 발명의 기술적 사상의 범위 내에 포함되는 것으로 의도된다.
본 발명의 실시 예들은 제한 없이, 아래 서술들로 확장될 수 있다.
(서술 1) 본 발명의 실시 예는,
데이터 어레이(data array);
상기 데이터 어레이로부터 미가공 데이터(raw data)를 읽는 읽기 회로;
상기 읽기 회로에 의해 상기 데이터 어레이로부터 상기 미가공 데이터를 저장하는 버퍼(buffer);
오염 패턴을 저장하는 마스크 레지스터(mask register);
오염된 데이터를 생성하기 위해 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 수정하는 데이터 오염 엔진(data pollution engine); 및
상기 버퍼로부터 상기 오염된 데이터를 전송하는 전송 회로를 포함하는 데이터 칩을 포함한다.
(서술 2) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 데이터 칩은 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술 3) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 데이터 칩은 복수의 다른 데이터 칩들을 포함하는 DRAM 모듈에 포함되고, 그리고
상기 데이터 칩의 상기 마스크 레지스터에 저장된 상기 오염 패턴은 상기 DRAM 모듈 내 상기 복수의 다른 데이터 칩들에 저장된 오염 패턴들과 상이하다.
(서술 4) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 전송 회로는 메모리 컨트롤러(memory controller)로 상기 오염된 데이터를 작동적으로(operatively) 전송한다.
(서술 5) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 데이터 칩은 상기 버퍼에 저장된 상기 미가공 데이터에 대해 에러 정정을 수행하는 ECC(error correcting code) 회로를 더 포함하고, 그리고
상기 데이터 오염 엔진은 상기 ECC 회로가 상기 버퍼에 저장된 상기 미가공 데이터 내 에러를 감지하나 정정할 수 없는 경우 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 작동적으로 수정한다.
(서술 6) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 데이터 오염 엔진은 상기 버퍼에 저장된 상기 미가공 데이터 및 상기 마스크 레지스터에 저장된 상기 오염 패턴에 대해 XOR(배타적 논리합, exclusive or) 연산을 수행하는 XOR 회로를 포함한다.
(서술 7) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 데이터 오염 엔진은 상기 데이터 오염 엔진이 메모리 컨트롤러로부터 메모리 컨트롤러 비활성화 신호를 수신하지 않는 한 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 작동적으로 수정한다.
(서술 8) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 오염 패턴은 부팅 시 메모리 컨트롤러에 의해 상기 데이터 칩 안의 상기 마스크 레지스터로 프로그램된다.
(서술 9) 본 발명의 실시 예에 있어서,
제 1 서술에 있어서,
상기 오염 패턴은 상기 마스크 레지스터에 저장된 복수의 사전에 프로그램된 오염 패턴 중 하나이고, 그리고
상기 데이터 칩은 상기 메모리 컨트롤러로부터 사용하기 위해 상기 마스크 레지스터로부터 상기 오염 패턴의 식별자를 수신할 수 있다.
(서술 10) 본 발명의 실시 예는,
복수의 데이터 칩에 저장된 어드레스에서 값을 요청하는 읽기 회로;
상기 복수의 데이터 칩으로부터 수신된 원본 데이터로부터 패리티를 연산하는 패리티 회로;
에러를 갖는 데이터 칩을 식별하기 위해 상기 패리티와 상기 복수의 데이터 칩에 프로그램된 복수의 오염 패턴을 비교하는 오염 패턴 분석 회로; 및
상기 에러를 갖는 상기 식별된 데이터 칩으로부터 수신된 상기 원본 데이터 내 상기 에러를 정정하는 에러 정정 회로를 포함하는 메모리 컨트롤러를 포함한다.
(서술 11) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 복수의 데이터 칩에는 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술 12) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 오염 패턴 분석 회로 및 상기 에러 정정 회로는 상기 패리티 회로가 상기 복수의 데이터 칩으로부터 수신된 상기 원본 데이터에 에러가 있는 것을 나타내는 경우에만 단지 사용된다.
(서술 13) 본 발명의 실시 예에 있어서,
제 12 서술에 있어서,
상기 복수의 데이터 칩으로부터 수신된 상기 원본 데이터로부터 상기 연산된 패리티는 상기 복수의 데이터 칩으로부터 수신된 상기 원본 데이터에 에러가 있는지를 나타낸다.
(서술 14) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 패리티에 가장 가까운 오염 패턴을 작동적으로 식별한다.
(서술 15) 본 발명의 실시 예에 있어서,
제 14 서술에 있어서,
상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 식별된 오염 패턴이 상기 패리티의 임계값 이내인지를 작동적으로 결정한다.
(서술 16) 본 발명의 실시 예에 있어서,
제 15 서술에 있어서,
상기 임계값은 상기 패리티 사이즈의 절반이다.
(서술 17) 본 발명의 실시 예에 있어서,
제 15 서술에 있어서,
상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 어느 것도 상기 패리티의 상기 임계값 이내가 아닌 경우 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 어느 것도 작동적으로 더 식별하지 않는다.
(서술 18) 본 발명의 실시 예에 있어서,
제 17 서술에 있어서,
상기 메모리 컨트롤러는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 어느 것도 상기 패리티의 상기 임계값 이내가 아닌 것을 기록하는 로그(log)를 더 포함한다.
(서술 19) 본 발명의 실시 예에 있어서,
제 14 서술에 있어서,
상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 패리티 오염 패턴 내의 비트들과 일치하는 비트들을 가장 많이 갖는 오염 패턴을 작동적으로 식별한다.
(서술 20) 본 발명의 실시 예에 있어서,
제 14 서술에 있어서,
상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 에러를 갖는 상기 식별된 오염 패턴과 연관되는 상기 복수의 데이터 칩 중 데이터 칩을 작동적으로 식별한다.
(서술 21) 본 발명의 실시 예에 있어서,
제 14 서술에 있어서,
상기 메모리 컨트롤러는 상기 에러를 갖는 상기 식별된 데이터 칩에 메모리 컨트롤러 비활성화 신호를 작동적으로 전송하고; 그리고
상기 읽기 회로는 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 미가공 데이터를 작동적으로 수신한다.
(서술 22) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 에러 정정 회로는 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용해 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 데이터를 작동적으로 되살린다(recreate).
(서술 23) 본 발명의 실시 예에 있어서,
제 22 서술에 있어서,
상기 패리티 회로는 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 것에 의해 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 데이터를 작동적으로 되살린다.
(서술 24) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 에러 정정 회로는 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 수신된 상기 원본 데이터로부터 상기 패리티를 작동적으로 제거하고 그리고 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 오염되지 않은 데이터 내의 상기 에러를 작동적으로 정정한다.
(서술 25) 본 발명의 실시 예에 있어서,
제 24 서술에 있어서,
상기 에러 정정 회로는 상기 에러를 갖는 상기 식별된 데이터 칩으로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 작동적으로 더 연산하고 상기 연산된 패리티에 기초하여 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 오염되지 않은 데이터 내의 적어도 하나의 비트를 작동적으로 더 반전시킨다.
(서술 26) 본 발명의 실시 예에 있어서,
제 10 서술에 있어서,
상기 메모리 컨트롤러는 부팅 동안 상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 오염 패턴 프로그래밍 회로를 더 포함한다.
(서술 27) 본 발명의 실시 예에 있어서,
제 26 서술에 있어서,
상기 복수의 오염 패턴은 모두 고유하다.
(서술 28) 본 발명의 실시 예에 있어서,
제 26 서술에 있어서,
상기 오염 패턴 프로그래밍 회로는 상기 부팅 동안 상기 복수의 오염 패턴을 이용하여 상기 복수의 데이터 칩을 작동적으로 프로그램 한다.
(서술 29) 본 발명의 실시 예에 있어서,
제 26 서술에 있어서,
상기 오염 패턴 프로그래밍 회로는 상기 부팅 동안 상기 복수의 데이터 칩에 대한 사전에 프로그램된 오염 패턴들의 복수의 식별자를 작동적으로 선택하고 상기 부팅 동안 상기 선택된 복수의 식별자를 이용하여 상기 복수의 데이터 칩을 작동적으로 프로그램한다.
(서술 30) 본 발명의 실시 예는,
어드레스에서 값에 대한 요청을 데이터 칩에서 수신하는 단계;
상기 어드레스에 상기 값을 포함하는 미가공 데이터를 상기 데이터 칩의 버퍼에 저장(buffer)하는 단계;
상기 버퍼 내 상기 미가공 데이터가 에러를 갖는지 결정하는 단계; 및
상기 버퍼 내 상기 미가공 데이터가 에러를 갖는 경우:
오염된 데이터를 생성하기 위해 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
상기 버퍼 내 상기 오염된 데이터를 메모리 컨트롤러로 전송하는 단계를 포함하는 방법을 포함한다.
(서술 31) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 XOR(배타적 논리합, exclusive or) 하는 단계를 포함한다.
(서술 32) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 방법은 상기 버퍼 내 상기 미가공 데이터가 상기 에러를 갖지 않는 경우, 상기 메모리 컨트롤러로 상기 버퍼 내 상기 미가공 데이터를 전송하는 단계를 더 포함한다.
(서술 33) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 데이터 칩은 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술 34) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 방법은 상기 버퍼 내 상기 미가공 데이터가 에러를 가지면:
상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 있는지를 결정하는 단계를 더 포함하고,
상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 없으면:
상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
상기 버퍼 내 상기 오염된 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 더 포함한다.
(서술 35) 본 발명의 실시 예에 있어서,
제 34 서술에 있어서,
상기 방법은 상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 있으면:
상기 버퍼 내 상기 미가공 데이터를 정정하는 단계; 및
상기 버퍼 내 상기 정정된 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 더 포함한다.
(서술 36) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함한다.
(서술 37) 본 발명의 실시 예에 있어서,
제 36 서술에 있어서,
상기 방법은 상기 메모리 컨트롤러로부터 상기 오염 패턴을 수신하는 단계; 및
상기 마스크 레지스터에 상기 수신된 오염 패턴을 저장하는 단계를 더 포함한다.
(서술 38) 본 발명의 실시 예에 있어서,
제 36 서술에 있어서,
상기 방법은 상기 메모리 컨트롤러로부터 오염 패턴 식별자를 수신하는 단계를 포함하고; 그리고
상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계는 상기 오염 패턴 식별자에 응답하여 상기 데이터 칩 내 상기 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함한다.
(서술 39) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 오염 패턴은 상기 버퍼의 제 2 폭(width)과 동일한 제 1 폭을 포함한다.
(서술 40) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 오염 패턴은 상기 버퍼의 제 2 폭보다 적은 제 1 폭을 포함하고, 상기 오염 패턴은 적어도 상기 버퍼만큼 넓어지도록 반복된다.
(서술 41) 본 발명의 실시 예에 있어서,
제 30 서술에 있어서,
상기 방법은, 상기 데이터 칩에서 메모리 컨트롤러 비활성화 신호를 수신하는 단계; 및
상기 버퍼 내 상기 미가공 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 포함한다.
(서술 42) 본 발명의 실시 예는,
복수의 데이터 칩으로부터 원본 데이터를 수신하는 단계;
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 에러를 갖는지를 결정하는 단계;
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 가지면:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터를 이용하여 오염 패턴을 식별하는 시도를 수행하는 단계;
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 적어도 하나를 식별하기 위해 상기 오염 패턴을 사용하는 단계;
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계를 포함하는 방법을 포함한다.
(서술43) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 복수의 데이터 칩은 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술44) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 방법은 호스트로 상기 정정된 데이터를 전송하는 단계를 더 포함한다.
(서술45) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 갖지 않으면, 호스트로 상기 원본 데이터를 전송하는 단계를 포함한다.
(서술46) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 에러를 갖는지를 결정하는 단계는:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 대해 패리티 연산을 수행하는 단계; 및
상기 패리티 연산이 패리티 에러를 나타내면 상기 복수의 데이터 칩 중 상기 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 갖는지를 결정하는 단계를 포함한다.
(서술47) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 복수의 데이터 칩으로부터의 상기 원본 데이터를 이용하여 오염 패턴을 식별하는 시도를 수행하는 단계는:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터로부터 오염 패턴을 계산하는 단계;
상기 계산된 오염 패턴과 상기 복수의 데이터 칩과 연관된 복수의 오염 패턴을 비교하는 단계; 및
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 패턴 중 하나가 상기 계산된 오염 패턴의 임계값 이내이면, 상기 계산된 오염 패턴의 임계값 이내인 상기 오염 패턴을 식별하는 단계를 포함한다.
(서술48) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 계산된 오염 패턴과 상기 복수의 데이터 칩과 연관된 복수의 오염 패턴을 비교하는 단계는, 상기 복수의 데이터 칩과 연관된 상기 복수의 오염 턴 중 상기 계산된 오염 패턴과 가장 가까운 상기 하나를 식별하는 단계를 포함한다.
(서술49) 본 발명의 실시 예에 있어서,
제 48 서술에 있어서,
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 턴 중 상기 계산된 오염 패턴과 가장 가까운 상기 하나를 식별하는 단계는, 복수의 데이터 칩과 연관된 복수의 오염 패턴 중 상기 계산된 오염 패턴 내의 비트들과 일치하는 비트들을 가장 많이 갖는 상기 하나를 식별하는 단계를 포함한다.
(서술50) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 임계값은 상기 계산된 오염 패턴 사이즈의 절반이다.
(서술51) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 패턴 중 어느 것도 상기 계산된 오염 패턴의 상기 임계값 이내가 아닌 경우, 상기 복수의 데이터 칩에 연관된 임의의 오염 패턴을 식별하지 않는다.
(서술52) 본 발명의 실시 예에 있어서,
제 51 서술에 있어서,
상기 방법은, 정정할 수 없는 에러(uncorrectable error; UE)로써 상기 에러를 기록하는 단계를 더 포함한다.
(서술53) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 방법은, 메모리 컨트롤러 비활성화 신호를 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나에 전송하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터 미가공 데이터를 수신하는 단계를 더 포함한다.
(서술54) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터를 무시하는 단계; 및
상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터를 되살리는 단계를 포함한다.
(서술55) 본 발명의 실시 예에 있어서,
제 54 서술에 있어서,
상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터를 되살리는 단계는:
상기 복수의 데이터 칩 중 상기 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터로써 상기 연산된 패리티를 이용하는 단계를 포함한다.
(서술56) 본 발명의 실시 예에 있어서,
제 47 서술에 있어서,
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터로부터 상기 식별된 오염 패턴을 제거하고 오염되지 않은 데이터를 생성하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 상기 에러를 정정하는 단계를 포함한다.
(서술57) 본 발명의 실시 예에 있어서,
제 56 서술에 있어서,
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터로부터 상기 식별된 오염 패턴을 제거하고 오염되지 않은 데이터를 생성하는 단계는, 상기 식별된 오염 패턴을 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터를 이용하여 XOR하는 단계를 포함한다.
(서술58) 본 발명의 실시 예에 있어서,
제 56 서술에 있어서,
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 단계; 및
상기 연산된 패리티에 기초하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 적어도 하나의 비트를 반전시키는 단계를 포함한다.
(서술59) 본 발명의 실시 예에 있어서,
제 42 서술에 있어서,
상기 방법은, 부팅 동안 상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계를 더 포함한다.
(서술60) 본 발명의 실시 예에 있어서,
제 59 서술에 있어서,
상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계는, 상기 부팅 동안 상기 복수의 오염 패턴으로 상기 복수의 데이터 칩을 프로그램하는 단계를 포함한다.
(서술61) 본 발명의 실시 예에 있어서,
제 59 서술에 있어서,
상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계는:
상기 부팅 동안 상기 복수의 데이터 칩에 대한 사전에 프로그램된 오염 패턴들의 복수의 식별자를 선택하는 단계; 및
상기 부팅 동안 상기 선택된 복수의 식별자를 이용하여 상기 복수의 데이터 칩을 프로그램하는 단계를 포함한다.
(서술62) 본 발명의 실시 예는,
머신(machine)에 의해 수행되는,
어드레스에서 값에 대한 요청을 데이터 칩에서 수신하는 단계;
상기 어드레스에 상기 값을 포함하는 미가공 데이터를 상기 데이터 칩의 버퍼에 저장(buffer)하는 단계;
상기 버퍼 내 상기 미가공 데이터가 에러를 갖는지 결정하는 단계; 및
상기 버퍼 내 상기 미가공 데이터가 에러를 갖는 경우:
오염된 데이터를 생성하기 위해 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
상기 버퍼 내 상기 오염된 데이터를 메모리 컨트롤러로 전송하는 단계를 야기하는 저장된 비일시적인 명령(non-transitory instruction)들을 갖는 유형의 저장 매체(tangible storage medium)를 포함하는 물품을 포함한다.
(서술63) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 XOR(배타적 논리합, exclusive or) 하는 단계를 포함한다.
(서술64) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는, 상기 버퍼 내 상기 미가공 데이터가 상기 에러를 갖지 않는 경우, 상기 메모리 컨트롤러로 상기 버퍼 내 상기 미가공 데이터를 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술65) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 데이터 칩은 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술66) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는, 상기 버퍼 내 상기 미가공 데이터가 에러를 가지면:
상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 있는지를 결정하는 단계; 및
상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 없으면:
상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
상기 버퍼 내 상기 오염된 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술67) 본 발명의 실시 예에 있어서,
제 66 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는, 상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 있으면:
상기 버퍼 내 상기 미가공 데이터를 정정하는 단계; 및
상기 버퍼 내 상기 정정된 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술68) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함한다.
(서술69) 본 발명의 실시 예에 있어서,
제 68 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
상기 메모리 컨트롤러로부터 상기 오염 패턴을 수신하는 단계; 및
상기 마스크 레지스터에 상기 수신된 오염 패턴을 저장하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술70) 본 발명의 실시 예에 있어서,
제 68 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
상기 메모리 컨트롤러로부터 오염 패턴 식별자를 수신하는 단계를 야기하는 비일시적인 명령들을 더 포함하고, 그리고
상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계는 상기 오염 패턴 식별자에 응답하여 상기 데이터 칩 내 상기 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함한다.
(서술71) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 오염 패턴은 상기 버퍼의 제 2 폭(width)과 동일한 제 1 폭을 포함한다.
(서술72) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 오염 패턴은 상기 버퍼의 제 2 폭보다 적은 제 1 폭을 포함하고, 상기 오염 패턴은 적어도 상기 버퍼만큼 넓어지도록 반복된다.
(서술73) 본 발명의 실시 예에 있어서,
제 62 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
상기 데이터 칩에서 메모리 컨트롤러 비활성화 신호를 수신하는 단계; 및
상기 버퍼 내 상기 미가공 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술74) 본 발명의 실시 예는,
머신(machine)에 의해 수행되는,
복수의 데이터 칩으로부터 원본 데이터를 수신하는 단계;
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 에러를 갖는지를 결정하는 단계;
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 가지면:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터를 이용하여 오염 패턴을 식별하는 시도를 수행하는 단계;
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 적어도 하나를 식별하기 위해 상기 오염 패턴을 사용하는 단계;
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계를 야기하는 저장된 비일시적인 명령(non-transitory instruction)들을 갖는 유형의 저장 매체(tangible storage medium)를 포함하는 물품을 포함한다.
(서술75) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 복수의 데이터 칩은 DRAM 모듈(dynamic random access memory module)에 포함된다.
(서술76) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
호스트로 상기 정정된 데이터를 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술77) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 갖지 않으면, 호스트로 상기 원본 데이터를 전송하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술78) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 복수의 데이터 칩 중 적어도 하나로부터의 상기 원본 데이터가 에러를 갖는지를 결정하는 단계는:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 대해 패리티 연산을 수행하는 단계; 및
상기 패리티 연산이 패리티 에러를 나타내면 상기 복수의 데이터 칩 중 상기 적어도 하나로부터의 상기 원본 데이터가 상기 에러를 갖는지를 결정하는 단계를 포함한다.
(서술79) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 복수의 데이터 칩으로부터의 상기 원본 데이터를 이용하여 오염 패턴을 식별하는 시도를 수행하는 단계는:
상기 복수의 데이터 칩으로부터의 상기 원본 데이터로부터 오염 패턴을 계산하는 단계;
상기 계산된 오염 패턴과 상기 복수의 데이터 칩과 연관된 복수의 오염 패턴을 비교하는 단계; 및
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 패턴 중 하나가 상기 계산된 오염 패턴의 임계값 이내이면, 상기 계산된 오염 패턴의 임계값 이내인 상기 오염 패턴을 식별하는 단계를 포함한다.
(서술80) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 계산된 오염 패턴과 상기 복수의 데이터 칩과 연관된 복수의 오염 패턴을 비교하는 단계는, 상기 복수의 데이터 칩과 연관된 상기 복수의 오염 턴 중 상기 계산된 오염 패턴과 가장 가까운 상기 하나를 식별하는 단계를 포함한다.
(서술81) 본 발명의 실시 예에 있어서,
제 80 서술에 있어서,
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 턴 중 상기 계산된 오염 패턴과 가장 가까운 상기 하나를 식별하는 단계는, 복수의 데이터 칩과 연관된 복수의 오염 패턴 중 상기 계산된 오염 패턴 내의 비트들과 일치하는 비트들을 가장 많이 갖는 상기 하나를 식별하는 단계를 포함한다.
(서술82) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 임계값은 상기 계산된 오염 패턴 사이즈의 절반이다.
(서술83) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 복수의 데이터 칩과 연관된 상기 복수의 오염 패턴 중 어느 것도 상기 계산된 오염 패턴의 상기 임계값 이내가 아닌 경우, 상기 복수의 데이터 칩에 연관된 임의의 오염 패턴을 식별하지 않는다.
(서술84) 본 발명의 실시 예에 있어서,
제 83 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
정정할 수 없는 에러(uncorrectable error; UE)로써 상기 에러를 기록하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술85) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
메모리 컨트롤러 비활성화 신호를 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나에 전송하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터 미가공 데이터를 수신하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술86) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터를 무시하는 단계; 및
상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터를 되살리는 단계를 포함한다.
(서술87) 본 발명의 실시 예에 있어서,
제 86 서술에 있어서,
상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터를 되살리는 단계는:
상기 복수의 데이터 칩 중 상기 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 데이터로써 상기 연산된 패리티를 이용하는 단계를 포함한다.
(서술88) 본 발명의 실시 예에 있어서,
제 79 서술에 있어서,
상기 오염 패턴 및 상기 복수의 데이터 칩으로부터의 상기 원본 데이터에 응답하여 상기 복수의 데이터 칩으로부터의 상기 원본 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터로부터 상기 식별된 오염 패턴을 제거하고 오염되지 않은 데이터를 생성하는 단계; 및
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 상기 에러를 정정하는 단계를 포함한다.
(서술89) 본 발명의 실시 예에 있어서,
제 88 서술에 있어서,
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터로부터 상기 식별된 오염 패턴을 제거하고 오염되지 않은 데이터를 생성하는 단계는, 상기 식별된 오염 패턴을 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 원본 데이터를 이용하여 XOR하는 단계를 포함한다.
(서술90) 본 발명의 실시 예에 있어서,
제 88 서술에 있어서,
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 상기 에러를 정정하는 단계는:
상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 및 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 단계; 및
상기 연산된 패리티에 기초하여 상기 에러를 갖는 상기 복수의 데이터 칩 중 상기 식별된 적어도 하나로부터의 상기 오염되지 않은 데이터 내 적어도 하나의 비트를 반전시키는 단계를 포함한다.
(서술91) 본 발명의 실시 예에 있어서,
제 74 서술에 있어서,
상기 저장 매체는, 상기 머신에 의해 수행되는,
부팅 동안 상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계를 야기하는 비일시적인 명령들을 더 포함한다.
(서술92) 본 발명의 실시 예에 있어서,
제 91 서술에 있어서,
상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계는, 상기 부팅 동안 상기 복수의 오염 패턴으로 상기 복수의 데이터 칩을 프로그램하는 단계를 포함한다.
(서술93) 본 발명의 실시 예에 있어서,
제 91 서술에 있어서,
상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 단계는:
상기 부팅 동안 상기 복수의 데이터 칩에 대한 사전에 프로그램된 오염 패턴들의 복수의 식별자를 선택하는 단계; 및
상기 부팅 동안 상기 선택된 복수의 식별자를 이용하여 상기 복수의 데이터 칩을 프로그램하는 단계를 포함한다.
결과적으로, 본 명세서에 설명된 실시 예들에 대한 다양한 변경의 관점에서, 이 상세한 설명 및 첨부된 자료는 단지 예시적인 것으로 의도되며, 본 발명의 개념의 범위를 제한하는 것으로 간주되어서는 안된다. 따라서, 본 발명의 개념으로서 청구되는 것은 다음의 청구 범위 및 그 균등물들의 범위 및 사상 내에 있을 수 있는 모든 변형들이다.
105: 머신
110: 프로세서
115: 메모리
120: 저장 장치
125: 메모리 컨트롤러

Claims (21)

  1. 데이터 어레이(data array);
    상기 데이터 어레이로부터 미가공 데이터(raw data)를 읽는 읽기 회로;
    상기 읽기 회로에 의해 상기 데이터 어레이로부터 상기 미가공 데이터를 저장하는 버퍼(buffer);
    오염 패턴을 저장하는 마스크 레지스터(mask register);
    오염된 데이터를 생성하기 위해 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 수정하는 데이터 오염 엔진(data pollution engine); 및
    상기 버퍼로부터 상기 오염된 데이터를 전송하는 전송 회로를 포함하는 데이터 칩.
  2. 제 1 항에 있어서,
    DRAM 모듈(dynamic random access memory module)에 포함되는 데이터 칩.
  3. 제 1 항에 있어서,
    상기 버퍼에 저장된 상기 미가공 데이터에 대해 에러 정정을 수행하는 ECC(error correcting code) 회로를 더 포함하고, 그리고
    상기 데이터 오염 엔진은 상기 ECC 회로가 상기 버퍼에 저장된 상기 미가공 데이터 내 에러를 감지하나 정정할 수 없는 경우 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 작동적으로 수정하는 데이터 칩.
  4. 제 1 항에 있어서,
    상기 데이터 오염 엔진은 상기 데이터 오염 엔진이 메모리 컨트롤러로부터 메모리 컨트롤러 비활성화 신호를 수신하지 않는 한 상기 마스크 레지스터에 저장된 상기 오염 패턴을 이용하여 상기 버퍼에 저장된 상기 미가공 데이터를 작동적으로 수정하는 데이터 칩.
  5. 제 1 항에 있어서,
    상기 오염 패턴은 부팅 시 메모리 컨트롤러에 의해 상기 마스크 레지스터로 프로그램되는 데이터 칩.
  6. 복수의 데이터 칩에 저장된 어드레스에서 값을 요청하는 읽기 회로;
    상기 복수의 데이터 칩으로부터 수신된 원본 데이터로부터 패리티를 연산하는 패리티 회로;
    에러를 갖는 데이터 칩을 식별하기 위해 상기 패리티와 상기 복수의 데이터 칩에 프로그램된 복수의 오염 패턴을 비교하는 오염 패턴 분석 회로; 및
    상기 에러를 갖는 상기 식별된 데이터 칩으로부터 수신된 상기 원본 데이터 내 상기 에러를 정정하는 에러 정정 회로를 포함하는 메모리 컨트롤러.
  7. 제 6 항에 있어서,
    상기 오염 패턴 분석 회로 및 상기 에러 정정 회로는 상기 패리티 회로가 상기 복수의 데이터 칩으로부터 수신된 상기 원본 데이터에 에러가 있는 것을 나타내는 경우에만 단지 사용되는 메모리 컨트롤러.
  8. 제 6 항에 있어서,
    상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 패리티에 가장 가까운 오염 패턴을 작동적으로 식별하는 메모리 컨트롤러.
  9. 제 8 항에 있어서,
    상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 식별된 오염 패턴이 상기 패리티의 임계값 이내인지를 작동적으로 결정하는 메모리 컨트롤러.
  10. 제 8 항에 있어서,
    상기 오염 패턴 분석 회로는 상기 복수의 데이터 칩에 프로그램된 상기 복수의 오염 패턴 중 상기 패리티 오염 패턴 내의 비트들과 일치하는 비트들을 가장 많이 갖는 오염 패턴을 작동적으로 식별하는 메모리 컨트롤러.
  11. 제 6 항에 있어서,
    상기 에러 정정 회로는 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터를 이용해 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 데이터를 작동적으로 되살리는(recreate) 메모리 컨트롤러.
  12. 제 11 항에 있어서,
    상기 패리티 회로는 상기 복수의 데이터 칩 중 다른 데이터 칩들로부터의 상기 원본 데이터에 대한 패리티를 연산하는 것에 의해 상기 에러를 갖는 상기 식별된 데이터 칩으로부터 상기 데이터를 작동적으로 되살리는 메모리 컨트롤러.
  13. 제 6 항에 있어서,
    부팅 동안 상기 복수의 데이터 칩에 대한 복수의 오염 패턴을 선택하는 오염 패턴 프로그래밍 회로를 더 포함하는 메모리 컨트롤러.
  14. 제 13 항에 있어서,
    상기 복수의 오염 패턴은 모두 고유한 메모리 컨트롤러.
  15. 어드레스에서 값에 대한 요청을 데이터 칩에서 수신하는 단계;
    상기 어드레스에 상기 값을 포함하는 미가공 데이터를 상기 데이터 칩의 버퍼에 저장(buffer)하는 단계;
    상기 버퍼 내 상기 미가공 데이터가 에러를 갖는지 결정하는 단계; 및
    상기 버퍼 내 상기 미가공 데이터가 에러를 갖는 경우:
    오염된 데이터를 생성하기 위해 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
    상기 버퍼 내 상기 오염된 데이터를 메모리 컨트롤러로 전송하는 단계를 포함하는 방법.
  16. 제 15 항에 있어서,
    오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 XOR(배타적 논리합, exclusive or)하는 단계를 포함하는 방법.
  17. 제 15 항에 있어서,
    상기 버퍼 내 상기 미가공 데이터가 에러를 가지면:
    상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 있는지를 결정하는 단계를 더 포함하고,
    상기 버퍼 내 상기 미가공 데이터 내 상기 에러가 정정될 수 없으면:
    상기 오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계; 및
    상기 버퍼 내 상기 오염된 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 더 포함하는 방법.
  18. 제 15 항에 있어서,
    오염 패턴을 이용하여 상기 버퍼 내 상기 미가공 데이터를 오염시키는 단계는 상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함하는 방법.
  19. 제 18 항에 있어서,
    상기 메모리 컨트롤러로부터 상기 오염 패턴을 수신하는 단계; 및
    상기 마스크 레지스터에 상기 수신된 오염 패턴을 저장하는 단계를 더 포함하는 방법.
  20. 제 18 항에 있어서,
    상기 메모리 컨트롤러로부터 오염 패턴 식별자를 수신하는 단계를 포함하고, 그리고
    상기 데이터 칩 내 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계는 상기 오염 패턴 식별자에 응답하여 상기 데이터 칩 내 상기 마스크 레지스터로부터 상기 오염 패턴을 접근하는 단계를 포함하는 방법.
  21. 제 15 항에 있어서,
    상기 데이터 칩에서 메모리 컨트롤러 비활성화 신호를 수신하는 단계; 및
    상기 버퍼 내 상기 미가공 데이터를 상기 메모리 컨트롤러로 전송하는 단계를 더 포함하는 방법.
KR1020170058205A 2016-11-07 2017-05-10 Ddr 버스를 통해 dram 내의 ecc 정보를 전달하는 방법 KR102274593B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662418779P 2016-11-07 2016-11-07
US62/418,779 2016-11-07
US15/410,752 2017-01-19
US15/410,752 US10394648B2 (en) 2016-11-07 2017-01-19 Method to deliver in-DRAM ECC information through DDR bus

Publications (2)

Publication Number Publication Date
KR20180052068A true KR20180052068A (ko) 2018-05-17
KR102274593B1 KR102274593B1 (ko) 2021-07-08

Family

ID=62063731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170058205A KR102274593B1 (ko) 2016-11-07 2017-05-10 Ddr 버스를 통해 dram 내의 ecc 정보를 전달하는 방법

Country Status (5)

Country Link
US (3) US10394648B2 (ko)
JP (1) JP6858682B2 (ko)
KR (1) KR102274593B1 (ko)
CN (1) CN108074622B (ko)
TW (1) TWI733923B (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7042837B2 (ja) * 2017-10-31 2022-03-28 三菱重工機械システム株式会社 情報処理装置、情報処理装置の制御方法及びプログラム
KR102683747B1 (ko) * 2019-01-22 2024-07-11 에스케이하이닉스 주식회사 반도체 메모리 장치
WO2022109282A1 (en) * 2020-11-20 2022-05-27 Adrenalineip Method, system and apparatus to authenticate large bets
WO2022155798A1 (en) * 2021-01-19 2022-07-28 Alibaba Group Holding Limited Memory priming and initialization systems and methods
JP7253594B2 (ja) 2021-08-27 2023-04-06 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
KR20230095437A (ko) 2021-12-22 2023-06-29 삼성전자주식회사 메모리 시스템 및 이의 동작 방법
US12019503B2 (en) 2022-05-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for expandable memory error handling
CN117149681B (zh) * 2023-08-31 2024-08-02 中科驭数(北京)科技有限公司 轮询调度实现方法、装置、设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171202A1 (en) * 2004-08-02 2006-08-03 Kazuya Kawamoto Memory system and data writing method
US20090150646A1 (en) * 2007-12-10 2009-06-11 Spansion Llc Memory array search engine
KR20100075891A (ko) * 2007-09-25 2010-07-05 쌘디스크 코포레이션 자기 복구를 갖는 비휘발성 메모리
JP2011217182A (ja) * 2010-03-31 2011-10-27 Toshiba Corp メモリチップ、情報記憶システム、読み出し装置
KR20160110107A (ko) * 2015-03-10 2016-09-21 삼성전자주식회사 메모리 모듈

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5381540A (en) * 1990-08-13 1995-01-10 Dallas Semiconductor Corporation Interface: interrupt masking with logical sum and product options
WO1996032674A2 (en) * 1995-04-13 1996-10-17 Cirrus Logic, Inc. Semiconductor memory device for mass storage block access applications
US5875195A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Method and apparatus for error injection techniques
US6754858B2 (en) * 2001-03-29 2004-06-22 International Business Machines Corporation SDRAM address error detection method and apparatus
JP4112849B2 (ja) * 2001-11-21 2008-07-02 株式会社東芝 半導体記憶装置
JP3609794B2 (ja) * 2002-03-26 2005-01-12 株式会社東芝 トレースデータ圧縮装置、トレースデータ圧縮方法及びトレースデータ圧縮回路を内蔵したマイクロコンピュータ
TWI381387B (zh) * 2008-02-21 2013-01-01 Phison Electronics Corp 儲存裝置、控制器及其資料存取方法
US8255783B2 (en) 2008-04-23 2012-08-28 International Business Machines Corporation Apparatus, system and method for providing error protection for data-masking bits
US8533564B2 (en) * 2009-12-23 2013-09-10 Sandisk Technologies Inc. System and method of error correction of control data at a memory device
US8522122B2 (en) * 2011-01-29 2013-08-27 International Business Machines Corporation Correcting memory device and memory channel failures in the presence of known memory device failures
US9037949B1 (en) 2012-06-21 2015-05-19 Rambus Inc. Error correction in a memory device
US9305614B2 (en) * 2012-12-21 2016-04-05 Cypress Semiconductor Corporation Memory device with internal combination logic
US8862953B2 (en) 2013-01-04 2014-10-14 International Business Machines Corporation Memory testing with selective use of an error correction code decoder
EP2775652B1 (en) * 2013-03-07 2018-08-22 Viavi Solutions Deutschland GmbH Bit error pattern analyzer and method
US10210041B2 (en) * 2015-11-05 2019-02-19 SK Hynix Inc. Systems and methods for low latency copy operations in non-volatile memory
US10552252B2 (en) * 2016-08-29 2020-02-04 Seagate Technology Llc Patterned bit in error measurement apparatus and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060171202A1 (en) * 2004-08-02 2006-08-03 Kazuya Kawamoto Memory system and data writing method
KR20100075891A (ko) * 2007-09-25 2010-07-05 쌘디스크 코포레이션 자기 복구를 갖는 비휘발성 메모리
US20090150646A1 (en) * 2007-12-10 2009-06-11 Spansion Llc Memory array search engine
JP2011217182A (ja) * 2010-03-31 2011-10-27 Toshiba Corp メモリチップ、情報記憶システム、読み出し装置
KR20160110107A (ko) * 2015-03-10 2016-09-21 삼성전자주식회사 메모리 모듈

Also Published As

Publication number Publication date
JP2018077833A (ja) 2018-05-17
US10394648B2 (en) 2019-08-27
KR102274593B1 (ko) 2021-07-08
TW201818410A (zh) 2018-05-16
TWI733923B (zh) 2021-07-21
US20190266049A1 (en) 2019-08-29
CN108074622A (zh) 2018-05-25
US20180129561A1 (en) 2018-05-10
US10908993B2 (en) 2021-02-02
CN108074622B (zh) 2023-06-06
JP6858682B2 (ja) 2021-04-14
US10795764B2 (en) 2020-10-06
US20190266050A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
KR20180052068A (ko) Ddr 버스를 통해 dram 내의 ecc 정보를 전달하는 방법
EP3368984B1 (en) Temperature dependent multiple mode error correction
KR20160024966A (ko) 데이터 에러 교정용 회로, 장치, 및 방법
US20150331741A1 (en) Error correction processing circuit in memory and error correction processing method
KR20190117117A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN115562565A (zh) 存储器装置及维持其数据镜像完整性的方法
KR20180086816A (ko) 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
US20230376378A1 (en) Integrated circuit and method of operating same
CN116745849A (zh) 存储器装置保护
US11714704B2 (en) Modified checksum using a poison data pattern
US11775382B2 (en) Modified parity data using a poison data unit
US20240004751A1 (en) Intra-controllers for error correction code
KR20140071640A (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20240004759A1 (en) Cache line data protection
KR20210156713A (ko) 개선된 ecc 메모리 칩 인코더 및 디코더
KR102449346B1 (ko) 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
KR20180023079A (ko) 반도체시스템
US12072766B2 (en) Data protection and recovery
CN111989659B (zh) 事务元数据
US20240356566A1 (en) Fast multi-payload-length error-correcting system and methods
JP2016134166A (ja) 検索装置
CN117331747A (zh) 非缓存数据传送
WO2024220289A1 (en) Fast multi-payload-length error-correcting system and methods
WO2024220290A1 (en) Fast multi-payload-length error-correcting system and methods
WO2024186502A1 (en) Data protection and recovery

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant