KR20230030795A - 메모리 컨트롤러 및 이를 포함하는 메모리 장치 - Google Patents

메모리 컨트롤러 및 이를 포함하는 메모리 장치 Download PDF

Info

Publication number
KR20230030795A
KR20230030795A KR1020210112890A KR20210112890A KR20230030795A KR 20230030795 A KR20230030795 A KR 20230030795A KR 1020210112890 A KR1020210112890 A KR 1020210112890A KR 20210112890 A KR20210112890 A KR 20210112890A KR 20230030795 A KR20230030795 A KR 20230030795A
Authority
KR
South Korea
Prior art keywords
data
memory
read
read data
buffer
Prior art date
Application number
KR1020210112890A
Other languages
English (en)
Inventor
김호연
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020210112890A priority Critical patent/KR20230030795A/ko
Priority to US17/681,058 priority patent/US11789815B2/en
Priority to CN202210916375.7A priority patent/CN115732016A/zh
Publication of KR20230030795A publication Critical patent/KR20230030795A/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/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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 컨트롤러 및 이를 포함하는 메모리 장치가 제공된다. 몇몇 실시예들에 따른 메모리 장치는 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이를 포함하는 메모리 모듈, 및 메모리 모듈과 데이터를 송수신하며, 데이터를 바탕으로 복수의 메모리 셀들 중 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 탐지기를 포함하는 메모리 컨트롤러를 포함하되, 결함 탐지기는, 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키고, 반전 리드 데이터를 메모리 어레이로 전송하는 제1 인버터와, 리드 데이터를 저장하는 제1 버퍼와, 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 버퍼에 저장된 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와, XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와, 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와, 리드 데이터로부터 데이터를 뺀 UE(Uncorrectable Error) 유발 데이터를, 반전 리드 반전 리드 데이터로부터 데이터를 뺀 CE(Correctable Error) 유발 데이터로 변경하는 에러 패턴 변경부를 포함한다.

Description

메모리 컨트롤러 및 이를 포함하는 메모리 장치{Memory controller and the memory device comprising the same}
본 발명은 메모리 컨트롤러 및 이를 포함하는 메모리 장치에 관한 것이다.
컴포넌트 결함은 메모리 장치 내에서의 에러 발생의 공통적 요인 중 하나일 수 있다. 결함 컴포넌트들은 결함 메모리 칩들 또는 메모리 시스템 내에서의 메모리 장치들 사이에서 제공되는 결함 데이터 통로들을 포함할 수 있다. 결함 데이터 통로들은 예를 들어, 결함 핀들, 결함 데이터 트레이스들(traces), 꼬는 결함 와이어들(wires)로 인해 발생될 수 있다.
복수의 메모리 칩들을 포함하는 메모리 모듈 역시, 결함을 갖는 일부 메모리 칩으로 인해, 에러가 발생할 수 있다. 더 자세히는, 이러한 결함들로 인해 영구 결함들(permanent fault) 또는 하드 에러들이 발생될 수 있다. 이러한 영구 결함들은 싱글 비트 또는 열로 제한될 수도 있지만, 메모리 장치(예를 들어, DRAM(Dynamic Random Access Memory) 장치)에서 복수의 칩들에 대해, 동일한 위치에 있는 비트들에 또한 영향을 줄 수 있다.
따라서, 메모리 장치(예를 들어, DRAM(Dynamic Random Access Memory) 장치)에서 발생된 영구 결함들의 위치를 정확히 탐지하여, 에러 정정의 신뢰성을 향상시킬 필요성이 대두된다.
본 발명이 해결하고자 하는 기술적 과제는 에러 정정 동작의 신뢰성이 향상된 메모리 컨트롤러를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 에러 정정 동작의 신뢰성이 향상된 메모리 모듈을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 에러 정정 동작의 신뢰성이 향상된 메모리 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 장치는, 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이를 포함하는 메모리 모듈, 및 메모리 모듈과 데이터를 송수신하며, 데이터를 바탕으로 복수의 메모리 셀들 중 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 탐지기를 포함하는 메모리 컨트롤러를 포함하되, 결함 탐지기는, 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키고, 반전 리드 데이터를 메모리 어레이로 전송하는 제1 인버터와, 리드 데이터를 저장하는 제1 버퍼와, 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 버퍼에 저장된 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와, XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와, 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와, 리드 데이터로부터 데이터를 뺀 UE(Uncorrectable Error) 유발 데이터를, 반전 리드 반전 리드 데이터로부터 데이터를 뺀 CE(Correctable Error) 유발 데이터로 변경하는 에러 패턴 변경부를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 모듈은, 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이, 및 데이터를 송수신하며, 데이터를 바탕으로 복수의 메모리 셀들 중 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 탐지기를 포함하는 메모리 컨트롤러를 포함하되, 결함 탐지기는, 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키고, 반전 리드 데이터를 메모리 어레이로 전송하는 제1 인버터와, 리드 데이터를 저장하는 버퍼와, 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 버퍼에 저장된 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와, XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와, 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와, 리드 데이터로부터 데이터를 뺀 UE 유발 데이터를, 반전 리드 반전 리드 데이터로부터 데이터를 뺀 CE 유발 데이터로 변경하는 에러 패턴 변경부를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예에 따른 메모리 컨트롤러는, 외부로부터 데이터를 수신하는 메모리 인터페이스, 및 데이터를 송수신하며, 데이터를 바탕으로 결함이 발생된 데이터의 위치를 탐지하는 결함 탐지기를 포함하되, 결함 탐지기는, 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키는 제1 인버터와, 리드 데이터를 저장하는 버퍼와, 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 버퍼에 저장된 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와, XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와, 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와, 리드 데이터로부터 데이터를 뺀 UE 유발 데이터를, 반전 리드 반전 리드 데이터로부터 데이터를 뺀 CE 유발 데이터로 변경하는 에러 패턴 변경부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예들에 따른 메모리 장치를 설명하기 위한 예시적인 블록도이다.
도 2는 몇몇 실시예들에 따른 메모리 모듈을 설명하기 위한 예시적인 도면이다.
도 3은 메모리 모듈 내 칩을 설명하기 위한 예시적인 블록도이다.
도 4는 ECC 엔진을 설명하기 위한 예시적인 도면이다.
도 5는 도 4의 ECC 인코딩 회로(510)를 설명하는 예시적인 도면이다.
도 6은 도 4의 ECC 디코딩 회로(520)를 설명하는 예시적인 도면이다.
도 7은 몇몇 실시예들에 따른 결함 탐지기를 설명하기 위한 예시적인 블록도이다.
도 8은 몇몇 실시예들에 따른 결함 탐지기의 일부 루트에 따른 동작(R_1)을 설명하기 위한 예시적인 도면이다.
도 9는 몇몇 실시예들에 따른 결함 탐지기를 설명하기 위한 예시적인 블록도이다.
도 10은 몇몇 실시예들에 따른 결함 탐지기의 다른 루트에 따른 동작(R_2)을 설명하기 위한 예시적인 도면이다.
도 11 및 도 12는 몇몇 실시예들에 따른 메모리 장치를 설명하기 위한 예시적인 블록도들이다.
도 13은 몇몇 실시예들에 따른 복수의 칩의 동일한 위치의 메모리 셀을 설명하기 위한 예시적인 블록도들이다.
도 14 및 도 15는 몇몇 실시예들에 따른 메모리 장치의 동작을 설명하기 위한 예시적인 흐름도들이다.
도 16 및 도 17은 몇몇 실시예들에 따른 다른 메모리 모듈을 설명하기 위한 블록도이다.
도 18은 몇몇 실시예들에 따른 메모리 장치를 포함하는 메모리 시스템을 도시한 예시적인 도면이다.
도 19는 몇몇 실시예들에 따른 메모리 장치를 포함하는 데이터 센터를 도시한 예시적인 도면이다.
도 1은 몇몇 실시예들에 따른 메모리 장치를 설명하기 위한 예시적인 블록도이다.
도 1을 참조하면, 몇몇 실시예들에 따른 메모리 장치(10)는 메모리 모듈(100)과 메모리 컨트롤러(200)를 포함한다.
메모리 모듈(100)은 예를 들어, DIMM(Dual Inline Memory Module)일 수 있다. 이에 제한되지 않고, 메모리 모듈(100)은 SIMM(Single Inline Memory Module)일 수도 있다. 이하에서, 메모리 모듈(100)은 DIMM인 것으로 가정하고 설명한다. 도 2를 통해, 메모리 모듈(100)을 자세히 살펴본다.
도 2는 몇몇 실시예들에 따른 메모리 모듈을 설명하기 위한 예시적인 도면이다.
도 2를 참조하면, 메모리 모듈(100)은 복수의 메모리 칩들(Chip1 내지 Chip8)을 포함하는 랭크(110)와 입/출력 핀들(120)을 포함한다.
메모리 모듈(100)은 복수의 메모리 칩들(Chip1 내지 Chip8)을 포함하는 얇은 사각형 형상의 카드일 수 있다. 복수의 메모리 칩들(Chip1 내지 Chip8)은 하나의 랭크(110)를 형성할 수 있다. 메모리 모듈(100)에서 하나의 랭크(110)를 형성하는 칩의 개수는 본 도면에 제한되지 않는다.
메모리 모듈(100)에는 다양한 수동 장치(예를 들어, 저항 및 커패시터) 뿐만 아니라, 레지스터, 버터, 허브 장치, 및/또는 비휘발성 저장장치(예를 들어, 낸드 플래시 메모리) 중의 하나 이상을 포함할 수도 있고, 이들 모두는 메모리 모듈(100)에 장착될 수 있다.
입/출력 핀들(120)은 메모리 칩들(Chip1 내지 Chip8)에 저장된 데이터들을 외부로 전송할 수 있다. 또한, 입/출력 핀들(120)은 외부로부터 데이터를 읽어와 메모리 칩들(Chip1 내지 Chip8)에 데이터를 전송할 수 있다.
메모리 칩들(Chip1 내지 Chip8)에 대해서, 도 3을 통해 자세히 설명한다.
도 3은 메모리 모듈 내 칩을 설명하기 위한 예시적인 블록도이다.
도 3에서는 메모리 칩들(Chip1 내지 Chip8) 중 제1 메모리 칩(Chip1)에 대해서 설명한다. 제1 메모리 칩(Chip1)에 대한 설명이, 다른 나머지 메모리 칩들(Chip2 내지 Chip8)에도 적용될 수 있음은 물론이다.
메모리 칩(Chip1)은 복수의 뱅크들(Bank 0 내지 Bank N)(114-0 내지 114-N)을 포함한다(N은 자연수이다.). 복수의 뱅크들(Bank 0 내지 Bank N)(114-0 내지 114-N) 각각은 로우 디코더(112), 로우 버퍼(116), 컬럼 디코더(118)를 포함한다.
복수의 뱅크들(Bank 0 내지 Bank N) 각각은 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이를 포함한다. 이에 제한되지 않고, 복수의 뱅크들(Bank 0 내지 Bank N) 일부는 ECC 셀 어레이를 포함할 수 있다.
복수의 메모리 셀들은 DRAM(Dynamic Random Access Memory) 메모리 셀들 또는 SDRAM(Synchronous DRAM) 메모리 셀들일 수 있다. 이하에서, 복수의 메모리 셀들은 DRAM 메모리 셀들인 것으로 가정하고 설명한다.
로우 디코더(112)는 복수의 메모리 셀들의 행(row)들과 연결될 수 있다. 로우 디코더(112)는 복수의 메모리 셀들의 특정 행을 선택할 수 있다.
컬럼 디코더(118)는 복수의 메모리 셀들의 열(column)들과 연결될 수 있다. 컬럼 디코더(118)는 복수의 메모리 셀들의 특정 열을 선택할 수 있다.
로우 버퍼(116)는 복수의 메모리 셀들의 열들과 연결될 수 있다. 또한 로우 버퍼(116)는 복수의 페이지 버퍼들을 포함할 수 있다. 복수의 페이지 버퍼들은 쓰기 드라이버 또는 감지 증폭기로서 동작할 수 있다. 예를 들어, 로우 버퍼(116)는 특정 비트 라인을 통해 프로그램될 데이터에 대응하는 비트 라인 전압을 메모리 어레이에 인가할 수 있다. 다른 예를 들어, 로우 버퍼(116)는 특정 비트 라인의 전류 또는 전압을 감지하여 메모리 어레이에 저장된 데이터를 감지할 수도 있다.
다시 도 1을 참조하면, 메모리 컨트롤러(200)는 메모리 인터페이스(210), ECC 엔진(220), 결함 탐지기(230), 및 버퍼(240)를 포함할 수 있다.
메모리 컨트롤러(200)는 메모리 장치(10)의 동작을 전반적으로 제어할 수 있다. 메모리 컨트롤러(200)는 호스트(미도시)로부터 제공되는 명령어를 해석하고, 해석 결과에 따라 메모리 장치(10)의 전반적인 동작을 제어할 수 있다.
메모리 인터페이스(210)는 DDR3(dual data rate version 3, original release by JEDEC(Joint Electronic Device Engineering Council) on June 27, 2007, currently on release 21), DDR4(DDR version 4, initial specification published in September 2012 by JEDEC), LPDDR3(low power DDR version 3, JESD209-3B, Aug 2013 by JEDEC), LPDDR4(LOW POWER DOUBLE DATA RATE (LPDDR) version 4, JESD209-4, originally published by JEDEC in August 2014), WI02(Wide I/O 2 (Widel02), JESD229-2, originally published by JEDEC in August 2014), HBM(HIGH BANDWIDTH MEMORY DRAM, JESD235, originally published by JEDEC in October 2013), DDR5(DDR version 5, currently in discussion by JEDEC), LPDDR5(currently in discussion by JEDEC), WI03(Wide I/O 3, currently in discussion by JEDEC), HBM2 (HBM version 2), currently in discussion by JEDEC), 및/또는 다른 것들과 같은 다수의 메모리 기술들, 및 이러한 사양들의 파생물들 또는 확장물들에 기초하는 기술들과 호환 가능할 수 있다.
계속하여, 도 1을 참조하면, 버퍼(240)는 레지스터일 수 있다. 이에 제한되지 않고, 버퍼(240)는 DRAM, SDRAM, 또는 SRAM(Static Random Access Memory)일 수 있으나, 이에 제한되는 것은 아니다.
ECC 엔진(220)은 메모리 모듈(100) 내의 메모리 어레이에 저장된 데이터에 대해서 인코딩 동작을 수행하여, 패리티(parity)를 생성할 수 있다. ECC 엔진(220)은 패리티를 이용하여 메모리 모듈(100) 내의 메모리 어레이로부터 리드된 데이터의 에러 정정 동작을 수행할 수 있다.
더 자세히는, ECC 엔진(220)은 결함 탐지기(230)와 결합되어, 메모리 어레이로부터 리드된 데이터의 에러 정정 동작을 수행할 수 있다. 이때, ECC 엔진(220)은 결함 탐지기(230)로부터 탐지된 결함이 발생된 메모리 셀의 위치 및/또는 결함 탐지기(230)를 통해 패턴이 변경된 데이터를 바탕으로 메모리 어레이로부터 리드된 데이터의 에러 정정 동작을 수행할 수 있다.
먼저, ECC 엔진(220)의 동작을 도 4 내지 도 6을 통해 살펴본다.
도 4는 ECC 엔진을 설명하기 위한 예시적인 도면이다.
도 4를 참조하면, ECC 엔진(220)은 ECC 인코딩 회로(510)와 ECC 디코딩 회로(520)를 포함할 수 있다. ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 어레이(114)의 메모리 셀들에 기입될 기입 데이터(WData[0:63])에 대하여 패리티 비트들(ECCP[0:7])을 생성할 수 있다.
이하의 설명들에서, 데이터 및/또는 패리티의 비트 수는 예시적인 것으로, 본 명세서에 명시된 비트 수에 제한되는 것은 아니다.
패리티 비트들(ECCP[0:7])은 ECC 셀 어레이(115)에 저장될 수 있다. 실시예에 따라, ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 어레이(114)의 불량 셀을 포함하는 메모리 셀들에 기입될 기입 데이터(WData[0:63])에 대하여 패리티 비트들(ECCP[0:7])을 생성할 수 있다.
ECC 디코딩 회로(520)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 어레이(114)의 메모리 셀들로부터 독출되는 독출 데이터(RData[0:63])와 ECC 셀 어레이(115)에서 독출되는 패리티 비트들(ECCP[0:7])을 이용하여 에러 비트 데이터를 정정하고, 에러 정정된 데이터(Data[0:63])를 출력할 수 있다. 실시예에 따라, ECC 디코딩 회로(520)는 ECC 제어 신호(ECC_CON)에 응답하여 메모리 어레이(114)의 불량 셀을 포함하는 메모리 셀들로부터 독출되는 독출 데이터(RData[0:63])와 ECC 셀 어레이(115)에서 독출되는 패리티 비트들(ECCP[0:7])을 이용하여 에러 비트 데이터를 정정하고, 에러 정정된 데이터(Data[0:63])를 출력할 수 있다.
이때, 메모리 어레이(114)와 ECC 디코딩 회로(520) 사이에 결함 탐지기(230)가 배치될 수 있다. 즉, ECC 디코딩 회로(520)는 결함 탐지기(230)로부터 탐지된 결함이 발생된 메모리 셀의 위치 및/또는 결함 탐지기(230)를 통해 패턴이 변경된 데이터를 바탕으로 메모리 어레이로부터 리드된 데이터의 에러 정정 동작을 수행할 수 있다.
이하에서, 도 5를 통해, ECC 인코딩 회로(510)를 자세히 살펴보고, 도 6을 통해, ECC 디코딩 회로(520)를 자세히 살펴본다.
도 5는 도 4의 ECC 인코딩 회로(510)를 설명하는 예시적인 도면이다.
도 5를 참조하면, ECC 인코딩 회로(510)는 ECC 제어 신호(ECC_CON)에 응답하여 64 비트 기입 데이터(WData[0:63])와 베이시스 비트(Basis Bit, B[0:7])를 수신하고, XOR 어레이 연산을 이용하여 패리티 비트들(ECCP[0:7])을 발생하는 패리티 발생기(511)를 포함할 수 있다. 베이시스 비트(B[0:7])는 64 비트 기입 데이터(WData[0:63])에 대한 패리티 비트들(ECCP[0:7])을 발생시키기 위한 비트들로서, 예컨대, b'00000000 비트들로 구성될 수 있다. 베이시스 비트(B[0:7])는 b'00000000 비트들 대신에 다른 특정 비트들을 이용할 수 있다.
도 6은 도 4의 ECC 디코딩 회로(520)를 설명하는 예시적인 도면이다.
도 6을 참조하면, ECC 디코딩 회로(520)는 신드롬 발생기(521), 계수 계산기(522), 1-비트 에러 위치 검출기(523), 그리고 에러 정정기(524)를 포함한다. 신드롬 발생기(521)는 ECC 제어 신호(ECC_CON)에 응답하여 64 비트 독출 데이터와 8 비트의 패리티 비트들(ECCP[0:7])을 수신하고 XOR 어레이 연산을 이용하여 신드롬 데이터(S[0:7])를 발생할 수 있다. 계수 계산기(522)는 신드롬 데이터(S[0:7])를 이용하여 오류 위치 방정식의 계수를 산출할 수 있다. 오류 위치 방정식은 에러 비트의 역수를 근으로 하는 방정식이다. 1-비트 에러 위치 검출기(523)는 산출된 오류 위치 방정식을 이용하여 1 비트 에러의 위치를 계산할 수 있다. 에러 정정기(524)는 1-비트 에러 위치 검출기(523)의 검출 결과에 기초하여 1-비트 에러 위치를 결정할 수 있다. 에러 정정기(524)는 결정된 1-비트 에러 위치 정보에 따라 64 비트 독출 데이터(RData[0:63]) 중 에러가 발생한 비트의 로직 값을 반전시켜 에러를 정정하고, 에러 정정된 64 비트 데이터(Data[0:63])를 출력할 수 있다.
이하에서, 결함 탐지기(230)가 메모리 어레이로부터 리드된 데이터로부터 탐지된 결함이 발생된 메모리 셀의 위치 및/또는 결함 탐지기(230)를 통해 메모리 어레이로부터 리드된 데이터의 패턴이 변경된 데이터를 ECC 디코딩 회로(520)에 전송하는 동작을 구성과 함께 살펴본다.
도 7은 몇몇 실시예들에 따른 결함 탐지기를 설명하기 위한 예시적인 블록도이다.
도 7을 참조하면, 결함 탐지기(230)는 제1 인버터(231), 버퍼(232), 제2 인버터(233), XOR 연산기(234), 결함 위치 탐지부(235), 및 에러 패턴 변경부(236)를 포함할 수 있다.
제1 인버터(231) 및/또는 제2 인버터(233)는 입력된 데이터를 비트 단위로 반전시키는 인버터일 수 있다.
예를 들어, 제1 인버터(231)는 메모리 어레이(114)로부터 리드된 리드 데이터(Rdata)를 반전시켜, 반전 리드 데이터(Inv_Rdata)를 생성할 수 있다. 이때, 반전 리드 데이터(Inv_Rdata)는 다시 메모리 어레이(114)에 입력될 수 있다. 제2 인버터(233)는 메모리 어레이(114)에 입력된 반전 리드 데이터(Inv_Rdata)를 리드한 리드 반전 리드 데이터(Inv_Rdata_R)를 수신하여, 반전할 수 있다. 이때, 제2 인버터(233)는 리드 반전 리드 데이터(Inv_Rdata_R)를 반전하여 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)를 생성하여 에러 패턴 변경부(236)에 전송할 수 있다.
버퍼(232)는 레지스터일 수 있다. 이에 제한되지 않고, 버퍼(232)는 DRAM, SDRAM, 또는 SRAM일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 버퍼(232)는 리드 데이터(Rdata)를 임시로 저장할 수 있다.
XOR 연산기(234)는 버퍼(232)와 메모리 어레이(114)로부터 읽어들인 데이터를 입력받아, XOR 연산을 수행하여, 연산 데이터(Cal_data)를 출력할 수 있다. 예를 들어, XOR 연산기(234)는 리드 반전 리드 데이터(Inv_Rdata_R)와 버퍼(232)에 저장된 리드 데이터(Rdata)를 수신하여, XOR 연산을 수행할 수 있다. XOR 연산기(234)는 리드 반전 리드 데이터(Inv_Rdata_R)와 리드 데이터(Rdata)에 대한 XOR 연산을 수행하여 연산 데이터(Cal_data)를 생성하여, 결함 위치 탐지부(235)로 전송할 수 있다.
결함 위치 탐지부(235)는 연산 데이터(Cal_data)를 바탕으로, 에러가 발생된 주소를 찾아낼 수 있다. 예를 들어, 결함 위치 탐지부(235)는 연산 데이터(Cal_data)의 비트 중 0 값을 갖는 위치가 에러가 발생된 위치로 탐지할 수 있다.
에러 패턴 변경부(236)는 제2 인버터(233)로부터 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)를 수신하여, 리드 데이터(Rdata)로부터 발생된 에러 패턴을 변경할 수 있다. 예를 들어, 에러 패턴 변경부(236)는 리드 데이터(Rdata)로부터 발생된 에러 패턴이 교정 불가능한 에러(UE: Uncorrectable Error)를 유발시키는 데이터(Gen_UE)인 경우, UE 유발 데이터(GEN_UE)를 교정 가능한 에러(CE: Correctable Error)를 유발시키는 데이터(Gen_CE)로 변경시켜줄 수 있다.
결함 탐지기(230)는 리드 데이터(Rdata)의 에러 위치 정보 및/또는 CE 유발 데이터(GEN_CE)를 ECC 디코딩 회로(520)에 전송할 수 있다. ECC 디코딩 회로(520)는 결함 탐지기(230)로부터 수신한 에러 위치 정보 및/또는 CE 유발 데이터(GEN_CE)를 바탕으로, 도 6을 통해 상술된 ECC 디코딩을 수행할 수 있다.
먼저, 결함 탐지기(230)가 제1 루트(R_1)를 통해, 에러가 발생된 주소를 탐지하는 동작을 도 8을 통해 살펴본다.
도 8은 몇몇 실시예들에 따른 결함 탐지기의 일부 루트에 따른 동작(R_1)을 설명하기 위한 예시적인 도면이다.
도 7 및 도 8을 참조하면, 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)를 01110000으로 가정한다. 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)의 값과 비트 수는 본 도면에 제한되는 것은 아니다.
메모리 어레이(114)에 저장된 원본 데이터(Ori_data)를 리드하는 과정에서, 영구 결함으로 인해, 리드 데이터(Rdata)는 원본 데이터(Ori_data)와 다른 값을 가질 수 있다.
예를 들어, 메모리 어레이(114)의 영구 결함으로 인해, 데이터의 두번째 비트가 무조건 1로 읽히는 결함이 발생된다고 가정한다(빗금친 Stuck at 1 Fault 부분). 또한, 메모리 어레이(114)의 영국 결함으로 인해, 데이터의 여섯번째 비트와, 일곱번째 비트가 무조건 0으로 읽히는 결함이 발생된다고 가정한다(점패턴된 Stuck at 0 Fault 부분).
즉, 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)를 리드한 리드 데이터(Rdata)는 00010010 값을 갖게 된다.
이때, 리드 데이터(Rdata)를 버퍼(232)에 임시로 저장한다.
제1 인버터(231)는 리드 데이터(Rdata)를 비트 단위로 반전한 반전 리드 데이터(Inv_Rdata)를 생성할 수 있다. 즉, 반전 리드 데이터(Inv_Rdata)는 11101101 값을 갖게 된다. 제1 인버터(231)는 반전 리드 데이터(Inv_Rdata)를 다시 메모리 어레이(114)로 전송한다.
다시, 결함 탐지기(230)는 메모리 어레이(114)에 저장된 반전 리드 데이터(Inv_Rdata)를 리드한다. 이때, 메모리 어레이(114)의 영구 결함으로 인해, 반전 리드 데이터(Inv_Rdata)를 리드한 리드 반전 리드 데이터(Inv_Rdata_R)는 10001111 값을 갖게 된다.
XOR 연산기(234)는 리드 반전 리드 데이터(Inv_Rdata_R)와 버퍼(232)에 저장되어 있던 리드 데이터(Rdata)에 대해 XOR 연산을 수행한다. 이를 통해, 연산 데이터(Cal_data)를 생성할 수 있다. 즉, 연산 데이터(Cal_data)는 10011101 값을 가질 수 있다. XOR 연산기(234)는 연산 데이터(Cal_data)를 결함 위치 탐지부(235)로 전송한다.
결함 위치 탐지부(235)는 연산 데이터(Cal_data)를 바탕으로, 0 값을 갖는 위치에서 에러가 발생했다는 것을 탐지할 수 있다. 즉, 결함 위치 탐지부(235)는 연산 데이터(Cal_data)에서 0이 발생된 두번째 비트, 여섯번째 비트, 그리고 일곱번째 비트에 대해, 에러가 발생된 위치라는 탐지 결과를 생성할 수 있다. 결함 위치 탐지부(235)는 메모리 어레이(114)의 두번째 비트, 여섯번째 비트, 그리고 일곱번째 비트가 영구 결함이 발생된 위치라는 정보를 ECC 디코딩 회로(520)에 전송할 수 있다. ECC 디코딩 회로(520)는 해당 정보를 바탕으로, ECC 디코딩을 수행할 수 있다.
도 9 및 도 10을 통해, 몇몇 실시예들에 따른 메모리 장치(10)의 제2 경로(R_2)를 통해, UE 유발 데이터(Gen_UE)를, CE 유발 데이터(Gen_CE)로 변경시켜 ECC 디코딩 회로(520)에 전송하는 동작을 살펴본다.
도 9는 몇몇 실시예들에 따른 결함 탐지기를 설명하기 위한 예시적인 블록도이다. 도 10은 몇몇 실시예들에 따른 결함 탐지기의 다른 루트에 따른 동작(R_2)을 설명하기 위한 예시적인 도면이다. 참고적으로, 도 9의 구성은 도 7의 구성과 같으며, 제1 경로(R_1)와 제2 경로(R_2)의 차이를 명확히 확인하기 위해 별도의 도면으로 구성시켰다.
도 9 및 도 10을 참조하면, 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)를 01011000으로 가정한다. 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)의 값과 비트 수는 본 도면에 제한되는 것은 아니다.
메모리 어레이(114)에 저장된 원본 데이터(Ori_data)를 리드하는 과정에서, 영구 결함으로 인해, 리드 데이터(Rdata)는 원본 데이터(Ori_data)와 다른 값을 가질 수 있다.
예를 들어, 메모리 어레이(114)의 영구 결함으로 인해, 데이터의 두번째, 세번째, 및 일곱번째 비트가 무조건 0으로 읽히는 결함이 발생된다고 가정한다(점패턴된 Stuck at 0 Fault 부분).
즉, 메모리 어레이(114)에 저장되어 있던, 원본 데이터(Ori_data)를 리드한 리드 데이터(Rdata)는 00010000 값을 갖게 된다.
이때, 원본 데이터(Ori_data)에 대해, 교정 불가능한 에러(UE)를 유발하는 UE 유발 데이터(GEN_UE)는 리드 데이터(Rdata)로부터 원본 데이터(Ori_data)를 뺀 값을 갖게 된다. 즉, UE 유발 데이터(GEN_UE)는 01001000 값을 갖게 된다.
제1 인버터(231)는 리드 데이터(Rdata)를 비트 단위로 반전한 반전 리드 데이터(Inv_Rdata)를 생성할 수 있다. 즉, 반전 리드 데이터(Inv_Rdata)는 11101111 값을 갖게 된다. 제1 인버터(231)는 반전 리드 데이터(Inv_Rdata)를 다시 메모리 어레이(114)로 전송한다.
다시, 결함 탐지기(230)는 메모리 어레이(114)에 저장된 반전 리드 데이터(Inv_Rdata)를 리드한다. 이때, 메모리 어레이(114)의 영구 결함으로 인해, 반전 리드 데이터(Inv_Rdata)를 리드한 리드 반전 리드 데이터(Inv_Rdata_R)는 10100011 값을 갖게 된다.
이후, 제2 인버터(233)는 리드 반전 리드 데이터(Inv_Rdata_R)를 비트 단위로 반전한 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)를 생성할 수 있다. 즉, 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)는 01011100 값을 갖게 된다.
에러 패턴 변경부(236)는 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)를 바탕으로 CE 유발 데이터(GEN_CE)를 생성할 수 있다. 즉, 에러 패턴 변경부(236)는 반전 리드 반전 리드 데이터(Inv_Inv_Rdata_R)로부터 원본 데이터(Ori_data)를 뺀 값을 CE 유발 데이터(GEN_CE)로 생성할 수 있다. 즉, 에러 패턴 변경부(236)는 UE 유발 데이터(GEN_UE)를 CE 유발 데이터(GEN_CE)로 변경하여, ECC 디코딩 회로(520)로 전달할 수 있다. ECC 디코딩 회로(520)는 CE 유발 데이터(GEN_CE)를 바탕으로, ECC 디코딩을 수행할 수 있다.
도 11 및 도 12는 몇몇 실시예들에 따른 메모리 장치를 설명하기 위한 예시적인 블록도들이다.
도 11을 참조하면, 몇몇 실시예들에 따른 다른 메모리 장치(10)는 결함 탐지기(230)로부터 도출된 영구 결함 발생 위치 정보 및/또는 CE 유발 데이터(GEN_CE)를 버퍼(240)에 저장할 수 있다.
또는, 도 12를 참조하면, 결함 탐지기(230)는 버퍼(237)를 더 포함할 수 있다. 즉, 결함 위치 탐지부(235)로부터 도출된 영구 결함 발생 위치 정보 및/또는 에러 패턴 변경부(236)로부터 도출된 CE 유발 데이터(GEN_CE)를 결함 탐지기(230) 내부의 버퍼(237)에 임시로 저장할 수 있다.
버퍼(237)는 레지스터일 수 있다. 이에 제한되지 않고, 버퍼(237)는 DRAM, SDRAM, 또는 SRAM일 수 있으나, 이에 제한되는 것은 아니다.
도 13은 몇몇 실시예들에 따른 복수의 칩의 동일한 위치의 메모리 셀을 설명하기 위한 예시적인 블록도들이다.
도 13을 참조하면, 복수의 칩들(Chip1 내지 Chip8)에 포함된 각각의 복수의 뱅크들(Bank 0 내지 Bank N) 중 동일한 위치에 저장된 데이터들(130-0 내지 130-8)이 존재할 수 있다.
이때, 도 1 내지 도 12를 통해 상술된, 영구 결함 발생 위치 정보(예를 들어, 130-0)를 제1 메모리 칩(Chip1)에서 찾아냈다고 가정한다. 몇몇 실시예들에 따른 메모리 장치는 제1 메모리 칩(Chip1)을 통해 찾아낸 영구 결함 발생 위치 정보(예를 들어, 130-0)를 바탕으로, 다른 메모리 칩들(Chip2 내지 Chip8)의 동일한 위치(예를 들어, 130-1 내지 130-7)에도 영구 결함이 발생되었다고 판단할 수 있다.
즉, 하나의 칩(예를 들어, 제1 메모리 칩(Chip1))에서 찾아낸 영구 결함이 발생할 위치에 대한 정보를 바탕으로, 나머지 메모리 칩들(Chip2 내지 Chip8)에 영구 결함이 발생할 위치를 예측할 수 있다.
도 14 및 도 15는 몇몇 실시예들에 따른 메모리 장치의 동작을 설명하기 위한 예시적인 흐름도들이다.
도 1, 도 7, 도 9, 도 11, 도 12, 및 도 14를 참조하면, 먼저, 단일 칩에서 에러가 발생한 경우를 가정한다(S100).
몇몇 실시예들에 따른 제1 경로(R_1) 및 제2 경로(R_2)를 통해 도출된, 영구 결함 발생 위치 정보 및/또는 에러 패턴 변경부(236)로부터 도출된 CE 유발 데이터(GEN_CE)를 버퍼(237, 혹은 240)에 기록한다. 이때, CE 유발 데이터(GEN_CE)는 ECC 디코딩 회로(520)를 통해, 신드롬을 발생시킨 형태로 버퍼(240)에 저장될 수 있다(S110).
이후, 메모리 컨트롤러(200)는 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보가 고정되었는지 판단한다(S120). 예를 들어, 메모리 컨트롤러(200)는 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보가 사용자가 지정한 임의의 값 이상의 횟수로 변경되지 않으면 고정된 영구 결함 발생 위치 정보라고 판단할 수 있다. 임의의 값은 0 이상의 정수일 수 있다.
만약, 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보가 고정되어 있지 않다고 판단된 경우(N), 메모리 컨트롤러(200)는 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보가 영구 결함 발생 위치 정보가 아님으로 판단하고, 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보를 삭제할 수 있다(S140). 이와 함께, 메모리 컨트롤러(200)는 메모리 장치의 사용자에게 알림을 제공할 수도 있다(S140).
만약, 버퍼(237, 혹은 240)에 기록된 영구 결함 발생 위치 정보가 고정되어 있다고 판단한 경우(Y), 메모리 컨트롤러(200)는 버퍼(240)에 기록된 신드롬이 싱글 비트 에러(SBE: Single Bit Error)인지 판단한다(S130).
만약, 버퍼(240)에 기록된 신드롬이 싱글 비트 에러(SBE)가 아니라고 판단된다면(N), 메모리 컨트롤러(200)는 버퍼(240)에 기록된 신드롬 정보를 삭제할 수 있다(S140). 이와 함께, 메모리 컨트롤러(200)는 메모리 장치의 사용자에게 알림을 제공할 수도 있다(S140).
만약, 버퍼(240)에 기록된 신드롬이 싱글 비트 에러(SBE)라고 판단된다면(Y), 버퍼(237, 혹은 240)에 기록된 정보들을 유지시킨다.
도 1, 도 7, 도 9, 도 11, 도 12, 및 도 15를 참조하면, 먼저, 멀티 칩에서 에러가 발생한 경우를 가정한다(S200).
메모리 컨트롤러(200)는 버퍼(237, 혹은 240)에 기록된 에러 관련 정보들(예를 들어, 영구 결함 발생 위치 정보 및/또는 CE 유발 데이터(GEN_CE) 정보들)의 히스토리를 검색한다(S210).
이후, 메모리 컨트롤러(200)는 버퍼(237, 혹은 240)에 기록된 에러 관련 정보들을 바탕으로, 싱글 비트 에러 주소가 존재하는지 판단한다(S220).
만약, 버퍼(237, 혹은 240)에 기록된 에러 관련 정보들을 바탕으로, 싱글 비트 에러 주소가 존재하지 않는다고 판단되면, 멀티 칩에 발생된 에러가 교정 불가능한 에러(UE)인 것으로 판단한다(S240).
만약, 버퍼(237, 혹은 240)에 기록된 에러 관련 정보들을 바탕으로, 싱글 비트 에러 주소가 존재한다고 판단되면(Y), ECC 디코딩 회로(520)를 통해 수행될 수 있는 이레이져(erasure) 디코딩이 성공되었는지 판단한다(S230).
만약, ECC 디코딩 회로(520)를 통해 수행될 수 있는 이레이져(erasure) 디코딩이 성공되었다고 판단되지 않는다면(N), 멀티 칩에 발생된 에러가 교정 불가능한 에러(UE)인 것으로 판단한다(S240).
만약, ECC 디코딩 회로(520)를 통해 수행될 수 있는 이레이져(erasure) 디코딩이 성공되었다고 판단된다면(Y), 멀티 칩에 발생된 에러가 교정 가능한 에러(CE)인 것으로 판단하고, ECC 디코딩 회로(520)를 통해 디코딩을 수행한다(S250).
도 16 및 도 17은 몇몇 실시예들에 따른 다른 메모리 모듈을 설명하기 위한 블록도이다.
도 16을 참조하면, 몇몇 실시예들에 따른 메모리 컨트롤러(200)는 메모리 모듈(100) 내에 탑재될 수도 있다.
도 17을 참조하면, 몇몇 실시예들에 따른 메모리 모듈(100)은 버퍼(237)를 메모리 컨트롤러(200) 외부에 배치할 수 있다.
도 18은 몇몇 실시예들에 따른 메모리 장치를 포함하는 메모리 시스템을 도시한 예시적인 도면이다.
도 18을 참조하면, 메모리 시스템(1000)은 기본적으로 휴대용 통신 단말기(mobile phone), 스마트폰(smart phone), 태블릿 PC(tablet personal computer), 웨어러블 기기, 헬스케어 기기 또는 IOT(internet of things) 기기와 같은 모바일(mobile) 시스템일 수 있다. 하지만 도 18의 메모리 시스템(1000)은 반드시 모바일 시스템에 한정되는 것은 아니고, 개인용 컴퓨터(personal computer), 랩탑(laptop) 컴퓨터, 서버(server), 미디어 재생기(media player) 또는 내비게이션(navigation)과 같은 차량용 장비(automotive device) 등이 될 수도 있다.
도 18을 참조하면, 메모리 시스템(1000)은 메인 프로세서(main processor)(1100), 메모리 모듈(1200a, 1200b) 및 스토리지 장치(1300a, 1300b)를 포함할 수 있으며, 추가로 촬영 장치(image capturing device)(1410), 사용자 입력 장치(user input device)(1420), 센서(1430), 통신 장치(1440), 디스플레이(1450), 스피커(1460), 전력 공급 장치(power supplying device)(1470) 및 연결 인터페이스(connecting interface)(1480) 중 하나 이상을 포함할 수 있다.
메인 프로세서(1100)는 메모리 시스템(1000)의 전반적인 동작, 보다 구체적으로는 메모리 시스템(1000)을 이루는 다른 구성 요소들의 동작을 제어할 수 있다. 이와 같은 메인 프로세서(1100)는 범용 프로세서, 전용 프로세서 또는 애플리케이션 프로세서(application processor) 등으로 구현될 수 있다.
메인 프로세서(1100)는 하나 이상의 CPU 코어(1110)를 포함할 수 있으며, 메모리 모듈(1200a, 1200b) 및/또는 스토리지 장치(1300a, 1300b)를 제어하기 위한 컨트롤러(1120)를 더 포함할 수 있다.
컨트롤러(1120)는 도 1 내지 도 17을 통해 상술된 메모리 컨트롤러(200)일 수 있다.
실시예에 따라서는, 메인 프로세서(1100)는 AI(artificial intelligence) 데이터 연산 등 고속 데이터 연산을 위한 전용 회로인 가속기(accelerator)(1130)를 더 포함할 수 있다. 이와 같은 가속기(1130)는 GPU(Graphics Processing Unit), NPU(Neural Processing Unit) 및/또는 DPU(Data Processing Unit) 등을 포함할 수 있으며, 메인 프로세서(1100)의 다른 구성 요소와는 물리적으로 독립된 별개의 칩(chip)으로 구현될 수도 있다.
메모리 모듈(1200a, 1200b)는 메모리 시스템(1000)의 주기억 장치로 사용될 수 있으며, SRAM 및/또는 DRAM 등의 휘발성 메모리를 포함할 수 있으나, 플래시 메모리, PRAM 및/또는 RRAM 등의 비휘발성 메모리를 포함할 수도 있다. 메모리 모듈(1200a, 1200b)는 메인 프로세서(1100)와 동일한 패키지 내에 구현되는 것도 가능하다. 메모리 모듈(1200a, 1200b)은 도 1 내지 도 17을 통해 상술된 메모리 모듈(100)일 수 있다.
스토리지 장치(1300a, 1300b)는 전원 공급 여부와 관계 없이 데이터를 저장하는 비휘발성 저장 장치로서 기능할 수 있으며, 메모리 모듈(1200a, 1200b)에 비해 상대적으로 큰 저장 용량을 가질 수 있다. 스토리지 장치(1300a, 1300b)는 스토리지 컨트롤러(1310a, 1310b)와, 스토리지 컨트롤러(1310a, 1310b)의 제어 하에 데이터를 저장하는 비휘발성 메모리(non-volatile memory, NVM)(1320a, 1320b)를 포함할 수 있다. 비휘발성 메모리(1320a, 1320b)는 2D(2-dimensional) 구조 혹은 3D(3-dimensional) V-NAND(Vertical NAND) 구조의 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다.
스토리지 장치(1300a, 1300b)는 메인 프로세서(1100)와는 물리적으로 분리된 상태로 메모리 시스템(1000)에 포함될 수도 있고, 메인 프로세서(1100)와 동일한 패키지 내에 구현될 수도 있다. 또한, 스토리지 장치(1300a, 1300b)는 SSD(solid state device) 혹은 메모리 카드(memory card)와 같은 형태를 가짐으로써, 후술할 연결 인터페이스(1480)와 같은 인터페이스를 통해 메모리 시스템(1000)의 다른 구성 요소들과 탈부착 가능하도록 결합될 수도 있다. 이와 같은 스토리지 장치(1300a, 1300b)는 UFS(Universal Flash Storage), eMMC(embedded multi-media card) 혹은 NVMe(non-volatile memory express)와 같은 표준 규약이 적용되는 장치일 수 있으나, 반드시 이에 한정되는 건 아니다.
촬영 장치(1410)는 정지 영상 또는 동영상을 촬영할 수 있으며, 카메라(camera), 캠코더(camcorder) 및/또는 웹캠(webcam) 등일 수 있다.
사용자 입력 장치(1420)는 메모리 시스템(1000)의 사용자로부터 입력된 다양한 유형의 데이터를 수신할 수 있으며, 터치 패드(touch pad), 키패드(keyboard), 키보드(keyboard), 마우스(mouse) 및/또는 마이크(microphone) 등일 수 있다.
센서(1430)는 메모리 시스템(1000)의 외부로부터 획득될 수 있는 다양한 유형의 물리량을 감지하고, 감지된 물리량을 전기 신호로 변환할 수 있다. 이와 같은 센서(1430)는 온도 센서, 압력 센서, 조도 센서, 위치 센서, 가속도 센서, 바이오 센서(biosensor) 및/또는 자이로스코프(gyroscope) 센서 등일 수 있다.
통신 장치(1440)는 다양한 통신 규약에 따라 메모리 시스템(1000) 외부의 다른 장치들과의 사이에서 신호의 송신 및 수신을 수행할 수 있다. 이와 같은 통신 장치(1440)는 안테나, 트랜시버(transceiver) 및/또는 모뎀(MODEM) 등을 포함하여 구현될 수 있다.
디스플레이(1450) 및 스피커(1460)는 메모리 시스템(1000)의 사용자에게 각각 시각적 정보와 청각적 정보를 출력하는 출력 장치로 기능할 수 있다.
전력 공급 장치(1470)는 메모리 시스템(1000)에 내장된 배터리(도시 안함) 및/또는 외부 전원으로부터 공급되는 전력을 적절히 변환하여 메모리 시스템(1000)의 각 구성 요소들에게 공급할 수 있다.
연결 인터페이스(1480)는 메모리 시스템(1000)과, 메모리 시스템(1000)에 연결되어 시스템(1000과 데이터를 주고받을 수 있는 외부 장치 사이의 연결을 제공할 수 있다. 연결 인터페이스(1480)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe, IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC, UFS, eUFS(embedded Universal Flash Storage), CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
도 19는 몇몇 실시예들에 따른 메모리 장치를 포함하는 데이터 센터를 도시한 예시적인 도면이다.
도 19를 참조하면, 데이터 센터(3000)는 각종 데이터를 모아두고 서비스를 제공하는 시설로서, 데이터 스토리지 센터라고 지칭될 수도 있다. 데이터 센터(3000)는 검색 엔진 및 데이터 베이스 운용을 위한 시스템일 수 있으며, 은행 등의 기업 또는 정부기관에서 사용되는 컴퓨팅 시스템일 수 있다. 데이터 센터(3000)는 애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)을 포함할 수 있다. 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 실시예에 따라 다양하게 선택될 수 있고, 애플리케이션 서버들(3100 내지 3100n)의 개수 및 스토리지 서버들(3200 내지 3200m)의 개수는 서로 다를 수 있다.
애플리케이션 서버(3100) 또는 스토리지 서버(3200)는 프로세서(3110, 3210) 및 메모리(3120, 3220) 중 적어도 하나를 포함할 수 있다. 스토리지 서버(3200)를 예시로 설명하면, 프로세서(3210)는 스토리지 서버(3200)의 전반적인 동작을 제어할 수 있고, 메모리(3220)에 액세스하여 메모리(3220)에 로딩된 명령어 및/또는 데이터를 실행할 수 있다. 메모리(3220)는 도 1 내지 도 17을 통해 상술된 메모리 모듈(100)일 수 있다.
메모리(3220)는 DDR SDRAM(Double Data Rate Synchronous DRAM), HBM(High Bandwidth Memory), HMC(Hybrid Memory Cube), DIMM(Dual In-line Memory Module), Optane DIMM 및/또는 NVMDIMM(Non-Volatile DIMM)일 수 있다. 실시예에 따라, 스토리지 서버(3200)에 포함되는 프로세서(3210)의 개수 및 메모리(3220)의 개수는 다양하게 선택될 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)는 프로세서-메모리 페어를 제공할 수 있다. 일 실시예에서, 프로세서(3210)와 메모리(3220)의 개수는 서로 다를 수도 있다. 프로세서(3210)는 단일 코어 프로세서 또는 다중 코어 프로세서를 포함할 수 있다. 스토리지 서버(3200)에 대한 상기 설명은, 애플리케이션 서버(3100)에도 유사하게 적용될 수 있다. 실시예에 따라, 애플리케이션 서버(3100)는 스토리지 장치(3150)를 포함하지 않을 수도 있다. 스토리지 서버(3200)는 적어도 하나 이상의 스토리지 장치(3250)를 포함할 수 있다. 스토리지 서버(3200)에 포함되는 스토리지 장치(3250)의 개수는 실시예에 따라 다양하게 선택될 수 있다.
애플리케이션 서버들(3100 내지 3100n) 및 스토리지 서버들(3200 내지 3200m)은 네트워크(3300)를 통해 서로 통신할 수 있다. 네트워크(3300)는 FC(Fibre Channel) 또는 이더넷(Ethernet) 등을 이용하여 구현될 수 있다. 이 때, FC는 상대적으로 고속의 데이터 전송에 사용되는 매체이며, 고성능/고가용성을 제공하는 광 스위치를 사용할 수 있다. 네트워크(3300)의 액세스 방식에 따라 스토리지 서버들(3200 내지 3200m)은 파일 스토리지, 블록 스토리지, 또는 오브젝트 스토리지로서 제공될 수 있다.
일 실시예에서, 네트워크(3300)는 SAN(Storage Area Network)와 같은 스토리지 전용 네트워크일 수 있다. 예를 들어, SAN은 FC 네트워크를 이용하고 FCP(FC Protocol)에 따라 구현된 FC-SAN일 수 있다. 다른 예를 들어, SAN은 TCP/IP 네트워크를 이용하고 iSCSI(SCSI over TCP/IP 또는 Internet SCSI) 프로토콜에 따라 구현된 IP-SAN일 수 있다. 다른 실시예에서, 네트워크(3300)는 TCP/IP 네트워크와 같은 일반 네트워크일 수 있다. 예를 들어, 네트워크(3300)는 FCoE(FC over Ethernet), NAS(Network Attached Storage), NVMe-oF(NVMe over Fabrics) 등의 프로토콜에 따라 구현될 수 있다.
이하에서는, 애플리케이션 서버(3100) 및 스토리지 서버(3200)를 중심으로 설명하기로 한다. 애플리케이션 서버(3100)에 대한 설명은 다른 애플리케이션 서버(3100n)에도 적용될 수 있고, 스토리지 서버(3200)에 대한 설명은 다른 스토리지 서버(3200m)에도 적용될 수 있다.
애플리케이션 서버(3100)는 사용자 또는 클라이언트가 저장 요청한 데이터를 네트워크(3300)를 통해 스토리지 서버들(3200 내지 3200m) 중 하나에 저장할 수 있다. 또한, 애플리케이션 서버(3100)는 사용자 또는 클라이언트가 독출 요청한 데이터를 스토리지 서버들(3200 내지 3200m) 중 하나로부터 네트워크(3300)를 통해 획득할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 웹 서버 또는 DBMS(Database Management System) 등으로 구현될 수 있다.
애플리케이션 서버(3100)는 네트워크(3300)를 통해 다른 애플리케이션 서버(3100n)에 포함된 메모리(3120n) 또는 스토리지 장치(3150n)에 액세스할 수 있고, 또는 네트워크(3300)를 통해 스토리지 서버들(3200-3200m)에 포함된 메모리들(3220-3220m) 또는 스토리지 장치(3250-3250m)에 액세스할 수 있다. 이로써, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m)에 저장된 데이터에 대해 다양한 동작들을 수행할 수 있다. 예를 들어, 애플리케이션 서버(3100)는 애플리케이션 서버들(3100-3100n) 및/또는 스토리지 서버들(3200-3200m) 사이에서 데이터를 이동 또는 카피(copy)하기 위한 명령어를 실행할 수 있다. 이 때 데이터는 스토리지 서버들(3200-3200m)의 스토리지 장치(3250-3250m)로부터 스토리지 서버들(3200-3200m)의 메모리들(3220-3220m)을 거쳐서, 또는 바로 애플리케이션 서버들(3100-3100n)의 메모리(3120-3120n)로 이동될 수 있다. 네트워크(3300)를 통해 이동하는 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 서버(3200)를 예시로 설명하면, 인터페이스(3254)는 프로세서(3210)와 컨트롤러(3251)의 물리적 연결 및 NIC(Network InterConnect)(3240)와 컨트롤러(3251)의 물리적 연결을 제공할 수 있다. 예를 들어, 인터페이스(3254)는 스토리지 장치(3250)를 전용 케이블로 직접 접속하는 DAS(Direct Attached Storage) 방식으로 구현될 수 있다. 또한, 예를 들어, 인터페이스(3254)는 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral Component Interconnection), PCIe(PCI express), NVMe(NVM express), IEEE 1394, USB(universal serial bus), SD(secure digital) 카드, MMC(multi-media card), eMMC(embedded multi-media card), UFS(Universal Flash Storage), eUFS(embedded Universal Flash Storage), 및/또는 CF(compact flash) 카드 인터페이스 등과 같은 다양한 인터페이스 방식으로 구현될 수 있다.
스토리지 서버(3200)는 스위치(3230) 및 NIC(3240)을 더 포함할 수 있다. 스위치(3230)는 프로세서(3210)의 제어에 따라 프로세서(3210)와 스토리지 장치(3250)를 선택적으로 연결시키거나, NIC(3240)와 스토리지 장치(3250)를 선택적으로 연결시킬 수 있다.
일 실시예에서 NIC(3240)는 네트워크 인터페이스 카드, 네트워크 어댑터 등을 포함할 수 있다. NIC(3240)는 유선 인터페이스, 무선 인터페이스, 블루투스 인터페이스, 광학 인터페이스 등에 의해 네트워크(3300)에 연결될 수 있다. NIC(3240)는 내부 메모리, DSP(Digital Signal Processor), 호스트 버스 인터페이스 등을 포함할 수 있으며, 호스트 버스 인터페이스를 통해 프로세서(3210) 및/또는 스위치(3230) 등과 연결될 수 있다. 호스트 버스 인터페이스는, 앞서 설명한 인터페이스(3254)의 예시들 중 하나로 구현될 수도 있다. 일 실시예에서, NIC(3240)는 프로세서(3210), 스위치(3230), 스토리지 장치(3250) 중 적어도 하나와 통합될 수도 있다.
스토리지 서버들(3200-3200m) 또는 애플리케이션 서버들(3100-3100n)에서 프로세서는 스토리지 장치(3150-3150n, 3250-3250m) 또는 메모리(3120-3120n, 3220-3220m)로 커맨드를 전송하여 데이터를 프로그램하거나 리드할 수 있다. 이 때 데이터는 ECC(Error Correction Code) 엔진을 통해 에러 정정된 데이터일 수 있다. 데이터는 데이터 버스 변환(Data Bus Inversion: DBI) 또는 데이터 마스킹(Data Masking: DM) 처리된 데이터로서, CRC(Cyclic Redundancy Code) 정보를 포함할 수 있다. 데이터는 보안 또는 프라이버시를 위해 암호화된 데이터일 수 있다.
스토리지 장치(3150-3150n, 3250-3250m)는 프로세서로부터 수신된 리드 커맨드에 응답하여, 제어 신호 및 커맨드/어드레스 신호를 NAND 플래시 메모리 장치(3252-3252m)로 전송할 수 있다. 이에 따라 NAND 플래시 메모리 장치(3252-3252m)로부터 데이터를 독출하는 경우, RE(Read Enable) 신호는 데이터 출력 제어 신호로 입력되어, 데이터를 DQ 버스로 출력하는 역할을 할 수 있다. RE 신호를 이용하여 DQS(Data Strobe)가 생성될 수 있다. 커맨드와 어드레스 신호는 WE(Write Enable) 신호의 상승 엣지 또는 하강 엣지에 따라 페이지 버퍼에 래치될 수 있다.
컨트롤러(3251)는 도 1 내지 도 17을 통해 상술된 컨트롤러(200)일 수 있다. 컨트롤러(3251)는 스토리지 장치(3250)의 동작을 전반적으로 제어할 수 있다.
일 실시예에서, 컨트롤러(3251)는 SRAM(Static Random Access Memory)을 포함할 수 있다. 컨트롤러(3251)는 기입 커맨드에 응답하여 낸드 플래시(3252)에 데이터를 기입할 수 있고, 또는 독출 커맨드에 응답하여 낸드 플래시(3252)로부터 데이터를 독출할 수 있다. 예를 들어, 기입 커맨드 및/또는 독출 커맨드는 스토리지 서버(3200) 내의 프로세서(3210), 다른 스토리지 서버(3200m) 내의 프로세서(3210m) 또는 애플리케이션 서버(3100, 3100n) 내의 프로세서(3110, 3110n)로부터 제공될 수 있다. DRAM(3253)은 낸드 플래시(3252)에 기입될 데이터 또는 낸드 플래시(3252)로부터 독출된 데이터를 임시 저장(버퍼링)할 수 있다. 또한, DRAM(3253)은 메타 데이터를 저장할 수 있다. 여기서, 메타 데이터는 사용자 데이터 또는 낸드 플래시(3252)를 관리하기 위해 컨트롤러(3251)에서 생성된 데이터이다. 스토리지 장치(3250)는 보안 또는 프라이버시를 위해 SE(Secure Element)를 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 메모리 장치 100: 메모리 모듈 110: 랭크 112: 로우 디코더 114: 메모리 어레이 116: 로우 버퍼 118: 컬럼 디코더 120: 입/출력 핀들 200: 메모리 컨트롤러 210: 메모리 인터페이스 220: ECC 엔진 230: 결함 탐지기 231, 233: 인버터 234: XOR 연산기 235: 결함 위치 탐지부 236: 에러 패턴 변경부 240: 버퍼

Claims (10)

  1. 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이를 포함하는 메모리 모듈; 및
    상기 메모리 모듈과 상기 데이터를 송수신하며, 상기 데이터를 바탕으로 상기 복수의 메모리 셀들 중 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 탐지기를 포함하는 메모리 컨트롤러를 포함하되,
    상기 결함 탐지기는,
    상기 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키고, 상기 반전 리드 데이터를 상기 메모리 어레이로 전송하는 제1 인버터와,
    상기 리드 데이터를 저장하는 제1 버퍼와,
    상기 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 상기 버퍼에 저장된 상기 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와,
    상기 XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 상기 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와,
    상기 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와,
    상기 리드 데이터로부터 상기 데이터를 뺀 UE 유발 데이터를, 상기 반전 리드 반전 리드 데이터로부터 상기 데이터를 뺀 CE 유발 데이터로 변경하는 에러 패턴 변경부를 포함하는 메모리 장치.
  2. 제 1항에 있어서,
    상기 메모리 컨트롤러는 ECC 엔진을 더 포함하는 메모리 장치.
  3. 제 1항에 있어서,
    상기 메모리 컨트롤러는 제2 버퍼를 더 포함하며,
    상기 제2 버퍼는 상기 결함이 발생된 메모리 셀의 위치를 저장하는 메모리 장치.
  4. 제 1항에 있어서,
    상기 메모리 모듈은 제2 버퍼를 더 포함하며,
    상기 제2 버퍼는 상기 결함이 발생된 메모리 셀의 위치와, 상기 리드 데이터를 바탕으로 생성된 신드롬 데이터를 저장하는 메모리 장치.
  5. 데이터를 저장하는 복수의 메모리 셀들을 포함하는 메모리 어레이; 및
    상기 데이터를 송수신하며, 상기 데이터를 바탕으로 상기 복수의 메모리 셀들 중 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 탐지기를 포함하는 메모리 컨트롤러를 포함하되,
    상기 결함 탐지기는,
    상기 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키고, 상기 반전 리드 데이터를 상기 메모리 어레이로 전송하는 제1 인버터와,
    상기 리드 데이터를 저장하는 버퍼와,
    상기 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 상기 버퍼에 저장된 상기 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와,
    상기 XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 상기 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와,
    상기 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와,
    상기 리드 데이터로부터 상기 데이터를 뺀 UE 유발 데이터를, 상기 반전 리드 반전 리드 데이터로부터 상기 데이터를 뺀 CE(Correctable Error) 유발 데이터로 변경하는 에러 패턴 변경부를 포함하는 메모리 모듈.
  6. 제 5항에 있어서,
    상기 메모리 컨트롤러는 ECC 엔진을 더 포함하는 메모리 모듈.
  7. 제 5항에 있어서,
    상기 메모리 컨트롤러는 제2 버퍼를 더 포함하며,
    상기 제2 버퍼는 상기 결함이 발생된 메모리 셀의 위치를 저장하는 메모리 모듈.
  8. 제 5항에 있어서,
    제2 버퍼를 더 포함하며,
    상기 제2 버퍼는 상기 결함이 발생된 메모리 셀의 위치와, 상기 리드 데이터를 바탕으로 생성된 신드롬 데이터를 저장하는 메모리 모듈.
  9. 외부로부터 데이터를 수신하는 메모리 인터페이스; 및
    상기 데이터를 송수신하며, 상기 데이터를 바탕으로 결함이 발생된 데이터의 위치를 탐지하는 결함 탐지기를 포함하되,
    상기 결함 탐지기는,
    상기 데이터를 리드한 리드 데이터를 반전시켜, 반전 리드 데이터를 생성시키는 제1 인버터와,
    상기 리드 데이터를 저장하는 버퍼와,
    상기 반전 리드 데이터를 리드한 리드 반전 리드 데이터와, 상기 버퍼에 저장된 상기 리드 데이터를 수신하여 XOR 연산을 수행하는 XOR 연산기와,
    상기 XOR 연산기를 통해 계산된 연산 데이터를 바탕으로 상기 결함이 발생된 메모리 셀의 위치를 탐지하는 결함 위치 탐지부와,
    상기 리드 반전 리드 데이터를 반전하여 반전 리드 반전 리드 데이터를 생성하는 제2 인버터와,
    상기 리드 데이터로부터 상기 데이터를 뺀 UE(Uncorrectable Error) 유발 데이터를, 상기 반전 리드 반전 리드 데이터로부터 상기 데이터를 뺀 CE(Correctable Error) 유발 데이터로 변경하는 에러 패턴 변경부를 포함하는 메모리 컨트롤러.
  10. 제 9항에 있어서,
    제2 버퍼를 더 포함하며,
    상기 제2 버퍼는 상기 결함이 발생된 데이터의 위치를 저장하는 메모리 컨트롤러.
KR1020210112890A 2021-08-26 2021-08-26 메모리 컨트롤러 및 이를 포함하는 메모리 장치 KR20230030795A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210112890A KR20230030795A (ko) 2021-08-26 2021-08-26 메모리 컨트롤러 및 이를 포함하는 메모리 장치
US17/681,058 US11789815B2 (en) 2021-08-26 2022-02-25 Memory controller and memory device including the same
CN202210916375.7A CN115732016A (zh) 2021-08-26 2022-08-01 存储器装置、存储器控制器和纠正数据错误的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210112890A KR20230030795A (ko) 2021-08-26 2021-08-26 메모리 컨트롤러 및 이를 포함하는 메모리 장치

Publications (1)

Publication Number Publication Date
KR20230030795A true KR20230030795A (ko) 2023-03-07

Family

ID=85287751

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210112890A KR20230030795A (ko) 2021-08-26 2021-08-26 메모리 컨트롤러 및 이를 포함하는 메모리 장치

Country Status (3)

Country Link
US (1) US11789815B2 (ko)
KR (1) KR20230030795A (ko)
CN (1) CN115732016A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018112816A1 (de) * 2018-05-29 2019-12-05 Infineon Technologies Ag Adresscodierter Zugriff auf Speicher

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785837B1 (en) * 2000-11-20 2004-08-31 International Business Machines Corporation Fault tolerant memory system utilizing memory arrays with hard error detection
US7069494B2 (en) 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
JP4802515B2 (ja) 2005-03-01 2011-10-26 株式会社日立製作所 半導体装置
US8140945B2 (en) 2008-05-23 2012-03-20 Oracle America, Inc. Hard component failure detection and correction
US8612828B2 (en) 2009-12-22 2013-12-17 Intel Corporation Error correction mechanisms for 8-bit memory devices
US8756387B2 (en) * 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
US9450613B2 (en) * 2010-11-10 2016-09-20 Infineon Technologies Ag Apparatus and method for error correction and error detection
JP5618792B2 (ja) 2010-11-30 2014-11-05 三菱電機株式会社 エラー検出修復装置
US8694857B2 (en) * 2011-04-13 2014-04-08 Inphi Corporation Systems and methods for error detection and correction in a memory module which includes a memory buffer
US8848465B2 (en) 2011-07-06 2014-09-30 Samsung Electronics Co., Ltd. Memory devices including selective RWW and RMW decoding
KR102067014B1 (ko) * 2014-01-06 2020-02-11 삼성전자주식회사 어드레스 리매핑이 가능한 메모리 시스템
GB2527067B (en) 2014-06-10 2021-05-19 Advanced Risc Mach Ltd Malfunction escalation
KR102237563B1 (ko) * 2014-11-21 2021-04-07 삼성전자주식회사 테스트 시간을 감축하는 메모리 장치 및 이를 포함하는 컴퓨팅 시스템
KR102276007B1 (ko) * 2015-07-23 2021-07-12 삼성전자주식회사 집적 회로의 리페어 정보 제공 장치
KR102435181B1 (ko) * 2015-11-16 2022-08-23 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180045220A (ko) * 2016-10-25 2018-05-04 삼성전자주식회사 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
JP7107696B2 (ja) 2018-02-28 2022-07-27 ラピスセミコンダクタ株式会社 半導体装置及び半導体メモリの故障検出方法
US10936415B2 (en) * 2019-06-28 2021-03-02 Western Digital Technologies, Inc. Error correction scheme in flash memory
KR102669545B1 (ko) 2019-07-23 2024-05-27 삼성전자주식회사 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치
US11010243B2 (en) 2019-09-09 2021-05-18 Winbond Electronics Corp. Memory apparatus with error bit correction in data reading period

Also Published As

Publication number Publication date
US11789815B2 (en) 2023-10-17
CN115732016A (zh) 2023-03-03
US20230063804A1 (en) 2023-03-02

Similar Documents

Publication Publication Date Title
US11688453B2 (en) Memory device, memory system and operating method
US11614869B2 (en) Controller for preventing uncorrectable error in memory device, memory device having the same, and operating method thereof
US11437118B2 (en) Memory device and test method thereof
US11604693B2 (en) Memory device, a controller for controlling the same, a memory system including the same, and an operating method of the same
US12007840B2 (en) Storage controller, operation method thereof
CN116755620A (zh) 基于独立磁盘冗余阵列的数据存储的方法和装置
KR20230030795A (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 장치
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
US11907064B2 (en) Memory controller and memory system including the same
US20240178861A1 (en) Memory controllers and memory systems including the same
KR20230046362A (ko) 메모리 모듈의 동작 방법, 메모리 컨트롤러의 동작 방법, 및 메모리 시스템의 동작 방법
US20240170089A1 (en) Memory controllers and memory systems including the same
EP4160419A1 (en) Operation method of memory module, operation method of memory controller, and operation method of memory system
US20230152984A1 (en) Storage devices configured to obtain data of external devices for debugging
EP4386557A1 (en) Method and device for log structured merge-tree based key-value data storage
US20240202067A1 (en) Storage device and method of operating the same
CN117795466A (zh) 使用子命令的存取请求管理
KR20230070158A (ko) 디버깅을 위해 외부 장치의 데이터를 획득하는 스토리지 장치
TW202422552A (zh) 記憶體控制器及包括其的記憶體系統
KR20240090083A (ko) 메모리 장치를 제어하도록 구성된 메모리 컨트롤러의 동작 방법
KR20230067433A (ko) 멀티 플렉서
CN116414734A (zh) 存储***和存储设备及其操作方法
CN116263645A (zh) 针对自适应双设备数据纠正备用的地址生成
TW202324096A (zh) 儲存裝置
KR20230068939A (ko) 스토리지 장치 및 그 구동 방법