KR102387463B1 - 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법 - Google Patents

메모리 장치, 전자 장치 및 메모리 장치의 동작 방법 Download PDF

Info

Publication number
KR102387463B1
KR102387463B1 KR1020210141366A KR20210141366A KR102387463B1 KR 102387463 B1 KR102387463 B1 KR 102387463B1 KR 1020210141366 A KR1020210141366 A KR 1020210141366A KR 20210141366 A KR20210141366 A KR 20210141366A KR 102387463 B1 KR102387463 B1 KR 102387463B1
Authority
KR
South Korea
Prior art keywords
data
error
volatile memory
bit
test
Prior art date
Application number
KR1020210141366A
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 KR1020210141366A priority Critical patent/KR102387463B1/ko
Application granted granted Critical
Publication of KR102387463B1 publication Critical patent/KR102387463B1/ko
Priority to US17/733,559 priority patent/US11989422B2/en
Priority to EP22176963.1A priority patent/EP4170660A1/en
Priority to CN202210890699.8A priority patent/CN116013396A/zh
Priority to TW111128054A priority patent/TW202318432A/zh

Links

Images

Classifications

    • 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
    • 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
    • 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/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
    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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
    • 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/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • H01L27/108
    • H01L27/11
    • 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
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 장치, 전자 장치 및 메모리 장치의 동작 방법이 개시된다. 본 개시의 기술적 사상에 따른 메모리 장치는, 호스트로부터 제공된 리드 커맨드 및 어드레스에 응답하여 리드 동작을 수행하는 휘발성 메모리, 휘발성 메모리로부터 출력된 리드 데이터에서 2 비트의 에러가 발생한 경우에 힌트 데이터를 제공하는 복구 로직 회로, 및 출력 데이터 및 힌트 데이터를 기초로 출력 데이터에서 발생한 에러를 정정하여 정정 데이터를 호스트에 전달하는 에러 정정 회로 엔진을 포함한다.

Description

메모리 장치, 전자 장치 및 메모리 장치의 동작 방법{MEMORY DEVICE, ELECTRONIC DEVICE AND OPERATING METHOD OF MEMORY DEVICE}
본 개시의 기술적 사상은 전자 장치에 관한 것이며, 더욱 상세하게는, 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법에 관한 것이다.
반도체 메모리 장치는 플래시 메모리 장치와 같은 불휘발성 메모리 장치와 DRAM과 같은 휘발성 메모리 장치로 구분될 수 있다. DRAM과 같은 휘발성 메모리 장치는 가격이 비교적 저렴하기 때문에 시스템 메모리와 같은 대용량 데이터를 저장하는데 사용되고 있다. 또한 DRAM과 같은 휘발성 반도체 메모리 장치에서는 집적도를 높이기 위하여 공정 스케일을 축소시키고 있다. 공정 스케일의 축소에 따라 비트 에러 비율(bit error rate)을 급격하게 증가하고 수율이 낮아질 것으로 예상된다. 따라서 저비용으로 반도체 메모리 장치의 에러에 대한 응답을 확인하고 이를 정정할 수 있는 방안이 필요하다.
본 개시의 기술적 사상은, 2 비트의 에러를 1 비트의 에러에 준하여 정정할 수 있는 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법을 제공한다.
본 개시의 기술적 사상에 따른 호스트와 통신 가능한 메모리 장치는, 복수의 워드 라인들과 복수의 비트 라인들에 의해 정의되는 복수의 메모리 셀들을 포함하고, 호스트로부터 수신된 제1 리드 커맨드 및 어드레스에 응답하여 복수의 메모리 셀들 중 어드레스에 대응되는 타겟 메모리 셀들에 저장된 출력 데이터를 제공하도록 구성된 휘발성 메모리, 복수의 비트 라인들 중 출력 데이터에서 2 비트의 에러가 발생한 불량 셀들이 각각 연결된 비트 라인들에 대한 정보와 노멀 셀들이 연결된 비트 라인들에 대한 정보를 포함하는 힌트 데이터를 제공하도록 구성된 복구 로직 회로, 및 출력 데이터 및 힌트 데이터를 기초로 출력 데이터에서 발생한 에러를 정정하고, 에러가 정정된 데이터인 정정 데이터를 호스트에 전달하도록 구성된 에러 정정 회로(Error Correction Circuit, ECC) 엔진을 포함한다.
또한, 본 개시의 기술적 사상에 따른 전자 장치는, 제1 리드 커맨드 및 어드레스를 출력하는 어플리케이션 프로세서, 복수의 휘발성 메모리들, 복수의 휘발성 메모리들 중 어드레스에 대응되는 휘발성 메모리를 선택하는 멀티플렉서, 및 제1 리드 커맨드에 응답하여 리드 동작을 수행하는 선택된 휘발성 메모리로부터 출력된 출력 데이터에서 발생한 에러를 정정하는 ECC 엔진을 포함하는 버퍼, 및 데이터에서 2 비트의 에러가 발생한 불량 셀들이 각각 연결된 비트 라인들에 대한 정보와 노멀 셀들이 연결된 비트 라인들에 대한 정보를 포함하는 힌트 데이터를 제공하도록 구성된 복구 로직 회로를 포함하되, ECC 엔진은, 선택된 휘발성 메모리에 대한 제1 힌트 데이터 및 출력 데이터를 기초로 에러를 정정하고, 정정 데이터를 어플리케이션 프로세서에 전달하는 것을 특징으로 한다.
또한, 본 개시의 기술적 사상에 따른 호스트와 통신 가능한 메모리 장치의 동작 방법은, 호스트로부터 수신된 리드 커맨드 및 어드레스를 수신하는 단계, 복수의 휘발성 메모리들 중 어드레스에 대응되는 휘발성 메모리에 저장된 데이터를 리드하는 단계, 휘발성 메모리로부터 리드된 리드 데이터에서 2 비트의 에러를 검출하는 단계, 휘발성 메모리에 대한 힌트 데이터와 리드 데이터를 기초로 2 비트의 에러를 정정하는 단계, 및 2 비트의 에러가 정정된 데이터인 정정 데이터를 호스트에 제공하는 단계를 포함한다.
본 개시의 기술적 사상에 의하면, 적은 리소스를 이용하여 2 비트 에러를 정정함으로써 에너지 효율 및 집적화를 도모할 수 있는 효과가 있다.
도 1은 본 개시의 일 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 휘발성 메모리를 설명하기 위한 도면이다.
도 3은 본 개시의 일 실시예에 따른 메모리 셀의 일 실시예를 설명하기 위한 도면이다.
도 4는 본 개시의 일 실시예에 따라 데이터를 에러 정정하는 실시예를 설명하기 위한 개념도이다.
도 5는 본 개시의 일 실시예에 따라 데이터를 에러 정정하는 실시예를 구체적으로 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시예에 따른 메모리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 7은 본 개시의 일 실시예에 따른 하드 디펙 테스트를 설명하기 위한 흐름도이다.
도 8은 본 개시의 일 실시예에 따른 소프트 디펙 테스트를 설명하기 위한 흐름도이다.
도 9a 내지 도 9c는 본 개시의 일 실시예에 따른 힌트 데이터를 설명하기 위한 도면이다.
도 10은 본 개시의 일 실시예에 따른 ECC 디코더를 설명하기 위한 도면이다.
도 11a 내지 도 11c는 본 개시의 일 실시예에 따른 힌트 데이터 적용기의 동작을 설명하기 위한 도면이다.
도 12는 본 개시의 다른 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 13은 본 개시의 또 다른 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 14는 내부 전압 및 클럭의 주파수에 따라 발생되는 에러 경향성을 슈모 조건(Shmoo condition)으로 나타낸 도면이다.
도 15는 각 세그먼트의 어드레스에서 발생 가능한 에러 현상을 설명하기 위한 도면이다.
도 16은 본 개시의 다른 실시예에 따른 힌트 데이터를 설명하기 위한 도면이다.
도 17은 본 발명의 일 실시예에 따른 UFS 시스템에 대해 설명하기 위한 도면이다.
이하, 첨부한 도면을 참조하여 본 개시의 실시예에 대해 상세히 설명한다.
도 1은 본 개시의 일 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 전자 장치는 호스트(50) 및 메모리 장치(100)를 포함할 수 있다.
호스트(50)는 CPU(Central Processing Unit), 프로세서, 마이크로프로세서 또는 어플리케이션 프로세서(Application Processor, AP) 등과 같이 데이터를 처리할 수 있는 장치일 수 있다. 호스트(50)는 운영 체제(operating system, OS) 및/또는 다양한 응용 프로그램(application)을 수행할 수 있다. 예를 들면, 본 개시의 일 실시예에 따른 전자 장치는 모바일 장치로 구현될 수 있고, 이때 호스트(50)는 어플리케이션 프로세서(AP) 또는 시스템 온 칩(System-On-a-Chip, SoC)으로 구현될 수 있다. 이에 따라, 호스트(50)는 모바일 장치에 내장될 수 있다.
호스트(50)는 특정 동작을 수행할 것을 요청하는 요청 신호를 메모리 장치(100)에 전송하고, 커맨드에 대한 응답 신호를 메모리 장치(100)로부터 수신할 수 있다. 예를 들면, 호스트(50)는 리드 요청 신호 및 어드레스를 메모리 장치(100)에 전송하고, 메모리 장치(100)는 어드레스에 대응되는 메모리 영역에 저장된 데이터를 리드(read)할 수 있다. 리드 요청 신호는 메모리 장치(100)에 저장된 데이터를 읽을 것을 요청하는 신호이며, 리드 커맨드로 지칭될 수 있다. 다른 예를 들면, 호스트(50)는 라이트 요청 신호, 데이터 및 어드레스를 메모리 장치(100)에 전송하고, 메모리 장치(100)는 어드레스에 대응되는 메모리 영역에 데이터를 저장할 수 있다. 라이트 요청 신호는 메모리 장치(100)에 저장된 데이터를 쓸(write) 것을 요청하는 신호이며, 라이트 커맨드로 지칭될 수 있다.
호스트(50)는 메모리 장치(100)를 구동시키기 위한 내부 전압(internal voltage) 및 클럭을 메모리 장치(100)에 제공할 수 있다.
메모리 장치(100)는 호스트(50)의 요청 신호에 응답하여 데이터를 저장하거나 저장된 데이터를 리드할 수 있다. 메모리 장치(100)는 복수의 컴포넌트들(components)로 구성될 수 있다. 컴포넌트는 메모리 장치(100)에 하드웨어 형태로 구현되는 것과, 소프트웨어 형태로 구현되는 것, 또는 하드웨어와 소프트웨어로 구현되는 것일 수 있다. 본 명세서에서의 컴포넌트는 구성(element)으로 지칭될 수도 있다. 도 1을 참조하여 예를 들면, 메모리 장치(100)는 휘발성 메모리(110), 에러 정정 회로(Error Correction Circuit, 이하 ECC) 엔진(120), 및 복구 로직 회로(130)를 포함할 수 있다.
휘발성 메모리(110)는 전력을 공급받는 동안에만 동작할 수 있다. 휘발성 메모리(120)는, 전력이 공급되는 동안에만, 호스트(50)로부터 제공된 데이터를 임시 저장하거나 저장된 데이터를 호스트(50)에 제공할 수 있다. 휘발성 메모리(120)는 버퍼 메모리로서 동작할 수 있다. 예를 들면, 휘발성 메모리(110)는 DRAM(Dynamic random-access memory) 또는 SRAM(Static random-access memory)로 구현될 수 있다. 하지만, 이에 한정되는 것은 아니다.
일 실시예에서, 휘발성 메모리(110)는, 복구 로직 회로(130)로부터 출력된 테스트 제어 신호에 응답하여, 타겟 워드 라인에 연결된 메모리 셀들에 제1 테스트 패턴 데이터를 기입(write)하고, 타겟 워드 라인에 연결된 메모리 셀들에 저장된 제1 테스트 데이터를 읽고(read), 타겟 워드 라인에 연결된 메모리 셀들에 제2 테스트 패턴 데이터를 기입하고, 타겟 워드 라인에 연결된 메모리 셀들에 저장된 제2 테스트 데이터를 읽을 수 있다. 타겟 워드 라인은, 리드 동작 시 발생된 불량 셀의 워드 라인일 수 있다.
ECC 엔진(120)은 휘발성 메모리(110)에 저장된 데이터에 대하여 ECC 동작을 수행할 수 있다. 일 실시예에서, ECC 엔진(120)은 호스트(50)로부터 수신된 데이터에 대한 패리티 비트를 생성하고, 데이터 및 패리티 비트를 포함하는 코드워드를 휘발성 메모리(110)에 전송할 수 있다. ECC 엔진(120)은 하나의 단위(예를 들어, 하나의 코드워드(Codeword))에 포함된 1 비트의 에러를 정정할 수 있다. 일 실시예에 따른 ECC 엔진(120)은 SECDED(Single Error Correction, Double Error Detection) 회로로 구현될 수 있다.
일 실시예에서, ECC 엔진(120)은 ECC 인코더(121) 및 ECC 디코더(122)를 포함할 수 있다.
ECC 인코더(121)는 ECC 인코딩 동작을 수행할 수 있다. ECC 인코더(121)는 호스트(50)로부터 수신된 데이터에 대하여 패리티 비트들을 생성할 수 있다. 예를 들면, ECC 인코더(121)는 64 비트의 데이터와 b'00000000 비트들을 수신하고, XOR 어레이 연산을 이용하여 패리티 비트들을 생성할 수 있다. b'00000000 비트들은 64 비트의 데이터에 대한 패리티 비트들을 발생시키기 위한 비트들이다. 64 비트의 데이터에 대한 패리티 비트들을 발생시키기 위하여, b'00000000 비트들 대신에 다른 특정 비트들이 이용될 수도 있다.
ECC 디코더(122)는 ECC 디코딩 동작을 수행할 수 있다. ECC 디코더(122)는 휘발성 메모리(110)로부터 전달된 출력 데이터를 이용하여 신드롬 데이터를 생성할 수 있다. 그리고, ECC 디코더(122)는 신드롬 데이터를 이용하여 휘발성 메모리(110)에 포함된 메모리 셀들 중 불량 셀의 위치, 즉 에러 비트 위치를 계산할 수 있다. 그리고, ECC 디코더(122)는 에러 비트 위치에 대응하는 데이터의 비트 값을 정정하고 에러 정정된 데이터를 출력한다. 에러 비트 위치에 대응하는 데이터의 비트 값을 정정하는 것은 에러 비트 위치에 대응하는 데이터의 비트 값을 반전시키는 것일 수 있다.
일 실시예에서, ECC 디코더(122)는 휘발성 메모리(110)로부터 전달된 출력데이터에서 2 비트의 에러를 검출할 수 있다. ECC 엔진(120)이 SECDED(Single Error Correction, Double Error Detection) 회로로 구현되는 경우, ECC 디코더(122)는 2 비트의 에러를 검출할 수 없다. 따라서, ECC 디코더(122)는 힌트 데이터 버퍼(132)에 액세스할 수 있다. 2 비트의 에러를 갖는 데이터가 저장된 메모리 영역에 대응되는 힌트 데이터가 힌트 데이터 버퍼(132)에 저장되지 않은 경우, ECC 디코더(122)는 힌트 데이터를 생성할 것을 요청하는 힌트 데이터 요청 신호를 복구 로직 회로(130)에 전달할 수 있다. 2 비트의 에러를 갖는 데이터가 저장된 메모리 영역에 대응되는 힌트 데이터가 힌트 데이터 버퍼(132)에 저장된 경우, ECC 디코더(122)는 힌트 데이터 버퍼(132)에 저장된 힌트 데이터를 기초로 2 비트의 에러들 중 적어도 하나의 에러를 정정할 수 있다. 2 비트의 에러들 중 적어도 하나의 에러를 정정하는 구체적 실시예는 도 11a 내지 도 11c를 참조하여 후술한다.
복구 로직 회로(130)는, 휘발성 메모리(110)로부터 전달된 데이터에서 2 비트의 에러가 발생한 경우, 2 비트의 에러의 위치를 나타내는 힌트 데이터를 생성할 수 있다. 복구 로직 회로(130)는 생성된 힌트 데이터를 저장할 수 있다. 복구 로직 회로(130)는, 휘발성 메모리(110)로부터 전달된 데이터에서 2 비트의 에러가 발생한 경우, 저장된 힌트 데이터를 ECC 디코더(122)에 제공할 수 있다. 여기서, 2 비트의 에러의 위치는, 휘발성 메모리 장치(110)에 포함된 복수의 비트 라인들 중 2 비트의 에러가 발생한 메모리 셀이 연결된 각 비트 라인에 대응될 수 있다.
일 실시예에서, 복구 로직 회로(130)는 복구 컨트롤러(131), 힌트 데이터 버퍼(132), 및 테스트 데이터 버퍼(133)를 포함할 수 있다.
복구 컨트롤러(131)는 힌트 데이터를 생성할 수 있다. 구체적으로, 복구 컨트롤러(131)는 ECC 디코더(122)로부터 수신된 데이터 생성 요청 신호에 응답하여 테스트 모드에 진입할 것을 명령하는 테스트 제어 신호를 휘발성 메모리(110)에 전달할 수 있다. 그리고, 복구 컨트롤러(131)는 제1 테스트 패턴 데이터 및 제2 테스트 패턴 데이터를 휘발성 메모리(110)에 순차적으로 전달할 수 있다. 휘발성 메모리(110)가 테스트 모드에서 제1 테스트 데이터 및 제2 테스트 데이터를 복구 로직 회로(130)에 순차적으로 전달한 경우, 복구 컨트롤러(131)는 제1 테스트 데이터 및 제2 테스트 데이터를 테스트 데이터 버퍼(133)에 저장할 수 있다. 복구 컨트롤러(131)는 제1 테스트 데이터 및 제2 테스트 데이터를 이용하여 XOR 연산을 수행하고, 특정 비트 값을 포함하는 결과 데이터를 힌트 데이터로서 힌트 데이터 버퍼(132)에 저장할 수 있다.
힌트 데이터 버퍼(132)는 휘발성 메모리(110)에 대응되는 힌트 데이터를 임시 저장할 수 있다. 휘발성 메모리(110)의 개수가 복수인 경우, 힌트 데이터 버퍼(132)는 각 휘발성 메모리에 대응되는 힌트 데이터를 저장할 수 있다. 일 실시예에서, 복수의 힌트 데이터는 테이블 형태의 자료 구조로 관리될 수 있다.
테스트 데이터 버퍼(133)는 휘발성 메모리(110)의 테스트 모드에서 제1 테스트 데이터 및 제2 테스트 데이터를 임시 저장할 수 있다. 테스트 데이터 버퍼(133)는 휘발성 메모리(110)의 테스트 모드에서 이용될 제1 테스트 패턴 데이터 및 제2 테스트 패턴 데이터를 더 저장할 수도 있다. 테스트 데이터 버퍼(133)는 테스트 모드가 실행되기 전에, 휘발성 메모리(110)로부터 출력된 출력 데이터(DATA_OUT) 및 어드레스를 임시 저장할 수도 있다.
도 2는 본 개시의 일 실시예에 따른 휘발성 메모리를 설명하기 위한 도면이다.
도 2를 참조하면, 본 개시의 일 실시예에 따른 휘발성 메모리(200)는, 쓰기 동작 시, 커맨드(CMD), 어드레스(ADDR), 클럭(CLK), 및 입력 데이터(DATA_IN)를 수신할 수 있다. 예를 들면, 휘발성 메모리(200)는, 쓰기(write)를 지시하는 커맨드(CMD), 어드레스(ADDR) 및 입력 데이터(DATA_IN)를 수신하고, 메모리 셀 어레이(210)에서 어드레스(ADDR)에 대응하는 메모리 셀 영역에 입력 데이터(DATA_IN)를 저장할 수 있다. 메모리 셀 영역은 하나 이상의 메모리 셀로 이루어진 메모리 영역일 수 있다.
본 개시의 일 실시예에 따른 휘발성 메모리(200)는, 읽기 동작 시, 커맨드(CMD), 어드레스(ADDR), 및 클럭(CLK)을 수신할 수 있다. 예를 들면, 휘발성 메모리(200)는 읽기(read)를 지시하는 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 어드레스(ADDR)에 대응하는 메모리 셀 영역에 저장된 데이터를 읽고, 리드된 데이터를 출력 데이터(DATA_OUT)로서 외부에 출력할 수 있다.
일 실시예에서, 휘발성 메모리(200)는 메모리 셀 어레이(210), 컬럼 디코더(220), 로우 디코더(230), 라이트 드라이버/센스 증폭기(240), 입출력 회로(250), 및 컨트롤 로직(260)을 포함할 수 있다.
메모리 셀 어레이(210)는 복수의 메모리 셀들(211)을 포함할 수 있다. 복수의 메모리 셀들(211)은 일정한 간격을 두고 배열될 수 있다. 복수의 메모리 셀들(211)은 워드 라인들(WLs)과 비트 라인들(BLs)에 의해 정의될 수 있다. 구체적으로, 복수의 메모리 셀들(211)은 워드 라인들(WLs)과 비트 라인들(BLs)이 교차하는 지점에 배치될 수 있다. 즉, 복수의 메모리 셀들(211) 각각은 복수의 워드 라인들(WLs) 중 적어도 하나에 연결될 수 있고, 복수의 비트 라인들(BLs) 중 적어도 하나에 연결될 수 있다.
컬럼 디코더(220)는 복수의 비트 라인들(BLs)을 통해서 메모리 셀 어레이(210)와 연결될 수 있다. 컬럼 디코더(220)는 컬럼 어드레스(CA)에 기초하여, 복수의 비트 라인들(BLs) 중 적어도 하나의 비트 라인을 선택할 수 있다.
로우 디코더(230)는 복수의 워드 라인들(WLs)을 통해서 메모리 셀 어레이(210)와 연결될 수 있다. 로우 디코더(230)는 로우 어드레스(RA)에 기초하여, 복수의 워드 라인들(WLs) 중 적어도 하나의 워드 라인을 활성화할 수 있다. 즉, 로우 디코더(230)는 복수의 워드 라인들(WLs) 중 적어도 어느 하나의 워드 라인을 선택할 수 있다. 이에 따라, 복수개의 메모리 셀들(211) 중에서 활성화된 워드 라인에 연결된 메모리 셀들이 선택될 수 있다.
라이트 드라이버/센스 증폭기(240)는 입출력 회로(250)로부터 전달된 입력 데이터(DATA_IN)를 컬럼 디코더(220)에 전달할 수 있다. 또는 라이트 드라이버/센스 증폭기(240)는 컬럼 디코더(220)로부터 전달된 데이터를 증폭하여 출력 데이터(DATA_OUT)를 입출력 회로(250)에 전달할 수 있다. 라이트 드라이버/센스 증폭기(240)는 제어 신호(CTR)의 논리 레벨에 따라 라이트 드라이버로 동작하거나 센스 증폭기로 동작할 수 있다. 예를 들면, 라이트 드라이버/센스 증폭기(240)는, 쓰기 동작 시, 입력 데이터(DATA_IN)에 기초하여 전류 및/또는 전압을 복수의 비트 라인들(BLs)에 인가함으로써, 복수의 메모리 셀들(211) 중 활성화된 워드 라인에 연결된 메모리 셀들에 값들을 입력할 수 있다. 라이트 드라이버/센스 증폭기(240)는, 읽기 동작 시, 복수의 비트 라인들(BLs)을 통해서 수신되는 전류 및/또는 전압을 감지함으로써 복수의 메모리 셀들(211) 중 활성화된 워드 라인에 연결된 메모리 셀들에 저장된 값들을 식별할 수 있다. 식별된 값들은 출력 데이터(DATA_OUT)로 출력될 수 있다.
실시예에 따라, 컬럼 디코더(220) 및 라이트 드라이버/센스 증폭기(240)가 하나의 컬럼 드라이버로 구현될 수 있다. 컬럼 드라이버는 복수의 비트 라인들(BLs) 중 컬럼 어드레스(CA)에 따른 비트 라인을 선택하고, 제어 신호(CTR)의 논리 레벨에 따라 라이트 드라이버로 동작하거나 센스 증폭기로 동작할 수 있다.
입출력 회로(250)는 입력 데이터(DATA_IN)를 라이트 드라이버/센스 증폭기(240)에 전달할 수 있다. 또는, 입출력 회로(250)는 라이트 드라이버/센스 증폭기(240)로부터 전달된 출력 데이터(DATA_OUT)를 출력할 수 있다.
컨트롤 로직(260)은 커맨드(CMD), 어드레스(ADDR) 및 클럭(CLK)을 수신할 수 있고, 로우 어드레스(RA), 컬럼 어드레스(CA) 및 제어 신호(CTR)를 생성할 수 있다. 예를 들면, 컨트롤 로직(260)은 커맨드(CMD)를 디코딩함으로써 리드 커맨드를 식별할 수 있고, 메모리 셀 어레이(210)로부터 출력 데이터(DATA_OUT)를 리드하기 위하여 로우 어드레스(RA), 컬럼 어드레스(CA) 및 제어 신호(CTR)를 생성할 수 있다. 또한, 컨트롤 로직(260)은 커맨드(CMD)를 디코딩함으로써 라이트 커맨드를 식별할 수 있고, 메모리 셀 어레이(210)에 입력 데이터(DATA_IN)를 기입하기 위하여 로우 어드레스(RA), 컬럼 어드레스(CA) 및 제어 신호(CTR)를 생성할 수 있다.
일 예로서 입력 데이터(DATA_IN)는 도 1에 도시된 호스트(50)가 제공하는 데이터일 수 있다. 다른 예로서 입력 데이터(DATA_IN)는 제1 테스트 패턴 데이터일 수 있다. 또 다른 예로서 입력 데이터(DATA_IN)는 제2 테스트 패턴 데이터일 수 있다.
일 예로서 출력 데이터(DATA_OUT)는 도 1에 도시된 호스트(50)에 제공될 데이터일 수 있다. 다른 예로서 입력 데이터(DATA_IN)는 제1 테스트 데이터일 수 있다. 다른 예로서 입력 데이터(DATA_IN)는 제2 테스트 데이터일 수 있다.
일 실시예에서, 컨트롤 로직(260)은, 테스트 모드 시, 타겟 워드 라인에 연결된 메모리 셀들에 제1 테스트 패턴 데이터를 저장하기 위해, 로우 어드레스(RA), 컬럼 어드레스(CA), 및 제어 신호(CTR)를 출력할 수 있다. 그리고, 컨트롤 로직(260)은, 테스트 모드 시, 타겟 워드 라인에 연결된 메모리 셀들에 저장된 제1 테스트 데이터를 리드하기 위해, 로우 어드레스(RA), 컬럼 어드레스(CA), 및 제어 신호(CTR)를 출력할 수 있다. 제1 테스트 패턴 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 제1 값을 저장하기 위한 데이터일 수 있다. 즉, 제1 테스트 패턴 데이터의 비트 값은 모두 제1 값일 수 있다. 제1 값은, 예를 들면, 로직 하이 레벨(Logic high level), "Fh", 또는 "1b"일 수 있다. 제1 테스트 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 저장된 데이터일 수 있다. 타겟 워드 라인에 불량 셀이 포함되고 제1 테스트 패턴 데이터의 비트 값이 모두 제1 값인 경우, 제1 테스트 데이터는 적어도 하나의 제2 값을 가질 수 있다. 제2 값은 에러 비트로서 로직 로우 레벨(Logic low level), "0h", 또는 "0b"일 수 있다. 하지만, 이에 한정되는 것은 아니며 제1 값이 로직 로우 레벨이고 제2 값이 로직 하이 레벨일 수도 있다.
일 실시예에서, 제1 테스트 데이터가 리드된 다음, 컨트롤 로직(260)은, 테스트 모드 시, 타겟 워드 라인에 연결된 메모리 셀들에 제2 테스트 패턴 데이터를 저장하기 위해, 로우 어드레스(RA), 컬럼 어드레스(CA), 및 제어 신호(CTR)를 출력할 수 있다. 그리고, 컨트롤 로직(260)은, 테스트 모드 시, 타겟 워드 라인에 연결된 메모리 셀들에 저장된 제2 테스트 데이터를 리드하기 위해, 로우 어드레스(RA), 컬럼 어드레스(CA), 및 제어 신호(CTR)를 출력할 수 있다. 제2 테스트 패턴 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 제2 값을 저장하기 위한 데이터일 수 있다. 즉, 제2 테스트 패턴 데이터의 비트 값은 모두 제2 값일 수 있다. 제2 값은, 제1 값이 로직 하이 레벨(Logic high level), "Fh", 또는 "1b"인 경우, 로직 로우 레벨(Logic low level), "0h", 또는 "0b"일 수 있다. 제2 테스트 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 저장된 데이터일 수 있다. 타겟 워드 라인에 불량 셀이 포함되고 제2 테스트 패턴 데이터의 비트 값이 모두 제2 값인 경우, 제2 테스트 데이터는 적어도 하나의 제1 값을 가질 수 있다. 이때 제1 값은 에러 비트의 값일 수 있다.
도 3은 본 개시의 일 실시예에 따른 메모리 셀의 일 실시예를 설명하기 위한 도면이다.
도 3을 참조하면, 도 3에 도시된 휘발성 메모리(300)는 메모리 셀(MC)을 포함할 수 있다. 도 3에 도시된 휘발성 메모리(300)가 SRAM으로 구현되는 경우, 메모리 셀(MC)은 6 개의 트랜지스터들로 구성된 SRAM 셀일 수 있다. 메모리 셀(MC)은 6T SRAM 셀로 지칭될 수 있다. 하지만, 이에 한정되는 것은 아니며, 도 3에 도시된 휘발성 메모리(300)가 DRAM으로 구현되는 경우, 메모리 셀(MC)은 1 개의 트랜지스터와 1 개의 커패시터로 구성된 DRAM 셀일 수도 있다. 이하에서는 편의상 메모리 셀(MC)은 SRAM 셀인 것으로 가정한다.
메모리 셀(MC)은 제1 및 제2 PMOS 트랜지스터들(P1, P2)과 제1 내지 제4 NMOS 트랜지스터들(N1, N2, N3, N4)을 포함할 수 있다. 제1 및 제2 PMOS 트랜지스터들(P1, P2)은 전원 전압(VDD) 라인과 제1 노드(A) 및 제2 노드(B) 사이에 각각 연결될 수 있다. 제1 및 제2 NMOS 트랜지스터들(N1, N2)은 접지 전압(VSS) 라인과 제1 노드(A) 및 제2 노드(B) 사이에 각각 연결될 수 있다. 제1 노드(A)는 제2 PMOS 트랜지스터(P2) 및 제2 NMOS 트랜지스터(N2) 각각의 게이트에 연결될 수 있다. 제2 노드(B)는 제1 PMOS 트랜지스터(P1) 및 제1 NMOS 트랜지스터(N1) 각각의 게이트에 연결될 수 있다. 제1 노드(A) 및 제2 노드(B)는 제3 및 제4 NMOS 트랜지스터들(N3, N4)에 의해 비트 라인(BL)과 상보 비트 라인(/BL) 각각과 연결될 수 있다. 제3 및 제4 NMOS 트랜지스터들(N3, N4)의 게이트들은 워드 라인(WL)에 연결될 수 있다. 제3 및 제4 NMOS 트랜지스터들(N3, N4)은 액세스 트랜지스터들 또는 패스 트랜지스터들로 지칭될 수 있다.
메모리 셀(MC)은 제1 노드(A) 및 제2 노드(B)에 데이터 및 상보 데이터를 저장하고, 이를 래치한 상태를 유지할 수 있다. 구체적으로, 워드 라인(WL)이 쓰기 동작에서 인에이블되면, 제3 및 제4 NMOS 트랜지스터들(N3, N4)을 통하여 비트 라인(BL)과 상보 비트 라인(/BL)으로 전달되는 데이터 및 상보 데이터가 제1 노드(A) 및 제2 노드(B)에 래치될 수 있다. 한편, 메모리 셀(MC)은, 워드 라인(WL)이 읽기 동작에서 인에이블되면, 제1 노드(A) 및 제2 노드(B)에 래치된 데이터가 제3 및 제4 NMOS 트랜지스터들(N3, N4)을 통하여 비트 라인(BL)과 상보 비트 라인(/BL)으로 전달될 수 있다.
다른 실시예에서, 메모리 셀(MC)은 제1 인버터와 제2 인버터를 포함할 수 있다. 제1 인버터는 제1 PMOS 트랜지스터(P1) 및 제1 NMOS 트랜지스터(N1)로 구성될 수 있다. 제2 인버터는 제2 PMOS 트랜지스터(P2) 및 제2 NMOS 트랜지스터(N2)로 구성될 수 있다.
도 4는 본 개시의 일 실시예에 따라 데이터를 에러 정정하는 실시예를 설명하기 위한 개념도이다. 구체적으로, 도 4는 메모리 장치에 포함된 메모리 셀 어레이 및 ECC 디코더를 예시적으로 나타낸 것이다.
도 4를 참조하면, 도 4에 도시된 메모리 장치(400)에서 메모리 셀 어레이는 노멀 영역(410) 및 패리티 영역(420)을 포함할 수 있다. 노멀 영역(410)은 호스트(50)로부터 제공된 데이터(DATA)가 저장되는 영역이고, 패리티 영역(420)은 데이터(DATA)에 대응되는 패리티 비트(PARITY BIT)가 저장되는 영역이다.
호스트(50)가 전송한 리드 커맨드에 대한 응답으로써, ECC 디코더(430)는 데이터(DATA) 및 패리티 비트(PARITY BIT)를 전달받을 수 있다. 데이터(DATA) 및 패리티 비트(PARITY BIT)는 하나의 코드워드(Codeword)를 구성할 수 있다. 예를 들어 128 비트의 데이터(DATA)와 8 비트의 패리티 비트(PARITY BIT)가 하나의 코드워드(Codeword)를 구성할 수 있다. 본 명세서에서 데이터(DATA) 및 패리티 비트(PARITY BIT)는 리드 데이터 또는 출력 데이터(DATA_OUT)로 지칭될 수 있다.
ECC 디코더(430)는 코드워드를 기초로 데이터(DATA)에 포함된 에러 비트의 위치를 산출할 수 있고, 에러 비트를 정정할 수 있으며, 정정 데이터(CDATA)를 생성할 수 있다. 정정 데이터(CDATA)는 호스트(50)에 전달될 수 있다.
도 5는 본 개시의 일 실시예에 따라 데이터를 에러 정정하는 실시예를 구체적으로 설명하기 위한 도면이다.
도 5를 참조하면, 메모리 장치(500)는 X8 모드를 지원할 수 있다. X8 모드는 복수의 노멀 블록들(511~518)의 1 단위 분의 데이터가 8개의 데이터 입출력 핀(DQ0-DQ7)들을 통하여 입출력되는 모드일 수 있다. ECC 엔진(560)은 노멀 영역(310)의 1 단위 분의 데이터 비트들에 포함된 에러 비트를 정정하기 위하여 ECC 동작을 수행할 수 있다. 일 실시예로서, 1 단위 분의 메모리 셀들이 128개의 메모리 셀들로 구성되고, 1 단위분의 데이터 비트들은 128 비트들로 구성될 수 있다.
노멀 영역(510)은 도 4에 도시된 노멀 영역(410)에 대응될 수 있다. 노멀 영역(510)은 복수의 노멀 블록들(511~518)을 포함할 수 있다. 복수의 노멀 블록들(511~518) 각각에는 행들 및 열들로 배열되는 복수의 메모리 셀들이 배열될 수 있다. 복수의 노멀 블록들(511~518) 각각의 메모리 셀들에 저장된 데이터는 대응되는 데이터 입출력 핀(DQ0-DQ7)들을 통하여 입출력되므로, 이하에서 복수의 노멀 셀 블록들(511~518)을 각각 DQ0-DQ7 셀 블록들(511~518)으로 지칭한다.
DQ0-DQ7 셀 블록들(511~518) 각각의 로우들은 예를 들어, 8K개의 워드 라인들(WL)로 구성되고, 칼럼들은 예를 들어, 1K개의 비트 라인들로 구성될 수 있다. 워드 라인들(WL)과 비트 라인들의 교차점들에 연결되는 메모리 셀들은 SRAM 셀들로 구성될 수 있다. 하지만, 이에 한정되는 것은 아니며, 메모리 셀들은 DRAM 셀들로 구성될 수도 있다.
DQ0-DQ7 셀 블록들(511~518)의 워드 라인들(WL)은 로우 어드레스들(RA0~RAm)에 의해 액세스되고, 비트 라인들은 칼럼 어드레스들(CA0~CAn)에 의해 액세스된다. 로우 어드레스들(RA0~RAm)은 로우 디코더(530)를 통해 디코딩되고, 디코딩된 로우 어드레스들(RA0~RAm)에 의해 워드 라인(WL)이 선택된다. 칼럼 어드레스들(CA0~CAn)은 칼럼 디코더(540)를 통해 디코딩된다. 칼럼 디코더(540)는 칼럼 어드레스들(CA0~CAn)을 디코딩하여 비트 라인을 선택하는 칼럼 선택 신호들(CSL0~CSL127)을 생성한다. 비트 라인들을 액세스할 수 있는 칼럼 로케이션들의 최대 수를 나타내는 버스트 길이를 지원하기 위하여, 버스트 길이에 해당하는 비트 라인들이 동시에 액세스될 수 있다. 예를 들어 버스트 길이는 16일 수 있다.
이에 따라, 비트 라인들은 128개의 칼럼 선택 신호들(CSL0~CSL127) 각각에 연결되는 칼럼 선택부(550)와 연결되고, 하나의 칼럼 선택부(550)에 의해 16개의 비트 라인들이 동시에 선택될 수 있다. 칼럼 선택부(550) 각각은 16개의 스위치들로 구성될 수 있으며, 칼럼 선택 신호들(CSL0~CSL127)에 의해 턴 온된다. 128개의 칼럼 선택 신호들(CSL0~CSL127)에 의해 스위칭되는 칼럼 선택부(550)는 칼럼 선택 회로를 구성할 수 있다.
DQ0 셀 블록(501)에서, 로우 어드레스들(RA0~RAm)에 의해 액세스되는 워드 라인(WL)에는 복수개의 메모리 셀들이 연결될 수 있다. 워드 라인(WL)에 연결된 복수개의 메모리 셀들 중 16개의 메모리 셀들이 CSL0 칼럼 선택 신호와 연결되는 칼럼 선택부(550)에 의해 선택되어 제1 데이터 라인들(GIO[0:15])과 연결될 수 있다. 제1 데이터 라인들(GIO[0:15])은 16 비트로 구성될 수 있다.
DQ1 셀 블록(502)에서도, 워드 라인(WL)에 연결된 복수개의 메모리 셀들 중 16개의 메모리 셀들이 CSL0 칼럼 선택 신호와 연결되는 칼럼 선택부(550)에 의해 선택되어 제2 데이터 라인들(GIO[16:31])과 연결된다. 나머지 DQ2-DQ7 셀 블록(513~518) 각각에서도 워드 라인(WL)에 연결된 복수개의 메모리 셀들 중 16개의 메모리 셀들이 CSL0 칼럼 선택 신호와 연결되는 칼럼 선택부(550)에 의해 선택되어, 대응하는 제3 내지 제8 데이터 라인들(GIO[32:47]~GIO[112:127])과 연결될 수 있다.
쓰기 동작의 경우, DQ0-DQ7 셀 블록들(511~518)에 기입될 데이터(Data[0:127])가 제1 내지 제8 데이터 라인들(GIO[0:127])로 전달될 수 있다. 제1 내지 제8 데이터 라인들(GIO[0:127]) 각각을 통하여 DQ0-DQ7 셀 블록들(511~518) 각각에 기입될 제1 내지 제8 버스트 데이터들, 총 128 비트 데이터(Data[0:127])가 수신될 수 있다. 수신된 128 비트 데이터(Data[0:127])는 워드 라인(WL)에 연결된 복수개의 메모리 셀들 중 특정 칼럼 선택 신호(예를 들어, CSL0 칼럼 선택 신호)와 연결되는 칼럼 선택부(550)에 의해 선택되는 DQ0-DQ7 셀 블록들(511~518) 각각의 16개의 메모리 셀들에 기입될 수 있다.
ECC 셀 어레이(520)는 DQ0-DQ7 셀 블록들(511~518) 내 하나의 워드 라인(WL)에 연결되는 메모리 셀들 중 1개의 불량 셀이 있는 경우, 불량 셀을 구제하는 용도로 사용될 수 있다. 예를 들어, 워드 라인(WL)과 CSL0 칼럼 선택 신호와 연결되는 칼럼 선택부(550)에 의해 선택되는 DQ0-DQ7 셀 블록들(511~518)의 메모리 셀들 중 DQ0 셀 블록(301) 내 불량 셀이 하나 있을 수 있다. 한편 불량 셀은 DQ0 셀 블록(511)의 불량 셀이 아니라, DQ1-DQ7 셀 블록(512~518) 내 워드 라인(WL)과 CSL0 칼럼 선택 신호와 연결되는 칼럼 선택부(550)에 의해 선택되는 메모리 셀들 중에서 발생되는 어느 하나의 불량 셀일 수도 있다. ECC 셀 어레이(520)는 ECC 엔진(560)에 의해 제어되고, DQ0-DQ7 셀 블록들(511~518)의 불량 셀을 검출하고 정정하는 용도로 사용될 수 있다.
ECC 셀 어레이(520)는, DQ0-DQ7 셀 블록들(511~518)과 동일하게, 8K 워드 라인들로 구성될 수 있다. ECC 셀 어레이(520)는, DQ0-DQ7 셀 블록들(511~518)과는 다르게, 8개 비트 라인들로 구성될 수 있다. ECC 셀 어레이(520)의 워드 라인들(WL)과 비트 라인들의 교차점들에 연결되는 메모리 셀들도 SRAM 셀들로 구성될 수 있다.
ECC 셀 어레이(520)에서, 8개의 비트 라인들은 패리티 데이터 라인(ECCP[0:7])과 연결될 수 있다. 패리티 데이터 라인(ECCP[0:7])으로 DQ0-DQ7 셀 블록들(511~518)의 불량 셀에 저장되는 데이터(Data[0:127])에 대한 패리티 비트들이 전달될 수 있다. 패리티 비트들은 패리티 데이터 라인(ECCP[0:7])을 통하여 ECC 셀 어레이(520) 내 8개의 메모리 셀들에 저장되고 리드될 수 있다. 이 때, ECC 셀 어레이(520)의 8개 메모리 셀들은 불량 셀의 워드 라인(WL)과 동일한 워드 라인(WL)에 연결될 수 있다.
ECC 엔진(560)은 DQ0-DQ7 셀 블록들(511~518)의 불량 셀을 검출 및 정정할 수 있다. 쓰기 동작에서, ECC 엔진(560)은 데이터(Data[0:127])에 대하여 패리티 비트들을 생성하고, 패리티 비트들을 패리티 데이터 라인(ECCP[0:7])으로 전달할 수 있다. 패리티 데이터 라인(ECCP[0:7]) 상의 패리티 비트들은 불량 셀의 워드 라인(WL)과 연결되는 ECC 셀 어레이(520)의 메모리 셀들에 저장될 수 있다. 리드 동작에서, ECC 엔진(560)은 제1 내지 제8 데이터 라인들(GIO[0:127])으로 전달되는 데이터와 패리티 데이터 라인(ECCP[0:7])으로 전달되는 데이터를 수신할 수 있다. 제1 내지 제8 데이터 라인들(GIO[0:127])으로 전달되는 데이터는 DQ0-DQ7 셀 블록들(511~518) 내 불량 셀의 워드 라인(WL)과 연결되는 메모리 셀들로부터 리드된 데이터이고, 패리티 데이터 라인(ECCP[0:7])으로 전달되는 데이터는 ECC 셀 어레이(520) 내 해당 워드 라인(WL)과 연결되는 메모리 셀들로부터 리드된 패리티 비트들이다.
일 실시예에서, ECC 엔진(560)은 제1 내지 제8 데이터 라인들(GIO[0:127]) 및 패리티 데이터 라인(ECCP[0:7])으로 전달된 코드워드를 이용하여 불량 셀로 인한 에러 비트를 검출 및 정정할 수 있다. 여기서, 에러 비트는, 예를 들면 1 비트의 에러일 수 있다. ECC 엔진(560)은 제1 내지 제8 데이터 라인들(GIO[0:127]) 및 패리티 데이터 라인(ECCP[0:7])으로 전달된 데이터를 수신하고, 신드롬 데이터를 생성하고, 불량 셀의 위치, 즉 에러 비트의 위치를 계산하고, 에러 비트의 위치에 대응하는 데이터를 정정하고, 정정 데이터를 출력할 수 있다.
다른 실시예에서, ECC 엔진(560)은 제1 내지 제8 데이터 라인들(GIO[0:127]) 및 패리티 데이터 라인(ECCP[0:7])으로 전달된 데이터를 이용하여 불량 셀로 인한 2 비트의 에러를 검출할 수 있다. 다만, ECC 엔진(560)은 제1 내지 제8 데이터 라인들(GIO[0:127]) 및 패리티 데이터 라인(ECCP[0:7])으로 전달된 코드워드만으로 2 비트의 에러를 정정하지 못할 수도 있다. 이 경우, ECC 엔진(560)은 복구 로직 회로(130)에 저장된 힌트 데이터를 기초로 2 비트의 에러들 중 적어도 하나의 에러를 정정할 수 있다.
도 6은 본 개시의 일 실시예에 따른 메모리 장치의 동작 방법을 설명하기 위한 흐름도이다.
도 1, 도 2, 도 5 및 도 6을 참조하면, 단계 S100에서, 메모리 장치(100)는 호스트(50)로부터 리드 커맨드 및 어드레스를 수신한다.
단계 S200에서, 휘발성 메모리(110)는 리드 동작을 수행한다. 예를 들면, 컨트롤 로직(260)은 리드할 것을 지시하는 커맨드(CMD), 어드레스(ADDR) 및 클럭(CLK)을 수신하고, 커맨드(CMD)를 디코딩함으로써 리드 커맨드를 식별하고, 로우 어드레스(RA), 컬럼 어드레스(CA) 및 제어 신호(CTR)를 출력한다. 컬럼 디코더(220), 로우 디코더(230), 라이트 드라이버/센스 증폭기(240), 및 입출력 회로(250) 각각이 동작하여, 타겟 워드 라인에 연결된 메모리 셀들에 저장된 데이터가 출력 데이터(DATA_OUT)로서 휘발성 메모리(110 or 200)의 외부로 출력될 수 있다.
단계 S300에서, ECC 엔진(120)은 출력 데이터(DATA_OUT)가 2 비트 페일인지 여부를 판단한다. 2 비트 페일은, 출력 데이터(DATA_OUT)가 2 비트의 에러를 갖는 것일 수 있다. 예를 들면, ECC 디코더(122)는 디코딩 동작을 수행하여 출력 데이터(DATA_OUT)에서 2 비트의 에러를 검출한다.
출력 데이터(DATA_OUT)에서 2 비트의 에러가 발생한 경우(S300, Yes), 단계 S400에서, ECC 디코더(122)는 힌트 데이터 버퍼(132)를 액세스한다. 단계 S500에서, ECC 디코더(122)는 힌트 데이터가 힌트 데이터 버퍼(132)에 저장되어 있는지 여부를 판단한다.
호스트(50)가 전달한 어드레스(ADDR)에 대응되는 힌트 데이터가 힌트 데이터 버퍼(132)에 저장되지 않은 경우(S500, Yes), 단계 S600에서, ECC 엔진(120)은 원본 데이터를 백업한다. ECC 디코더(122)는 출력 데이터(DATA_OUT)를 임시 저장할 수 있다. 또는 ECC 디코더(122)가 출력 데이터(DATA_OUT)를 복구 로직 회로(130)에 전달하고, 복구 로직 회로(130)가 출력 데이터(DATA_OUT)를 임시 저장할 수 있다. 원본 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 저장된 데이터일 수 있다. 예를 들면, 원본 데이터는 출력 데이터(DATA_OUT)일 수 있다.
단계 S700에서, 복구 로직 회로(130)는 테스트 동작을 수행한다. 예를 들면, ECC 디코더(122)는 힌트 데이터 요청 신호를 복구 로직 회로(130)에 전달한다. 복구 컨트롤러(131)는 힌트 데이터 요청 신호에 응답하여 테스트 제어 신호를 휘발성 메모리(110)에 전달한다. 복구 컨트롤러(131)는 제1 테스트 패턴 데이터에 대한 쓰기 동작 및 제1 테스트 데이터에 대한 읽기 동작을 수행하도록 휘발성 메모리(110)를 제어한다. 복구 컨트롤러(131)는 제2 테스트 패턴 데이터에 대한 쓰기 동작 및 제2 테스트 데이터에 대한 읽기 동작을 수행하도록 휘발성 메모리(110)를 제어한다.
단계 S800에서, 복구 로직 회로(130)는 힌트 정보를 업데이트한다. 힌트 정보는 힌트 데이터에 의해 지시되는 정보로서 노멀 셀의 위치 및 불량 셀의 위치를 나타내는 정보일 수 있다. 예를 들면, 복구 컨트롤러(131)는 제1 테스트 데이터 및 제2 테스트 데이터에 대해 XOR 연산을 수행하여 불량 셀의 위치를 나타내는 힌트 데이터를 생성하고, 힌트 데이터를 힌트 데이터 버퍼(132)에 저장한다.
단계 S900에서, 복구 로직 회로(130)는 원본 데이터를 덮어쓰기한다. 이때, 덮어쓰기는, 원본 데이터가 기존에 저장되어 있던 메모리 셀 영역에 원본 데이터가 저장되는 것을 의미할 수 있다. 예를 들면, 복구 컨트롤러(131)는 라이트 커맨드, 어드레스(ADDR)및 원본 데이터를 휘발성 메모리(110)에 전달하고, 휘발성 메모리(110)는 어드레스(ADDR)에 대응되는 메모리 셀 영역에 원본 데이터를 저장한다. 어드레스(ADDR)에 대응되는 메모리 셀 영역에 저장된 제2 테스트 데이터는 원본 데이터로 바뀌게 된다. 단계 S900가 수행되고 단계 S200이 반복 수행된다.
호스트(50)가 전달한 어드레스(ADDR)에 대응되는 힌트 데이터가 힌트 데이터 버퍼(132)에 저장된 경우(S500, No), 단계 S1000에서, ECC 엔진(120)은 힌트 정보를 획득한다. 예를 들면, ECC 디코더(122)는 힌트 데이터 버퍼(132)에 액세스하여 힌트 데이터를 수신한다. 단계 S1000가 수행된 뒤 단계 S1200가 수행된다.
출력 데이터(DATA_OUT)에서 2 비트의 에러가 발생하지 않은 경우(S300, No), 단계 S1100에서, ECC 엔진(120)은 출력 데이터(DATA_OUT)가 1 비트 페일인지 여부를 판단한다. 1 비트 페일은, 출력 데이터(DATA_OUT)가 1 비트의 에러를 갖는 것일 수 있다. 예를 들면, ECC 디코더(122)는 출력 데이터(DATA_OUT)에서 1 비트의 에러를 검출한다.
단계 S1200에서, ECC 엔진(120)은 출력 데이터(DATA_OUT)에 대하여 ECC 디코딩 동작을 수행한다. 예를 들면, ECC 디코더(122)는 1 비트의 에러를 갖는 출력 데이터(DATA_OUT)에서 에러 비트를 정정한다. 다른 예를 들면, ECC 디코더(122)는 힌트 데이터를 기초로 출력 데이터(DATA_OUT)에서 2 비트의 에러들 중 적어도 하나의 에러를 정정할 수 있다.
단계 S1300에서, ECC 엔진(120)은 정정된 데이터를 호스트(50)에 전달할 수 있다.
도 7은 본 개시의 일 실시예에 따른 하드 디펙 테스트를 설명하기 위한 흐름도이다.
하드 디펙 테스트(Hard defect test)는 휘발성 메모리(110)가 상대적으로 높은 내부 전압이나 작은 클럭의 주파수로 동작하는 경우에 불량 셀을 검출하는 테스트일 수 있다. 하드 디펙 테스트(Hard defect test)는 제1 테스트 동작으로 지칭될 수 있다.
도 1 및 도 7을 참조하면, 단계 S2000에서, 복구 로직 회로(130)는 하드 디펙 테스트 전압의 레벨 및 하드 디펙 테스트 클럭의 주파수를 설정한다. 예를 들면, 복구 로직 회로(130)는 내부 전압 및 클럭의 주파수를 변경할 것을 요청하는 세팅 요청 신호를 호스트(50)에 전달하고, 호스트(50)는 세팅 요청 신호에 응답하여 하드 디펙 테스트 전압의 레벨을 갖는 제1 내부 전압과 하드 디펙 테스트 클럭의 주파수를 갖는 제1 클럭을 메모리 장치(100)에 전달한다. 일 실시예에서, 하드 디펙 테스트 전압은 정상 상태의 휘발성 메모리(110)에서 사용되는 내부 전압의 레벨보다 높은 레벨을 가질 수 있다. 하드 디펙 테스트 클럭은 정상 상태의 휘발성 메모리(110)에서 사용되는 클럭의 주파수보다 작은 주파수를 가질 수 있다.
단계 S2100에서, 휘발성 메모리(110)는 복구 로직 회로(130)의 제어에 응답하여 제1 테스트 패턴 데이터를 타겟 워드 라인에 기입한다. 예를 들면, 복구 컨트롤러(131)는 라이트 커맨드, 어드레스, 및 제1 테스트 패턴 데이터를 휘발성 메모리(110)에 전달하고, 제1 테스트 패턴 데이터는 타겟 워드 라인에 연결된 메모리 셀들에 저장된다.
단계 S2200에서, 휘발성 메모리(110)는 복구 로직 회로(130)의 제어에 응답하여 제1 테스트 데이터를 리드하고, 복구 로직 회로(130)는 리드된 제1 테스트 데이터를 버퍼링한다. 예를 들면, 복구 컨트롤러(131)는 리드 커맨드 및 어드레스를 휘발성 메모리(110)에 전달하고, 휘발성 메모리(110)는 제1 테스트 데이터를 출력한다. 복구 컨트롤러(131)는 테스트 데이터 버퍼(133)에 임시 저장한다.
단계 S2300에서, 휘발성 메모리(110)는 복구 로직 회로(130)의 제어에 응답하여 제2 테스트 패턴 데이터를 타겟 워드 라인에 기입한다.
단계 S2400에서, 휘발성 메모리(110)는 복구 로직 회로(130)의 제어에 응답하여 제1 테스트 데이터를 리드하고, 복구 로직 회로(130)는 리드된 제2 테스트 데이터를 버퍼링한다.
단계 S2500에서, 복구 로직 회로(130)는 제1 테스트 데이터 및 제2 테스트 데이터를 이용하여 XOR 연산한다.
단계 S2500에서, 복구 로직 회로(130)는 XOR 연산으로 생성된 결과 데이터의 값이 모두 특정 값, 예를 들어 "0h"인지 여부를 확인한다.
복구 로직 회로(130)는 XOR 연산으로 생성된 결과 데이터의 값이 모두 제2 값, 예를 들어 "0h"인지 여부를 확인한다.
결과 데이터가 제1 값(예를 들어 "Fh" 또는 "1b")를 적어도 하나 이상 갖는 경우(S2600, No), 단계 S2700에서, 복구 로직 회로(130)는 결과 데이터를 힌트 데이터로서 저장한다. 예를 들면, 복구 컨트롤러(131)는 결과 데이터를 힌트 데이터 버퍼(132)에 임시 저장한다.
결과 데이터의 값이 모두 제2 값(예를 들어 "0h")이면(S2600, Yes), 휘발성 메모리(110)에서 하드 디펙은 발생하지 않은 것으로 판단될 수 있다. 단계 S2800에서, 복구 로직 회로(130)는 소프트 디펙 테스트 전압의 레벨 및 소프트 디펙 테스트 클럭의 주파수를 설정한다. 예를 들면, 복구 로직 회로(130)는 내부 전압 및 클럭의 주파수를 변경할 것을 요청하는 세팅 요청 신호를 호스트(50)에 전달하고, 호스트(50)는 세팅 요청 신호에 응답하여 소프트 디펙 테스트 전압의 레벨을 갖는 제2 내부 전압과 소프트 디펙 테스트 클럭의 주파수를 갖는 제2 클럭을 메모리 장치(100)에 전달한다. 일 실시예에서, 소프트 디펙 테스트 전압은 정상 상태의 휘발성 메모리(110)에서 사용되는 내부 전압의 레벨보다 낮은 레벨을 가질 수 있다. 소프트 디펙 테스트 클럭은 정상 상태의 휘발성 메모리(110)에서 사용되는 클럭의 주파수보다 큰 주파수를 가질 수 있다. 실시예에 따라, 복구 로직 회로(130)는 소프트 디펙 테스트 전압만을 설정하거나 소프트 디펙 테스트 클럭만을 설정할 수도 있다.
단계 S2900에서, 복구 로직 회로(130)는 소프트 디펙 테스트(Soft defect test)를 수행한다. 소프트 디펙 테스트에 대한 설명은 도 8을 참조하여 후술한다.
도 8은 본 개시의 일 실시예에 따른 소프트 디펙 테스트를 설명하기 위한 흐름도이다.
소프트 디펙 테스트는 휘발성 메모리(110)가 상대적으로 낮은 내부 전압이나 큰 클럭의 주파수로 동작하는 경우에 불량 셀을 검출하는 테스트일 수 있다. 소프트 디펙 테스트는 제2 테스트 동작으로 지칭될 수 있다.
도 1 및 도 8을 참조하면, 단계 S2910 내지 단계 S2960에서 수행되는 동작은 도 7을 참조하여 전술한 단계 S2100 내지 S2500에서 수행되는 동작과 동일할 수 있다. 즉, 단계 S2910에서 제1 테스트 패턴 데이터가 기입되고, 단계 S2920에서 제1 테스트 데이터가 리드 및 버퍼링되고, 단계 S2930에서 제2 테스트 패턴 데이터가 기입되고, 단계 S2940에서 제2 테스트 데이터가 리드 및 버퍼링되며, 단계 S2950에서 제1 테스트 데이터 및 제2 테스트 데이터가 XOR 연산된다. 단계 S2960에서 복구 로직 회로(130)는 XOR 연산으로 생성된 결과 데이터의 값이 모두 제2 값, 예를 들어 "0h"인지 여부를 확인한다.
결과 데이터가 제1 값(예를 들어 "Fh")를 적어도 하나 이상 갖는 경우(S2960, No), 단계 S2970에서, 복구 로직 회로(130)는 결과 데이터를 힌트 데이터로서 저장한다.
결과 데이터의 값이 모두 제2 값(예를 들어 "0h")이면(S2600, Yes), 단계 S2980에서, 복구 로직 회로(130)는 소프트 디펙 테스트 전압의 레벨 및 소프트 디펙 테스트 클럭의 주파수를 조절한다. 예를 들면, 복구 로직 회로(130)는 내부 전압 및 클럭의 주파수를 변경할 것을 요청하는 세팅 요청 신호를 호스트(50)에 전달하고, 호스트(50)는 세팅 요청 신호에 응답하여 제2 내부 전압(도 7을 참조)의 레벨보다 더 낮은 레벨을 갖는 제3 내부 전압 및 제2 클럭의 주파수보다 더 큰 주파수를 갖는 제3 클럭을 메모리 장치(100)에 전달한다. 실시예에 따라, 복구 로직 회로(130)는 소프트 디펙 테스트 전압만을 조절하거나 소프트 디펙 테스트 클럭만을 조절할 수도 있다. 단계 S2980가 수행된 후, 단계 S2910이 수행되며, 결과 데이터가 제1 값(예를 들어 "Fh")를 적어도 하나 이상 가질 때까지, 단계 S2910 내지 단계 S2960 및 단계 S2980이 반복적으로 수행된다.
도 9a 내지 도 9c는 본 개시의 일 실시예에 따른 힌트 데이터를 설명하기 위한 도면이다.
도 9a를 참조하면, 힌트 데이터는 힌트 테이블(Hint table)의 자료 구조, 또는 비트맵(bitmap)으로 관리될 수 있다. 출력 데이터(DATA_OUT)에서 2 비트의 에러가 발생한 경우, 힌트 데이터는 특정 세그먼트에 대하여 비트 라인마다 제1 값 또는 제2 값을 가질 수 있다. 여기서, 특정 세그먼트는 본 개시의 특정 휘발성 메모리(예를 들면, 도 1에 도시된 휘발성 메모리(110))를 나타낼 수 있다. 만약 휘발성 메모리(110)가 메모리 장치(100)에 둘 이상 포함되는 경우, 세그먼트는 두 개 이상일 수 있다. 비트 라인의 개수는 예를 들면 136개일 수 있다. 하지만, 이에 한정되는 것은 아니다. 이하에서는 비트 라인의 개수는 136개인 것으로 가정한다. 일 실시예에서 제1 값(예를 들어, "1b")은 해당 비트 라인에서 에러가 발생함을 나타내는 값이고 제2 값(예를 들어, "0b")은 해당 비트 라인이 정상인 것을 나타낼 수 있다. 하지만, 이에 한정되는 것은 아니다. 도 9a를 참조하여 예를 들면, 6번 비트 라인 및 71번 비트 라인에서 불량 셀이 각각 존재하는 경우, 6번 비트 라인 및 71번 비트 라인에 대한 힌트 데이터의 값은 "1b"이고, 나머지 비트 라인들에 대한 힌트 데이터의 값은 "0b"일 수 있다. 하지만, 이에 한정되는 것은 아니다. 이하에서는 편의상 6번 비트 라인 및 71번 비트 라인에서 불량 셀이 각각 발생한 것으로 가정한다.
출력 데이터(DATA_OUT)에서 2 비트의 에러가 발생하더라도, 힌트 데이터는 에러가 각각 발생한 두 비트 라인들 중 어느 하나의 비트 라인에 대하여 제1 값을 가질 수 있다. 도 9b를 참조하여 예를 들면, 6번 비트 라인 및 71번 비트 라인에서 불량 셀이 각각 발생하더라도, 6번 비트 라인에 대한 힌트 데이터의 값은 "0b"이고, 71번 비트 라인에 대한 힌트 데이터의 값은 "1b"이며, 나머지 비트 라인들에 대한 힌트 데이터의 값은 "0b"일 수 있다. 도 9c를 참조하여 예를 들면, 6번 비트 라인 및 71번 비트 라인에서 불량 셀이 각각 발생하더라도, 6번 비트 라인에 대한 힌트 데이터의 값은 "1b"이고, 71번 비트 라인에 대한 힌트 데이터의 값은 "0b"이며, 나머지 비트 라인들에 대한 힌트 데이터의 값은 "0b"일 수 있다.
도 10은 본 개시의 일 실시예에 따른 ECC 디코더를 설명하기 위한 도면이다.
도 1, 도 5 및 도 10을 참조하면, ECC 디코더(600)는 도 1에 도시된 ECC 디코더(122)에 대응될 수 있다. ECC 디코더(600)는 제1 내지 제8 데이터 라인들(GIO[0:127])으로 전달되는 데이터(DATA[0:127])와 패리티 데이터 라인(ECCP[0:7])으로 전달되는 패리티 비트(PARITY BIT[0:7])를 수신할 수 있다. 데이터(DATA[0:127])와 패리티 비트(PARITY BIT[0:7])는 하나의 코드워드로서 전술한 출력 데이터(DATA_OUT)로 구성될 수 있다. ECC 디코더(600)는 복구 로직 회로(130)로부터 힌트 데이터(HD[0:135])를 수신할 수 있다. ECC 디코더(600)는 출력 데이터(DATA_OUT) 및 힌트 데이터(HD[0:135])를 기초로 에러 비트를 정정하여 정정 데이터(CDATA[0:127])를 출력할 수 있다.
일 실시예에서, ECC 디코더(600)는 힌트 데이터 적용기(610), 신드롬 생성기(620), 계수 계산기(630), 1 비트 에러 검출기(640) 및 에러 정정기(650)를 포함할 수 있다.
힌트 데이터 적용기(610)는, 출력 데이터(DATA_OUT)(예를 들면, 데이터(DATA[0:127])와 패리티 비트(PARITY BIT[0:7]))와 힌트 데이터(HD[0:135])를 XOR 연산함으로써, 적어도 하나의 에러 비트가 정정된 데이터를 출력할 수 있다. 적어도 하나의 에러 비트가 정정된 데이터는 신드롬 생성기(620)에 전달될 수 있다. 신드롬 생성기(620)는 128 비트의 데이터(DATA[0:127])와 패리티 비트(PARITY BIT[0:7])를 수신하고 XOR 어레이 연산을 이용하여 신드롬 데이터를 생성할 수 있다. 계수 계산기(630)는 신드롬 데이터를 이용하여 오류 위치 방정식의 계수를 산출할 수 있다. 오류 위치 방정식은 에러 비트의 역수를 근으로 하는 방정식일 수 있다. 1 비트 에러 검출기(640)는 신드롬 데이터를 이용하여 에러 비트의 위치를 계산할 수 있다. 에러 정정기(650)는 1 비트 에러 검출기(640)의 검출 결과에 기초하여 에러 비트의 위치를 결정할 수 있다. 에러 정정기(650)는 결정된 에러 비트의 위치 정보에 따라 에러가 발생한 비트의 값을 반전시켜 에러를 정정하고, 정정 데이터(CDATA)를 출력할 수 있다.
도 11a 내지 도 11c는 본 개시의 일 실시예에 따른 힌트 데이터 적용기의 동작을 설명하기 위한 도면이다.
본 개시의 일 실시예를 설명함에 있어서, 비트 라인의 개수는 136개이고, 데이터(DATA[0:127])와 패리티 비트(PARITY BIT[0:7])로 구성된 코드워드(Codeword[0:135])에서 2 비트의 에러가 발생하고, 코드워드(Codeword[0:135])에서 6번 비트 라인(BL 6) 및 71번 비트 라인(BL 71)에 위치한 셀이 불량 셀인 것으로 가정한다.
도 9a 및 도 11a을 참조하면, 도 11a에서 0번 내지 135번 비트 라인들(BL 0~BL 135) 중 6번 비트 라인(BL 6) 및 71번 비트 라인(BL 71)에 대한 힌트 데이터(HD[0:135])의 값은 "1b"이고 나머지 비트 라인들에 대한 힌트 데이터(HD[0:135])의 값은 "0b"일 수 있다. 힌트 데이터 적용기(610)는 코드워드(Codeword[0:135])와 힌트 데이터(HD[0:135])를 XOR 연산할 수 있다. 이 경우, 6번 비트 라인(BL 6) 및 71번 비트 라인(BL 71)에 대한 코드워드(Codeword[0:135])의 비트 값이 반전된다. 도 11a에 도시된 연산 데이터(ED[0:135])는, 코드워드(Codeword[0:135])에서 발생한 모든 에러가 정정된 데이터일 수 있다.
도 9b 및 도 11b를 참조하면, 도 11b에서 0번 내지 135번 비트 라인들(BL 0~BL 135) 중 71번 비트 라인(BL 71)에 대한 힌트 데이터(HD[0:135])의 값은 "1b"이고 나머지 비트 라인들에 대한 힌트 데이터(HD[0:135])의 값은 "0b"일 수 있다. 힌트 데이터 적용기(610)는 코드워드(Codeword[0:135])와 힌트 데이터(HD[0:135])를 XOR 연산할 수 있다. 이 경우, 71번 비트 라인(BL 71)에 대한 코드워드(Codeword[0:135])의 비트 값이 반전되고 6번 비트 라인(BL 6)에 대한 코드워드(Codeword[0:135])의 비트 값은 비반전된다. 도 11b에 도시된 연산 데이터(ED[0:135])는 6번 비트 라인(BL 6)에 대응되는 에러 비트를 포함하는 데이터일 수 있다. 즉, 연산 데이터(ED[0:135])는 1 비트의 에러를 포함하는 코드워드(Codeword[0:135])일 수 있다. 도 11b에 도시된 연산 데이터(ED[0:135])는 1 비트의 에러를 포함하는 코드워드(Codeword[0:135])이므로, 도 11b에 도시된 연산 데이터(ED[0:135])에서 1 비트의 에러는 신드롬 생성기(620), 계수 계산기(630), 1 비트 에러 검출기(640), 및 에러 정정기(650)에 의해 정정될 수 있다.
도 9c 및 도 11c를 참조하면, 도 11c에서 0번 내지 135번 비트 라인들(BL 0~BL 135) 중 6번 비트 라인(BL 6)에 대한 힌트 데이터(HD[0:135])의 값은 "1b"이고 나머지 비트 라인들에 대한 힌트 데이터(HD[0:135])의 값은 "0b"일 수 있다. 힌트 데이터 적용기(610)는 코드워드(Codeword[0:135])와 힌트 데이터(HD[0:135])를 XOR 연산할 수 있다. 이 경우, 6번 비트 라인(BL 6)에 대한 코드워드(Codeword[0:135])의 비트 값이 반전되고 71번 비트 라인(BL 71)에 대한 코드워드(Codeword[0:135])의 비트 값은 비반전된다. 도 11c에 도시된 연산 데이터(ED[0:135])는 71번 비트 라인(BL 71)에 대응되는 에러 비트를 포함하는 데이터이며, 1 비트의 에러를 포함하는 코드워드(Codeword[0:135])로 취급될 수 있다. 도 11c에 도시된 연산 데이터(ED[0:135])에서 1 비트의 에러는 신드롬 생성기(620), 계수 계산기(630), 1 비트 에러 검출기(640), 및 에러 정정기(650)에 의해 정정될 수 있다.
도 12는 본 개시의 다른 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 12를 참조하면, 본 개시의 다른 실시예에 따른 전자 장치는 도 1에 도시된 전자 장치의 동작을 수행할 수 있다.
본 개시의 다른 실시예에 따른 전자 장치는 호스트(50) 및 메모리 장치(100')를 포함할 수 있다. 호스트(50)는 도 1에 도시된 바와 동일하다. 메모리 장치(100')는 복수의 휘발성 메모리(110)들, ECC 엔진(120), 복구 로직 회로(130), 및 멀티플렉서(140)를 포함할 수 있다. 복수의 휘발성 메모리(110)들은 각각 연속되는 어드레스에 대응되는 메모리 영역을 가질 수 있다. 멀티플렉서(140)는 복수의 휘발성 메모리(110)들 중 호스트(50)의 어드레스에 대응되는 하나 이상의 휘발성 메모리(110)를 선택할 수 있다.
도 13은 본 개시의 또 다른 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 13을 참조하면, 본 개시의 또 다른 실시예에 따른 전자 장치는 도 1 또는 도 12에 도시된 전자 장치의 동작을 수행할 수 있다.
본 개시의 또 다른 실시예에 따른 전자 장치는 어플리케이션 프로세서(1410), 클럭 생성기(1420), 전력 공급기(1430), 버퍼(1440), 복구 로직 회로(1450), 및 비휘발성 메모리(1460)를 포함할 수 있다. 어플리케이션 프로세서(1410), 클럭 생성기(1420), 전력 공급기(1430), 버퍼(1440), 복구 로직 회로(1450), 및 비휘발성 메모리(1460)는 버스를 통해 서로 통신할 수 있다.
어플리케이션 프로세서(1410)는 클럭 생성기(1420), 전력 공급기(1430), 버퍼(1440), 복구 로직 회로(1450), 및 비휘발성 메모리(1460)를 제어할 수 있다. 어플리케이션 프로세서(1410)는 도 1에 도시된 호스트(50)가 수행하는 동작을 수행할 수 있다. 일 실시예에서, 어플리케이션 프로세서(1410)는 리드 커맨드 및 어드레스를 버퍼(1440)에 전달할 수 있다. 이 경우, 어드레스는 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n) 중 어느 하나에 구비된 메모리 영역에 대응될 수 있다. n은 2 이상의 정수일 수 있다.
클럭 생성기(1420)는 버퍼(1440)를 구동시키기 위한 클럭을 생성할 수 있다. 또한 클럭 생성기(1420)는 비휘발성 메모리(1460)를 구동시키기 위한 클럭을 생성할 수 있다.
전력 공급기(1430)는 내부 전압을 생성할 수 있다.
버퍼(1440)는 도 1에 도시된 메모리 장치(100) 또는 도 12에 도시된 메모리 장치(100')에 대응될 수 있다. 일 실시예에서, 버퍼(1440)는 ECC 엔진(1441), 멀티플렉서(1442), 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n)을 포함할 수 있다. ECC 엔진(1441)은 도 1, 도 4, 도 5, 도 10 및 도 11a 내지 도 11c를 참조하여 전술한 바와 동일하다. 멀티플렉서(1442)는 도 12를 참조하여 전술한 바와 동일한 동작을 수행할 수 있다. 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n)은 도 12를 참조하여 전술한 복수의 휘발성 메모리(110)들에 대응될 수 있다. 어플리케이션 프로세서(1410)가 리드 커맨드 및 어드레스를 버퍼(1440)에 전달한 경우, 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n) 중 어드레스에 대응되는 메모리 영역을 구비한 SRAM(예를 들면 제1 SRAM(1443_1))은, 리드 커맨드에 응답하여 저장된 데이터를 리드하고, 데이터를 출력할 수 있다. SRAM(예를 들면 제1 SRAM(1443_1))으로부터 출력된 데이터는 멀티플렉서(1442)를 통해 ECC 엔진(1441)으로 전달된다. ECC 엔진(1441)은 SRAM(예를 들면 제1 SRAM(1443_1))으로부터 출력된 데이터에서 에러를 정정하고, 정정 데이터를 출력할 수 있다. ECC 엔진(1441)은 SRAM(예를 들면 제1 SRAM(1443_1))으로부터 출력된 데이터에서 2 비트의 에러를 검출할 수 있다. 이 경우, ECC 엔진(1441)은 복구 로직 회로(1450)에 액세스하고, SRAM(예를 들면 제1 SRAM(1443_1))에 대응되는 힌트 데이터가 복구 로직 회로(1450)에 저장되어 있는지 확인할 수 있다. SRAM(예를 들면 제1 SRAM(1443_1))에 대응되는 힌트 데이터가 복구 로직 회로(1450)에 저장된 경우, ECC 엔진(1441)은 힌트 데이터를 기초로 2 비트의 에러를 갖는 데이터를 정정할 수 있다.
복구 로직 회로(1450)는 도 1을 참조하여 전술한 바와 같은 동작을 수행할 수 있다. ECC 엔진(1441)이 SRAM(예를 들면 제1 SRAM(1443_1))으로부터 출력된 데이터에서 2 비트의 에러를 검출하는 경우, 복구 로직 회로(1450)는 SRAM(예를 들면 제1 SRAM(1443_1))에 대응되는 힌트 데이터를 생성할 수 있다. 이를 위해, 복구 로직 회로(1450)는, 제1 테스트 패턴 데이터에 대한 쓰기 동작, 제1 테스트 데이터에 대한 리드 동작, 제2 테스트 패턴 데이터에 대한 쓰기 동작, 및 제2 테스트 데이터에 대한 리드 동작을 순차적으로 수행하도록, 버퍼(1440)를 제어할 수 있다.
비휘발성 메모리(1460)는 어플리케이션 프로세서(1410)의 제어에 응답하여 동작할 수 있다. 구체적으로, 비휘발성 메모리(1460)는 어플리케이션 프로세서(1410)로부터 커맨드 및 어드레스를 수신하고, 메모리 셀들(미도시) 중 어드레스에 의해 선택된 메모리 셀을 액세스할 수 있다. 비휘발성 메모리(1460)는 어드레스에 의해 선택된 메모리 셀에 대해 커맨드가 지시하는 동작을 수행할 수 있다. 일 실시예에서, 커맨드는, 입출력 커맨드로서 프로그램 커맨드, 리드 커맨드, 또는 이레이즈 커맨드일 수 있고, 커맨드가 지시하는 동작(또는 커맨드에 대응되는 동작)은 예를 들어, 프로그램 동작(또는 쓰기 동작), 리드 동작, 또는 소거 동작일 수 있다. 일 예로서 비휘발성 메모리(1460)는, 예를 들어, 플래시 메모리(flash memory)일 수 있다. 플래시 메모리에는, 예를 들어 낸드 플래시 메모리(NAND flash memory), 노어 플래시 메모리(NOR flash memory) 등이 포함될 수 있다. 비휘발성 메모리(1460)가 플래시 메모리를 포함할 때, 플래시 메모리는 2D NAND 메모리 어레이 또는 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 하지만, 이에 한정되는 것은 아니다.
일 실시예에서, 전자 장치가 정상적으로 파워 오프되는 경우, 어플리케이션 프로세서(1410)는, 복구 로직 회로(1450)에 임시 저장된 힌트 데이터를 비휘발성 메모리(1460)에 저장하도록, 복구 로직 회로(1450) 및 비휘발성 메모리(1460)를 제어할 수 있다.
도 14는 내부 전압 및 클럭의 주파수에 따라 발생되는 에러 경향성을 슈모 조건(Shmoo condition)으로 나타낸 도면이다.
본 개시의 실시예들 각각에 따른 전자 장치에서 다양한 내부 전압 및 클럭의 주파수가 생성될 수 있다. 예를 들면, 제1 내지 제5 내부 전압들(IV1, IV2, IV3, IV4, IV5)이 선택적으로 생성될 수 있다. 제1 내지 제5 클럭 주파수(CF1, CF2, CF3, CF4, CF5)이 선택적으로 생성될 수 있다. 하지만, 이에 한정되는 것은 아니다. 이하에서는 편의상 다양한 내부 전압 및 클럭의 주파수는 각각 제1 내지 제5 내부 전압들(IV1, IV2, IV3, IV4, IV5)과 제1 내지 제5 클럭 주파수(CF1, CF2, CF3, CF4, CF5)인 것으로 가정한다. 그리고, 제i+1 내부 전압(i는 4 이하의 자연수)의 레벨은 제i 내부 전압의 레벨보다 높은 것으로 가정한다. 제i+1 클럭 주파수는 제i 클럭 주파수보다 큰 것으로 가정한다.
동일한 클럭 주파수에서 내부 전압이 높을수록 불량 셀이 발생할 확률이 감소될 수 있다. 예를 들면, 제5 클럭 주파수(CF5)에서 제1 내지 제4 내부 전압들(IV1, IV2, IV3, IV4)에서 불량 셀이 발생하고 제5 내부 전압(IV5)에서 불량 셀이 발생하지 않을 수 있다. 하지만, 이에 한정되는 것은 아니다. 동일한 내부 전압에서 클럭 주파수가 클수록 불량 셀이 발생할 확률이 증가할 수 있다. 예를 들면, 제1 내부 전압(IV1)에서 제1 클럭 주파수(CF1)에서 불량 셀이 발생하지 않고 제2 클럭 주파수(CF2)부터 불량 셀이 발생할 수 있다. 하지만, 이에 한정되는 것은 아니다. 결론적으로, 클럭 주파수가 낮을수록 내부 전압이 높을수록 불량 셀이 발생할 확률이 감소하게 된다.
도 15는 각 세그먼트의 어드레스에서 발생 가능한 에러 현상을 설명하기 위한 도면이다.
도 15를 참조하면, 세그먼트들((k-1)th SEG), (k)th SEG), (k+1)th SEG), k는 2 이상의 정수)은 도 12에 도시된 복수의 휘발성 메모리(110)들 또는 도 13에 도시된 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n)에 대응될 수 있다. 도 13 및 도 15를 참조하여 예를 들면, k-1 번째 세그먼트((k-1)th SEG)는 제1 SRAM(1443_1)에 대응되고, k 번째 세그먼트((k)th SEG)는 제2 SRAM(1443_2)에 대응되며, k+1 번째 세그먼트((k+1)th SEG)는 제3 SRAM에 대응될 수 있다. 연속되는 세그먼트들((k-1)th SEG), (k)th SEG), (k+1)th SEG))에 대하여, 어드레스의 값이 연속될 수 있다.
사용자는, 테스트용 데이터(예를 들면"Fh"을 값을 갖는 데이터)를 세그먼트들((k-1)th SEG, (k)th SEG, (k+1)th SEG)에 기입함으로써, 불량 셀을 확인할 수 있다. 2 비트의 에러의 경우, 어느 하나의 세그먼트의 특정 컬럼(column)에서 연속적으로 비트 플립(bit flip)이 발생하되, 이러한 에러는 다른 세그먼트에 영향을 주지 않는다. 예를 들면, k 번째 세그먼트((k)th SEG)의 0번 어드레스에 대응되는 컬럼(column)에서 연속적으로 비트 플립(bit flip)이 발생한 것으로 가정한다. 이 경우, k 번째 세그먼트((k)th SEG)에서 발생한 에러는 k-1 번째 세그먼트((k-1)th SEG) 및 k+1 번째 세그먼트((k+1)th SEG)에 영향을 주지 않는다.
도 16은 본 개시의 다른 실시예에 따른 힌트 데이터를 설명하기 위한 도면이다.
도 16을 참조하면, 본 개시의 다른 실시예에 따른 힌트 데이터는 도 12에 도시된 복수의 휘발성 메모리(110)들, 도 13에 도시된 제1 내지 제n SRAM(1443_1, 1443_2, ..., 1443_n), 또는 도 15에 도시된 세그먼트들(예를 들어, (k-1)th SEG, (k)th SEG, (k+1)th SEG)마다 생성 및 저장될 수 있다. 도 13 및 도 16을 참조하여 예를 들면, 제1 힌트 데이터는 k-1 번째 세그먼트((k-1)th SEG)에 대한 힌트 데이터이며, k-1 번째 세그먼트((k-1)th SEG)는 제1 SRAM(1443_1)에 대응될 수 있다. 그리고, 제2 힌트 데이터는 k 번째 세그먼트((k)th SEG)에 대한 힌트 데이터이며, k 번째 세그먼트((k)th SEG)는 제2 SRAM(1443_2)에 대응될 수 있다. 그리고, 제3 힌트 데이터는 k+1 번째 세그먼트((k+1)th SEG)에 대한 힌트 데이터이며, k+1 번째 세그먼트((k+1)th SEG)는 제3 SRAM에 대응될 수 있다. 하지만, 이에 한정되는 것은 아니다. 이하에서는 제1 힌트 데이터는 제1 SRAM(1443_1)에 대한 힌트 데이터이고, 제2 힌트 데이터는 제2 SRAM(1443_2)에 대한 힌트 데이터이며, k+1 번째 세그먼트((k+1)th SEG)는 제3 SRAM에 대한 힌트 데이터인 것으로 가정한다.
제1 힌트 데이터의 값은 제2 값일 수 있다. 이는 제1 SRAM(1443_1)는 노멀 셀만을 포함하는 것이며, 제1 SRAM(1443_1)에서 2 비트의 에러가 발생하지 않을 수 있다.
제2 SRAM(1443_2)의 6번 비트 라인 및 71번 비트 라인에서 불량 셀이 각각 발생한 경우, 6번 비트 라인 및 71번 비트 라인에 대한 제2 힌트 데이터의 값은 "1b"이고, 나머지 비트 라인들에 대한 힌트 데이터의 값은 "0b"일 수 있다.
제3 SRAM의 2번 비트 라인과 나머지 비트 라인들 중 어느 하나의 비트 라인(예를 들면, 3번 비트 라인)에서 불량 셀이 각각 발생한 경우, 2번 비트 라인에 대한 제3 힌트 데이터의 값 또는 그 하나의 비트 라인(예를 들면, 3번 비트 라인)에 대한 제3 힌트 데이터의 값은 "1b"일 수 있다. 예를 들면, 2번 비트 라인에 대한 제3 힌트 데이터의 값이 "1b"이고, 나머지 비트 라인들에 대한 힌트 데이터의 값은 "0b"일 수 있다.
도 17은 본 발명의 일 실시예에 따른 UFS 시스템에 대해 설명하기 위한 도면이다.
도 17을 참조하면, UFS 시스템(1000)은 JEDEC(Joint Electron Device Engineering Council)에서 발표하는 UFS 표준을 따르는 시스템일 수 있다. UFS 시스템(1000)은 UFS 호스트(1100), UFS 장치(1200) 및 UFS 인터페이스(1300)를 포함할 수 있다.
UFS 호스트(1100)와 UFS 장치(1200)는 UFS 인터페이스(1300)를 통해 상호 연결될 수 있다. 도 1의 호스트(50)가 애플리케이션 프로세서일 경우, UFS 호스트(1100)는 해당 애플리케이션 프로세서의 일부로서 구현될 수 있다.
UFS 호스트(1100)는 UFS 호스트 컨트롤러(1110), 애플리케이션(1120), UFS 드라이버(1130), 호스트 메모리(1140) 및 UIC(UFS interconnect) 레이어(1150)를 포함할 수 있다. UFS 장치(1200)는 UFS 장치 컨트롤러(1210), 비휘발성 메모리(1220), 스토리지 인터페이스(1230), 장치 메모리(1240), UIC 레이어(1250) 및 레귤레이터(1260)를 포함할 수 있다. 비휘발성 메모리(1220)는 복수의 메모리 유닛(1221)으로 구성될 수 있으며, 이와 같은 메모리 유닛(1221)은 2D 구조 혹은 3D 구조의 V-NAND 플래시 메모리를 포함할 수 있으나, PRAM 및/또는 RRAM 등의 다른 종류의 비휘발성 메모리를 포함할 수도 있다. UFS 장치 컨트롤러(1210)와 비휘발성 메모리(1220)는 스토리지 인터페이스(1230)를 통해 서로 연결될 수 있다. 스토리지 인터페이스(1230)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다. 장치 메모리(1240)는 도 1에 도시된 메모리 장치(100)에 대응될 수 있다.
애플리케이션(1120)은 UFS 장치(1200)의 기능을 이용하기 위해 UFS 장치(1200)와의 통신을 원하는 프로그램을 의미할 수 있다. 애플리케이션(1120)은 UFS 장치(1200)에 대한 입출력을 위해 입출력 요청(input-output request, IOR)을 UFS 드라이버(1130)로 전송할 수 있다. 입출력 요청(IOR)은 데이터의 리드(read) 요청, 쓰기(write) 요청 및/또는 소거(discard) 요청 등을 의미할 수 있으나, 반드시 이에 한정되는 것은 아니다.
UFS 드라이버(1130)는 UFS-HCI(host controller interface)를 통해 UFS 호스트 컨트롤러(1110)를 관리할 수 있다. UFS 드라이버(1130)는 애플리케이션(1120)에 의해 생성된 입출력 요청을 UFS 표준에 의해 정의된 UFS 명령으로 변환하고, 변환된 UFS 명령을 UFS 호스트 컨트롤러(1110)로 전달할 수 있다. 하나의 입출력 요청은 복수의 UFS 명령으로 변환될 수 있다. UFS 명령은 기본적으로 SCSI 표준에 의해 정의된 명령일 수 있지만, UFS 표준 전용 명령일 수도 있다.
UFS 호스트 컨트롤러(1110)는 UFS 드라이버(1130)에 의해 변환된 UFS 명령을 UIC 레이어(1150)와 UFS 인터페이스(1300)를 통해 UFS 장치(1200)의 UIC 레이어(1250)로 전송할 수 있다. 이 과정에서, UFS 호스트 컨트롤러(1110)의 UFS 호스트 레지스터(1111)는 명령 큐(command queue, CQ)로서의 역할을 수행할 수 있다.
UFS 호스트(1100) 측의 UIC 레이어(1150)는 MIPI M-PHY(1151)와 MIPI UniPro(1152)를 포함할 수 있으며, UFS 장치(1200) 측의 UIC 레이어(1250) 또한 MIPI M-PHY(1251)와 MIPI UniPro(1252)을 포함할 수 있다.
UFS 인터페이스(1300)는 기준 클럭(REF_CLK)을 전송하는 라인, UFS 장치(1200)에 대한 하드웨어 리셋 신호(RESET_n)를 전송하는 라인, 차동 입력 신호 쌍(DIN_t와 DIN_c)을 전송하는 한 쌍의 라인 및 차동 출력 신호 쌍(DOUT_t와 DOUT_c)을 전송하는 한 쌍의 라인을 포함할 수 있다.
UFS 호스트(1100)로부터 UFS 장치(1200)로 제공되는 기준 클럭의 주파수 값은 19.2MHz, 26MHz, 38.4MHz 및 52MHz의 네 개의 값 중 하나일 수 있으나, 반드시 이에 한정되지는 않는다. UFS 호스트(1100)는 동작 중에도, 즉 UFS 호스트(1100)와 UFS 장치(1200) 사이에서 데이터 송수신이 수행되는 중에도 기준 클럭의 주파수 값을 변경할 수 있다. UFS 장치(1200)는 위상 동기 루프(phase-locked loop, PLL) 등을 이용하여, UFS 호스트(1100)로부터 제공받은 기준 클럭으로부터 다양한 주파수의 클럭을 생성할 수 있다. 또한, UFS 호스트(1100)는 기준 클럭의 주파수 값을 통해 UFS 호스트(1100)와 UFS 장치(1200) 간의 데이터 레이트(data rate)의 값을 설정할 수도 있다. 즉, 상기 데이터 레이트의 값은 기준 클럭의 주파수 값에 의존하여 결정될 수 있다.
UFS 인터페이스(101)는 복수의 레인들(multiple lanes)을 지원할 수 있으며, 각 레인은 차동(differential) 쌍으로 구현될 수 있다. 예컨대, UFS 인터페이스는 하나 이상의 수신 레인(receive lane)과 하나 이상의 송신 레인(transmit lane)을 포함할 수 있다. 차동 입력 신호 쌍(DIN_T와 DIN_C)을 전송하는 한 쌍의 라인은 수신 레인을 구성할 수 있다. 차동 출력 신호 쌍(DOUT_T와 DOUT_C)을 전송하는 한 쌍의 라인은 송신 레인을 구성할 수 있다. 도 24에서 하나의 송신 레인과 하나의 수신 레인을 도시하였지만, 송신 레인과 수신 레인의 수는 변경될 수 있다.
수신 레인 및 송신 레인은 직렬 통신(serial communication) 방식으로 데이터를 전송할 수 있으며, 수신 레인과 송신 레인이 분리된 구조에 의해 UFS 호스트(1100)와 UFS 장치(1200) 간의 풀 듀플렉스(full-duplex) 방식의 통신이 가능하다. 즉, UFS 장치(1200)는 수신 레인을 통해 UFS 호스트(1100)로부터 데이터를 수신하는 동안에도, 송신 레인을 통해 UFS 호스트(1100)로 데이터를 송신할 수 있다. 또한, UFS 호스트(1100)로부터 UFS 장치(1200)로의 명령과 같은 제어 데이터와, UFS 호스트(1100)가 UFS 장치(1200)의 비휘발성 메모리(1220)에 저장하고자 하거나 비휘발성 메모리(1220)로부터 리드하고자 하는 사용자 데이터는 동일한 레인을 통해 전송될 수 있다. 이에 따라, UFS 호스트(1100)와 UFS 장치(1200) 간에는 한 쌍의 수신 레인과 한 쌍의 송신 레인 외에 데이터 전송을 위한 별도의 레인이 더 구비될 필요가 없다.
UFS 장치(1200)의 UFS 장치 컨트롤러(1210)는 UFS 장치(1200)의 동작을 전반적으로 제어할 수 있다. UFS 장치 컨트롤러(1210)는 논리적인 데이터 저장 단위인 LU(logical unit)(1211)를 통해 비휘발성 메모리(1220)를 관리할 수 있다. LU(1211)의 개수는 8개일 수 있으나, 이에 한정되는 것은 아니다. UFS 장치 컨트롤러(1210)는 플래시 변환 계층(flash translation layer, FTL)을 포함할 수 있으며, FTL의 어드레스 매핑(address mapping) 정보를 이용하여 UFS 호스트(1100)로부터 전달된 논리적인 데이터 주소, 예컨대 LBA(logical block address)를 물리적인 데이터 주소로, 예컨대 PBA(physical block address)로 변환할 수 있다. UFS 시스템(1000)에서 사용자 데이터(user data)의 저장을 위한 논리 블록(logical block)은 소정 범위의 크기를 가질 수 있다. 예컨대, 논리 블록의 최소 크기는 4Kbyte로 설정될 수 있다.
UFS 호스트(1100)로부터의 명령이 UIC 레이어(1250)를 통해 UFS 장치(1200)로 입력되면, UFS 장치 컨트롤러(1210)는 입력된 명령에 따른 동작을 수행하고, 상기 동작이 완료되면 완료 응답을 UFS 호스트(1100)로 전송할 수 있다.
일례로서, UFS 호스트(1100)가 UFS 장치(1200)에 사용자 데이터를 저장하고자 할 경우, UFS 호스트(1100)는 데이터 저장 명령을 UFS 장치(1200)로 전송할 수 있다. 사용자 데이터를 전송받을 준비가 되었다(ready-to-transfer)는 응답을 UFS 장치(1200)로부터 수신하면, UFS 호스트(1100)는 사용자 데이터를 UFS 장치(1200)로 전송할 수 있다. UFS 장치 컨트롤러(1210)는 전송받은 사용자 데이터를 장치 메모리(1240) 내에 임시로 저장하고, FTL의 어드레스 매핑 정보에 기초하여 장치 메모리(1240)에 임시로 저장된 사용자 데이터를 비휘발성 메모리(1220)의 선택된 위치에 저장할 수 있다.
또 다른 예로서, UFS 호스트(1100)가 UFS 장치(1200)에 저장된 사용자 데이터를 리드하고자 할 경우, UFS 호스트(1100)는 데이터 리드 명령을 UFS 장치(1200)로 전송할 수 있다. 명령을 수신한 UFS 장치 컨트롤러(1210)는 데이터 리드 명령에 기초하여 비휘발성 메모리(1220)로부터 사용자 데이터를 리드하고, 리드된 사용자 데이터를 장치 메모리(1240) 내에 임시로 저장할 수 있다. 이러한 읽기 과정에서, UFS 장치 컨트롤러(1210)는 내장된 ECC(error correction code) 엔진(미도시)을 이용하여, 리드된 사용자 데이터의 에러를 검출하고 정정할 수 있다. 보다 구체적으로, ECC 엔진은 비휘발성 메모리(1220)에 기입될 입력 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 입력 데이터와 함께 비휘발성 메모리(1220) 내에 저장될 수 있다. 비휘발성 메모리(1220)로부터의 데이터 리드 시, ECC 엔진은 리드 데이터와 함께 비휘발성 메모리(1220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
그리고, UFS 장치 컨트롤러(1210)는 장치 메모리(1240) 내에 임시로 저장된 사용자 데이터를 UFS 호스트(1100)로 전송할 수 있다. 아울러, UFS 장치 컨트롤러(1210)는 AES(advanced encryption standard) 엔진(미도시)을 더 포함할 수 있다. AES 엔진은, UFS 장치 컨트롤러(1210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
UFS 호스트(1100)는 명령 큐로 기능할 수 있는 UFS 호스트 레지스터(1111)에 UFS 장치(1200)로 송신될 명령들을 순서에 따라 저장하고, 상기 순서대로 UFS 장치(1200)에 명령을 송신할 수 있다. 이 때, UFS 호스트(1100)는 이전에 송신된 명령이 아직 UFS 장치(1200)에 의해 처리 중인 경우에도, 즉 이전에 송신된 명령이 UFS 장치(1200)에 의해 처리가 완료되었다는 통지를 받기 전에도 명령 큐에 대기 중인 다음 명령을 UFS 장치(1200)로 송신할 수 있으며, 이에 따라 UFS 장치(1200) 역시 이전에 송신된 명령을 처리하는 중에도 다음 명령을 UFS 호스트(1100)로부터 수신할 수 있다. 이와 같은 명령 큐에 저장될 수 있는 명령의 최대 개수(queue depth)는 예컨대 32개일 수 있다. 또한, 명령 큐는 헤드 포인터(head point)와 테일 포인터(tail pointer)를 통해 큐에 저장된 명령 열의 시작과 끝을 각각 나타내는 원형 큐(circular queue) 타입으로 구현될 수 있다.
복수의 메모리 유닛(1221) 각각은 메모리 셀 어레이(미도시)와 상기 메모리 셀 어레이의 작동을 제어하는 제어 회로(미도시)를 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 메모리 셀 어레이는 복수의 메모리 셀을 포함하며, 각각의 메모리 셀은 1비트의 정보를 저장하는 셀(single level cell, SLC)일 수도 있지만, MLC(multi-level cell), TLC(triple level cell), QLC(quadruple level cell)와 같이 2비트 이상의 정보를 저장하는 셀일 수도 있다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다.
UFS 장치(1200)에는 전원 전압으로서 VCC, VCCQ, VCCQ2 등이 입력될 수 있다. VCC는 UFS 장치(1200)를 위한 주 전원 전압으로서, 2.4~3.6V의 값을 가질 수 있다. VCCQ는 낮은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 UFS 장치 컨트롤러(1210)를 위한 것이며. 1.14~1.26V의 값을 가질 수 있다. VCCQ2는 VCC보다는 낮지만 VCCQ보다는 높은 범위의 전압을 공급하기 위한 전원 전압으로서, 주로 MIPI M-PHY(1251)와 같은 입출력 인터페이스를 위한 것이며, 1.7~1.95V의 값을 가질 수 있다. 상기 전원 전압들은 레귤레이터(1260)를 거쳐 UFS 장치(1200)의 각 구성 요소들을 위해 공급될 수 있다. 레귤레이터(1260)는 전술한 전원 전압들 중 서로 다른 것에 각각 연결되는 단위 레귤레이터의 집합으로 구현될 수 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 호스트와 통신 가능한 메모리 장치에 있어서,
    복수의 워드 라인들과 복수의 비트 라인들에 의해 정의되는 복수의 메모리 셀들을 포함하고, 상기 호스트로부터 수신된 제1 리드 커맨드 및 어드레스에 응답하여 상기 복수의 메모리 셀들 중 상기 어드레스에 대응되는 타겟 메모리 셀들에 저장된 출력 데이터를 제공하도록 구성된 휘발성 메모리;
    상기 복수의 비트 라인들 중 상기 출력 데이터에서 2 비트의 에러가 발생한 불량 셀들이 각각 연결된 비트 라인들에 대한 정보와 노멀 셀들이 연결된 비트 라인들에 대한 정보를 포함하는 힌트 데이터를 제공하도록 구성된 복구 로직 회로; 및
    상기 출력 데이터 및 상기 힌트 데이터를 기초로 상기 출력 데이터에서 발생한 에러를 정정하고, 상기 에러가 정정된 데이터인 정정 데이터를 상기 호스트에 전달하도록 구성된 에러 정정 회로(Error Correction Circuit, ECC) 엔진을 포함하는 메모리 장치.
  2. 제1 항에 있어서,
    상기 복구 로직 회로는,
    테스트 패턴 데이터를 상기 타겟 메모리 셀들에 저장하도록 상기 휘발성 메모리를 제어하고, 상기 테스트 패턴 데이터를 리드하도록 상기 휘발성 메모리를 제어하고, 상기 휘발성 메모리로부터 제공된 테스트 데이터를 기초로 상기 힌트 데이터를 생성하는 복구 컨트롤러;
    상기 힌트 데이터를 임시 저장하는 힌트 데이터 버퍼; 및
    상기 테스트 데이터를 임시 저장하는 테스트 데이터 버퍼를 포함하는 것을 특징으로 하는, 메모리 장치.
  3. 제2 항에 있어서,
    상기 복구 컨트롤러는,
    제1 라이트 커맨드, 제1 테스트 패턴 데이터, 및 상기 어드레스를 상기 휘발성 메모리에 전달하고,
    제2 리드 커맨드 및 상기 어드레스를 상기 휘발성 메모리에 전달하고,
    상기 휘발성 메모리로부터 출력된 제1 테스트 데이터를 상기 테스트 데이터 버퍼에 저장하고,
    제2 라이트 커맨드, 제2 테스트 패턴 데이터, 및 상기 어드레스를 상기 휘발성 메모리에 전달하고,
    제3 리드 커맨드 및 상기 어드레스를 상기 휘발성 메모리에 전달하고,
    상기 휘발성 메모리로부터 출력된 제2 테스트 데이터를 상기 테스트 데이터 버퍼에 저장하는 것을 특징으로 하는, 메모리 장치.
  4. 제3 항에 있어서,
    상기 복구 컨트롤러는,
    상기 제1 테스트 데이터 및 상기 제2 테스트 데이터를 XOR 연산하고,
    XOR 연산의 결과, 적어도 하나의 제1 값을 갖는 제1 결과 데이터를 상기 힌트 데이터로서 상기 힌트 데이터 버퍼에 저장하는 것을 특징으로 하는, 메모리 장치.
  5. 제4 항에 있어서,
    상기 복구 컨트롤러는,
    XOR 연산으로 생성된 제2 결과 데이터의 모든 값이 상기 제1 값과 다른 제2 값인 경우, 상기 휘발성 메모리를 동작하기 위한 내부 전압 및 클럭 주파수 중 적어도 하나를 변경할 것을 요청하는 세팅 요청 신호를 상기 호스트에 전달하고,
    상기 내부 전압 및 상기 클럭 주파수 중 적어도 하나가 변경되면, 상기 제1 테스트 패턴 데이터에 대한 쓰기 동작, 상기 제1 테스트 데이터에 대한 읽기 동작, 상기 제2 테스트 패턴 데이터에 대한 쓰기 동작 및 상기 제2 테스트 데이터에 대한 읽기 동작을 수행하도록 상기 휘발성 메모리를 제어하는 것을 특징으로 하는, 메모리 장치.
  6. 제5 항에 있어서,
    상기 복구 컨트롤러는,
    상기 제2 결과 데이터의 모든 값이 상기 제2 값인 경우, 상기 내부 전압의 레벨보다 낮은 레벨을 갖는 내부 전압을 생성할 것을 상기 호스트에 요청하는 것을 특징으로 하는, 메모리 장치.
  7. 제5 항에 있어서,
    상기 복구 컨트롤러는,
    상기 제2 결과 데이터의 모든 값이 상기 제2 값인 경우, 상기 클럭 주파수보다 큰 클럭 주파수를 갖는 클럭을 생성할 것을 상기 호스트에 요청하는 것을 특징으로 하는, 메모리 장치.
  8. 제2 항에 있어서,
    상기 복구 컨트롤러는,
    상기 출력 데이터를 상기 테스트 데이터 버퍼에 백업한 다음, 상기 테스트 패턴 데이터를 상기 타겟 메모리 셀들에 저장하도록 상기 휘발성 메모리를 제어하고,
    상기 힌트 데이터가 생성된 다음, 백업된 출력 데이터를 상기 타겟 메모리 셀들에 저장하도록 상기 휘발성 메모리를 제어하는 것을 특징으로 하는, 메모리 장치.
  9. 제1 항에 있어서,
    상기 ECC 엔진은,
    상기 호스트로부터 수신되는 데이터에 대하여 패리티 비트를 생성하는 ECC 인코더; 및
    상기 힌트 데이터를 이용하여 상기 출력 데이터를 정정하고 상기 정정 데이터를 상기 호스트에 전달하는 ECC 디코더를 포함하고,
    상기 ECC 디코더는,
    상기 출력 데이터와 상기 힌트 데이터를 XOR 연산함으로써, 적어도 하나의 에러 비트가 정정된 데이터를 출력하는 힌트 데이터 적용기;
    상기 적어도 하나의 에러 비트가 정정된 데이터를 기초로 신드롬 데이터를 생성하는 신드롬 생성기;
    상기 신드롬 데이터를 기초로 에러 비트의 역수를 근으로 하는 오류 위치 방정식의 계수를 산출하는 계수 계산기;
    상기 신드롬 데이터 및 상기 오류 위치 방정식의 계수를 이용하여, 상기 적어도 하나의 에러 비트가 정정된 데이터에서 에러 비트의 위치를 계산하는 1 비트 에러 검출기; 및
    상기 1 비트 에러 검출기의 검출 결과를 기초로 에러 비트의 값을 반전시킴으로써 에러를 정정하고, 상기 정정 데이터를 출력하는 에러 정정기를 포함하는 것을 특징으로 하는 메모리 장치.
  10. 제1 리드 커맨드 및 어드레스를 출력하는 어플리케이션 프로세서;
    복수의 휘발성 메모리들, 상기 복수의 휘발성 메모리들 중 상기 어드레스에 대응되는 휘발성 메모리를 선택하는 멀티플렉서, 및 제1 리드 커맨드에 응답하여 리드 동작을 수행하는 선택된 휘발성 메모리로부터 출력된 출력 데이터에서 발생한 에러를 정정하는 ECC 엔진을 포함하는 버퍼; 및
    상기 출력 데이터에서 2 비트의 에러가 발생한 불량 셀들이 각각 연결된 비트 라인들에 대한 정보와 노멀 셀들이 연결된 비트 라인들에 대한 정보를 포함하는 힌트 데이터를 제공하도록 구성된 복구 로직 회로를 포함하되,
    상기 ECC 엔진은,
    상기 선택된 휘발성 메모리에 대한 제1 힌트 데이터 및 상기 출력 데이터를 기초로 상기 에러를 정정하고, 정정 데이터를 상기 어플리케이션 프로세서에 전달하는 것을 특징으로 하는, 전자 장치.
  11. 제10 항에 있어서,
    상기 복구 로직 회로는,
    테스트 패턴 데이터를 저장하도록 상기 선택된 휘발성 메모리를 제어하고, 상기 테스트 패턴 데이터를 리드하도록 상기 선택된 휘발성 메모리를 제어하고, 상기 선택된 휘발성 메모리로부터 제공된 테스트 데이터를 기초로 상기 제1 힌트 데이터를 생성하는 복구 컨트롤러;
    상기 제1 힌트 데이터를 임시 저장하는 힌트 데이터 버퍼; 및
    상기 테스트 데이터를 임시 저장하는 테스트 데이터 버퍼를 포함하는 것을 특징으로 하는, 전자 장치.
  12. 제11 항에 있어서,
    상기 복구 컨트롤러는,
    제1 라이트 커맨드, 제1 테스트 패턴 데이터, 및 상기 어드레스를 상기 선택된 휘발성 메모리에 전달하고,
    제2 리드 커맨드 및 상기 어드레스를 상기 선택된 휘발성 메모리에 전달하고,
    상기 선택된 휘발성 메모리로부터 출력된 제1 테스트 데이터를 상기 테스트 데이터 버퍼에 저장하고,
    제2 라이트 커맨드, 제2 테스트 패턴 데이터, 및 상기 어드레스를 상기 선택된 휘발성 메모리에 전달하고,
    제3 리드 커맨드 및 상기 어드레스를 상기 선택된 휘발성 메모리에 전달하고,
    상기 선택된 휘발성 메모리로부터 출력된 제2 테스트 데이터를 상기 테스트 데이터 버퍼에 저장하는 것을 특징으로 하는, 전자 장치.
  13. 제12 항에 있어서,
    상기 복구 컨트롤러는,
    상기 제1 테스트 데이터 및 상기 제2 테스트 데이터를 XOR 연산하고,
    XOR 연산의 결과, 적어도 하나의 제1 값을 갖는 제1 결과 데이터를 상기 제1 힌트 데이터로서 상기 힌트 데이터 버퍼에 저장하는 것을 특징으로 하는, 전자 장치.
  14. 제13 항에 있어서,
    내부 전압을 공급하는 전력 공급기를 더 포함하고,
    상기 어플리케이션 프로세서는,
    상기 내부 전압의 레벨을 감소시킬 것을 요청하는 세팅 요청 신호에 응답하여 상기 전력 공급기의 동작을 제어하고,
    상기 복구 컨트롤러는,
    XOR 연산으로 생성된 제2 결과 데이터의 모든 값이 상기 제1 값과 다른 제2 값인 경우, 상기 세팅 요청 신호를 상기 어플리케이션 프로세서에 전달하고,
    상기 내부 전압의 레벨이 변경되면, 상기 제1 테스트 패턴 데이터에 대한 쓰기 동작, 상기 제1 테스트 데이터에 대한 읽기 동작, 상기 제2 테스트 패턴 데이터에 대한 쓰기 동작 및 상기 제2 테스트 데이터에 대한 읽기 동작을 수행하도록 상기 선택된 휘발성 메모리를 제어하는 것을 특징으로 하는, 전자 장치.
  15. 제13 항에 있어서,
    클럭을 출력하는 클럭 생성기를 더 포함하고,
    상기 어플리케이션 프로세서는,
    상기 클럭의 클럭 주파수를 증가시킬 것을 요청하는 세팅 요청 신호에 응답하여 상기 클럭 생성기의 동작을 제어하고,
    상기 복구 컨트롤러는,
    XOR 연산으로 생성된 제2 결과 데이터의 모든 값이 상기 제1 값과 다른 제2 값인 경우, 상기 세팅 요청 신호를 상기 어플리케이션 프로세서에 전달하고,
    상기 클럭 주파수가 변경되면, 상기 제1 테스트 패턴 데이터에 대한 쓰기 동작, 상기 제1 테스트 데이터에 대한 읽기 동작, 상기 제2 테스트 패턴 데이터에 대한 쓰기 동작 및 상기 제2 테스트 데이터에 대한 읽기 동작을 수행하도록 상기 선택된 휘발성 메모리를 제어하는 것을 특징으로 하는, 전자 장치.
  16. 제11 항에 있어서,
    상기 복구 컨트롤러는,
    상기 출력 데이터를 상기 테스트 데이터 버퍼에 백업한 다음, 상기 테스트 패턴 데이터를 저장하도록 상기 선택된 휘발성 메모리를 제어하고,
    상기 힌트 데이터가 생성된 다음, 백업된 출력 데이터를 저장하도록 상기 선택된 휘발성 메모리를 제어하는 것을 특징으로 하는, 전자 장치.
  17. 제10 항에 있어서,
    상기 ECC 엔진은,
    상기 어플리케이션 프로세서로부터 수신되는 데이터에 대하여 패리티 비트를 생성하는 ECC 인코더; 및
    상기 제1 힌트 데이터를 이용하여 상기 출력 데이터를 정정하고 상기 정정 데이터를 상기 어플리케이션 프로세서에 전달하는 ECC 디코더를 포함하고,
    상기 ECC 디코더는,
    상기 출력 데이터와 상기 제1 힌트 데이터를 XOR 연산함으로써, 적어도 하나의 에러 비트가 정정된 데이터를 출력하는 힌트 데이터 적용기;
    상기 적어도 하나의 에러 비트가 정정된 데이터를 기초로 신드롬 데이터를 생성하는 신드롬 생성기;
    상기 신드롬 데이터를 기초로 에러 비트의 역수를 근으로 하는 오류 위치 방정식의 계수를 산출하는 계수 계산기;
    상기 신드롬 데이터 및 상기 오류 위치 방정식의 계수를 이용하여, 상기 적어도 하나의 에러 비트가 정정된 데이터에서 에러 비트의 위치를 계산하는 1 비트 에러 검출기; 및
    상기 1 비트 에러 검출기의 검출 결과를 기초로 에러 비트의 값을 반전시킴으로써 에러를 정정하고, 상기 정정 데이터를 출력하는 에러 정정기를 포함하는 것을 특징으로 하는 전자 장치.
  18. 호스트와 통신 가능한 메모리 장치의 동작 방법에 있어서,
    상기 호스트로부터 수신된 리드 커맨드 및 어드레스를 수신하는 단계;
    복수의 휘발성 메모리들 중 상기 어드레스에 대응되는 휘발성 메모리에 저장된 데이터를 리드하는 단계;
    상기 휘발성 메모리로부터 리드된 리드 데이터에서 2 비트의 에러를 검출하는 단계;
    상기 휘발성 메모리에 대한 힌트 데이터와 상기 리드 데이터를 기초로 상기 2 비트의 에러를 정정하는 단계; 및
    상기 2 비트의 에러가 정정된 데이터인 정정 데이터를 상기 호스트에 제공하는 단계를 포함하는 메모리 장치의 동작 방법.
  19. 제18 항에 있어서,
    상기 2 비트의 에러가 검출된 이후, 상기 리드 데이터를 백업하는 단계;
    미리 저장된 제1 테스트 패턴 데이터, 제1 라이트 커맨드, 및 상기 어드레스를 상기 휘발성 메모리에 전달하는 단계;
    제2 리드 커맨드 및 상기 어드레스를 상기 휘발성 메모리에 전달하고, 상기 휘발성 메모리로부터 제1 테스트 데이터를 획득하는 단계;
    미리 저장된 제2 테스트 패턴 데이터, 제2 라이트 커맨드, 및 상기 어드레스를 상기 휘발성 메모리에 전달하는 단계;
    제3 리드 커맨드 및 상기 어드레스를 상기 휘발성 메모리에 전달하고, 상기 휘발성 메모리로부터 제2 테스트 데이터를 획득하는 단계;
    상기 제1 테스트 데이터 및 상기 제2 테스트 데이터를 XOR 연산하여, 결과 데이터를 생성하는 단계;
    결과 데이터의 값에 따라 힌트 데이터를 생성하는 단계를 더 포함하는 메모리 장치의 동작 방법.
  20. 제19 항에 있어서,
    상기 2 비트의 에러를 정정하는 단계는,
    상기 리드 데이터와 상기 힌트 데이터를 XOR 연산함으로써, 적어도 하나의 에러 비트가 정정된 데이터를 출력하는 단계;
    상기 적어도 하나의 에러 비트가 정정된 데이터를 기초로 신드롬 데이터를 생성하는 단계;
    상기 신드롬 데이터를 기초로 에러 비트의 역수를 근으로 하는 오류 위치 방정식의 계수를 산출하는 단계;
    상기 신드롬 데이터 및 상기 오류 위치 방정식의 계수를 이용하여, 상기 적어도 하나의 에러 비트가 정정된 데이터에서 에러 비트의 위치를 계산하는 단계; 및
    상기 에러 비트의 위치를 기초로 에러 비트의 값을 반전시킴으로써 에러를 정정하고, 상기 정정 데이터를 출력하는 단계를 포함하는 것을 특징으로 하는, 메모리 장치의 동작 방법.
KR1020210141366A 2021-10-21 2021-10-21 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법 KR102387463B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020210141366A KR102387463B1 (ko) 2021-10-21 2021-10-21 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법
US17/733,559 US11989422B2 (en) 2021-10-21 2022-04-29 Memory device, electronic device and operating method of memory device
EP22176963.1A EP4170660A1 (en) 2021-10-21 2022-06-02 Memory device comprising an ecc for error correction based on hint data
CN202210890699.8A CN116013396A (zh) 2021-10-21 2022-07-27 存储器装置、电子装置和存储器装置的操作方法
TW111128054A TW202318432A (zh) 2021-10-21 2022-07-27 記憶體裝置、電子裝置以及操作記憶體裝置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210141366A KR102387463B1 (ko) 2021-10-21 2021-10-21 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법

Publications (1)

Publication Number Publication Date
KR102387463B1 true KR102387463B1 (ko) 2022-04-15

Family

ID=81212202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210141366A KR102387463B1 (ko) 2021-10-21 2021-10-21 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법

Country Status (5)

Country Link
US (1) US11989422B2 (ko)
EP (1) EP4170660A1 (ko)
KR (1) KR102387463B1 (ko)
CN (1) CN116013396A (ko)
TW (1) TW202318432A (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080046973A (ko) * 2006-11-24 2008-05-28 삼성전자주식회사 메모리 세팅 조건을 결정하는 메모리 테스트 장치 및 그방법
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
KR20210012177A (ko) * 2019-07-24 2021-02-03 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
KR20210026487A (ko) * 2019-08-30 2021-03-10 삼성전자주식회사 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치
KR20210092391A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로 및 반도체 메모리 장치
KR20210109085A (ko) * 2020-02-26 2021-09-06 삼성전자주식회사 메모리 장치에 대한 테스트 방법, 메모리 장치를 테스트하는 테스트 장치의 동작 방법, 및 셀프-테스트 기능을 구비한 메모리 장치

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5195098A (en) * 1991-05-10 1993-03-16 Echelon Corporation Binary data error correction using hint signal
US5761220A (en) * 1994-09-19 1998-06-02 Cirrus Logic, Inc. Minimum latency asynchronous data path controller in a digital recording system
KR100259297B1 (ko) 1997-08-28 2000-06-15 구자홍 데이터 디코딩 장치
US7171591B2 (en) 2003-12-23 2007-01-30 International Business Machines Corporation Method and apparatus for encoding special uncorrectable errors in an error correction code
US7581154B2 (en) 2005-06-30 2009-08-25 Intel Corporation Method and apparatus to lower operating voltages for memory arrays using error correcting codes
KR100833600B1 (ko) 2006-08-25 2008-05-30 삼성전자주식회사 에러 정정 회로, 그 방법 및 상기 회로를 구비하는 반도체메모리 장치
US8117519B2 (en) * 2008-01-15 2012-02-14 Micron Technology, Inc. Memory apparatus and method using erasure error correction to reduce power consumption
KR101543245B1 (ko) 2009-03-18 2015-08-11 삼성전자주식회사 에러 교정 장치와 이를 포함하는 메모리 장치와 데이터 처리 시스템
US9459955B2 (en) * 2012-05-24 2016-10-04 Sandisk Technologies Llc System and method to scramble data based on a scramble key
US9146807B2 (en) * 2012-12-04 2015-09-29 Sandisk Technologies Inc. Bad column handling in flash memory
US8898544B2 (en) * 2012-12-11 2014-11-25 International Business Machines Corporation DRAM error detection, evaluation, and correction
US9262263B2 (en) * 2013-11-25 2016-02-16 Qualcomm Incorporated Bit recovery system
US9780809B2 (en) * 2015-04-30 2017-10-03 Sandisk Technologies Llc Tracking and use of tracked bit values for encoding and decoding data in unreliable memory
US9484114B1 (en) * 2015-07-29 2016-11-01 Sandisk Technologies Llc Decoding data using bit line defect information
US9710329B2 (en) * 2015-09-30 2017-07-18 Sandisk Technologies Llc Error correction based on historical bit error data
KR101860809B1 (ko) 2015-09-30 2018-07-06 서울대학교산학협력단 메모리 시스템 및 메모리 에러 정정 방법
FR3044817B1 (fr) * 2015-12-02 2017-12-22 St Microelectronics Rousset Procede de gestion d'une ligne de bits defectueuse du plan memoire d'une memoire non volatile et dispositif de memoire correspondant
US9823964B2 (en) * 2015-12-08 2017-11-21 Nvidia Corporation Method for memory scrub of DRAM with internal error correcting code (ECC) bits during either memory activate and/or precharge operation
US20190081640A1 (en) * 2017-09-08 2019-03-14 Intel Corporation Faulty word line and faulty bit line information in error correcting coding
KR102553780B1 (ko) 2018-05-10 2023-07-10 에스케이하이닉스 주식회사 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10761927B2 (en) 2018-07-16 2020-09-01 Taiwan Semiconductor Manufacturing Co., Ltd. Detection and correction of data bit errors using error correction codes
US10884940B2 (en) 2018-12-21 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for using compression to improve performance of low voltage caches
KR102748832B1 (ko) 2019-08-29 2025-01-02 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 리페어 제어 방법
JP7442386B2 (ja) 2020-05-14 2024-03-04 東京エレクトロン株式会社 基板処理装置
KR20220102793A (ko) * 2021-01-14 2022-07-21 에스케이하이닉스 주식회사 메모리
US11610640B1 (en) * 2021-08-30 2023-03-21 Taiwan Semiconductor Manufacturing Company Limited Method for error correction coding with multiple hash groupings and device for performing the same

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080046973A (ko) * 2006-11-24 2008-05-28 삼성전자주식회사 메모리 세팅 조건을 결정하는 메모리 테스트 장치 및 그방법
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
KR20210012177A (ko) * 2019-07-24 2021-02-03 삼성전자주식회사 반도체 메모리 장치 및 이의 동작 방법
KR20210026487A (ko) * 2019-08-30 2021-03-10 삼성전자주식회사 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치
KR20210092391A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로 및 반도체 메모리 장치
KR20210109085A (ko) * 2020-02-26 2021-09-06 삼성전자주식회사 메모리 장치에 대한 테스트 방법, 메모리 장치를 테스트하는 테스트 장치의 동작 방법, 및 셀프-테스트 기능을 구비한 메모리 장치

Also Published As

Publication number Publication date
US11989422B2 (en) 2024-05-21
CN116013396A (zh) 2023-04-25
US20230126954A1 (en) 2023-04-27
EP4170660A1 (en) 2023-04-26
TW202318432A (zh) 2023-05-01

Similar Documents

Publication Publication Date Title
US11239960B2 (en) Characterization of in-chip error correction circuits and related semiconductor memory devices/memory systems
KR102648774B1 (ko) 랜더마이즈 동작을 수행하는 반도체 메모리 장치
US9368234B2 (en) Nonvolatile memory device and method of operating the same
KR102258140B1 (ko) 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템
US10795603B2 (en) Systems and methods for writing zeros to a memory array
US10803971B2 (en) Device for supporting error correction code and test method thereof
KR20170121798A (ko) 반도체 메모리 장치 및 이의 동작 방법
JP6164712B1 (ja) フラッシュメモリ
KR20100093739A (ko) 비휘발성 메모리 장치의 읽기 방법
KR20190052754A (ko) 적응적 온-다이 에러 체크 및 정정을 위한 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US10748638B2 (en) Memory controller and memory system having the same
US11515898B2 (en) Error correction decoder, error correction circuit having the same, and method of operating the same
US11994945B2 (en) Managing write disturb for units of memory in a memory sub-system
CN112542201A (zh) 存储设备及操作该存储设备的方法
TWI808098B (zh) 用於支持錯誤更正碼的裝置及其測試方法
US11003544B2 (en) Memory system and method of operating the same
KR20160110774A (ko) 메모리 장치 및 이를 포함하는 시스템
KR102290032B1 (ko) 컬럼 리던던시를 포함하는 메모리 장치
CN110032466A (zh) 数据存储装置及其操作方法
KR102387463B1 (ko) 메모리 장치, 전자 장치 및 메모리 장치의 동작 방법
CN111108560B (zh) 用于将零写入到存储器阵列的系统和方法
US10923211B1 (en) Efficient scrambling and encoding for copyback procedures in a memory subsystem
KR20220165482A (ko) 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
CN118053467A (zh) 存储器件、存储器件的操作方法和存储系统
CN116798490A (zh) 存储器系统

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20211021

PA0201 Request for examination
PA0302 Request for accelerated examination

Patent event date: 20211109

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

Patent event date: 20211021

Patent event code: PA03021R01I

Comment text: Patent Application

PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20211123

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20220216

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20220412

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20220413

End annual number: 3

Start annual number: 1

PG1601 Publication of registration