KR20220058127A - 컴퓨팅 시스템 및 그 동작 방법 - Google Patents

컴퓨팅 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR20220058127A
KR20220058127A KR1020200143524A KR20200143524A KR20220058127A KR 20220058127 A KR20220058127 A KR 20220058127A KR 1020200143524 A KR1020200143524 A KR 1020200143524A KR 20200143524 A KR20200143524 A KR 20200143524A KR 20220058127 A KR20220058127 A KR 20220058127A
Authority
KR
South Korea
Prior art keywords
memory
error
test operation
memory cells
test
Prior art date
Application number
KR1020200143524A
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 KR1020200143524A priority Critical patent/KR20220058127A/ko
Priority to US17/313,868 priority patent/US11650752B2/en
Priority to CN202110672946.2A priority patent/CN114446375A/zh
Publication of KR20220058127A publication Critical patent/KR20220058127A/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/27Built-in tests
    • 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/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/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
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • 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/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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/0409Online test

Landscapes

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

Abstract

본 기술은 전자 장치에 관한 것으로, 본 기술에 따른, 에러가 발생된 메모리 셀에 대한 접근을 사전에 차단할 수 있는 컴퓨팅 시스템은, 복수의 메모리 셀들을 포함하는 메모리 장치, 워크로드에 대응되는 동작을 수행하는 동안에, 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 제공하고, 상기 복수의 메모리 셀들 중 상기 타겟 어드레스에 대응되는 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청하는 호스트 및 상기 호스트로부터 상기 타겟 어드레스 및 상기 테스트 동작을 위한 요청을 수신하고, 상기 타겟 어드레스를 기초로 상기 테스트 동작을 수행하도록 상기 메모리 장치를 제어하고, 상기 테스트 동작을 수행한 결과에 기초하여 상기 인접한 메모리 셀들 중 상기 에러가 발생된 메모리 셀들과 관련된 정보를 포함하는 메모리 에러 정보를 생성하는 메모리 컨트롤러를 포함하고, 상기 호스트는, 상기 메모리 에러 정보에 기초하여 상기 복수의 메모리 셀들 중 상기 에러가 발생된 메모리 셀들에 대한 접근을 제어한다.

Description

컴퓨팅 시스템 및 그 동작 방법{COMPUTING SYSTEM AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 보다 구체적으로 본 발명은 컴퓨팅 시스템 및 그 동작 방법에 관한 것이다.
스토리지 장치는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 스토리지 장치는 데이터를 저장하는 메모리 장치와 메모리 장치를 제어하는 메모리 컨트롤러를 포함할 수 있다. 메모리 장치는 휘발성 메모리 장치 (Volatile Memory)와 비휘발성 메모리 장치 (Non Volatile Memory)로 구분될 수 있다.
휘발성 메모리 장치는 전원이 공급되는 동안에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치일 수 있다. 휘발성 메모리 장치에는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등이 포함될 수 있다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
본 발명의 실시 예는 에러가 발생된 메모리 셀에 대한 접근을 사전에 차단할 수 있는 컴퓨팅 시스템 및 그 동작 방법을 제공한다.
본 발명의 실시 예에 따른 컴퓨팅 시스템은, 복수의 메모리 셀들을 포함하는 메모리 장치, 워크로드에 대응되는 동작을 수행하는 동안에, 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 제공하고, 상기 복수의 메모리 셀들 중 상기 타겟 어드레스에 대응되는 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청하는 호스트 및 상기 호스트로부터 상기 타겟 어드레스 및 상기 테스트 동작을 위한 요청을 수신하고, 상기 타겟 어드레스를 기초로 상기 테스트 동작을 수행하도록 상기 메모리 장치를 제어하고, 상기 테스트 동작을 수행한 결과에 기초하여 상기 인접한 메모리 셀들 중 상기 에러가 발생된 메모리 셀들과 관련된 정보를 포함하는 메모리 에러 정보를 생성하는 메모리 컨트롤러를 포함하고, 상기 호스트는, 상기 메모리 에러 정보에 기초하여 상기 복수의 메모리 셀들 중 상기 에러가 발생된 메모리 셀들에 대한 접근을 제어한다.
본 발명의 실시 예에 따른 워크로드에 대응되는 동작을 수행하는 호스트, 복수의 메모리 셀들을 포함하는 메모리 장치 및 상기 호스트의 요청에 따라 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 컴퓨팅 시스템의 동작 방법은, 에러를 감지하는 단계, 상기 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 상기 메모리 컨트롤러로 제공하는 단계, 상기 메모리 컨트롤러로 복수의 메모리 셀들 중 상기 에러가 발생된 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청하는 단계, 상기 인접한 메모리 셀들에 대한 상기 테스트 동작을 수행하는 단계, 상기 테스트 동작을 수행한 결과를 나타내는 메모리 에러 정보를 생성하는 단계 및 상기 메모리 에러 정보에 기초하여 상기 인접한 메모리 셀들 중 상기 에러가 발생된 메모리 셀들에 대한 접근을 비활성화하는 단계를 포함한다.
본 기술에 따르면, 에러가 발생된 메모리 셀에 대한 접근을 사전에 차단할 수 있는 컴퓨팅 시스템 및 그 동작 방법이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 테스트 동작의 일 예를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 테스트 동작의 일 예를 나타내는 흐름도이다.
도 4는 본 발명의 일 실시 예에 따른 테스트 동작의 다른 예를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 테스트 동작의 다른 예를 나타내는 흐름도이다.
도 6은 본 발명의 일 실시 예에 따른 테스트 동작의 또 다른 예를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시 예에 따른 테스트 동작의 또 다른 예를 나타내는 흐름도이다.
도 8은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 9는 본 발명의 일 실시 예에 따른 테스트 동작을 수행하는 방법의 일 예를 설명하기 위한 순서도이다.
도 10은 본 발명의 일 실시 예에 따른 테스트 동작을 수행하는 방법의 다른 예를 설명하기 위한 순서도이다.
도 11은 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
본 명세서 또는 출원에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 설명하기 위한 도면이다.
도 1을 참조하면, 컴퓨팅 시스템(10)은 스토리지 장치(50) 및 호스트(300)를 포함할 수 있다.
스토리지 장치(50)는 메모리 장치(100) 및 메모리 장치(100)의 동작을 제어하는 메모리 컨트롤러(200)를 포함할 수 있다. 스토리지 장치(50)는 휴대폰, 스마트폰, MP3 플레이어, 랩탑 컴퓨터, 데스크탑 컴퓨터, 게임기, TV, 테블릿 PC 또는 차량용 인포테인먼트(in-vehicle infotainment) 시스템 등과 같은 호스트(300)의 제어에 따라 데이터를 저장하는 장치일 수 있다.
메모리 장치(100)는 데이터를 저장할 수 있다. 메모리 장치(100)는 메모리 컨트롤러(200)의 제어에 응답하여 동작한다. 메모리 장치(100)는 데이터를 저장하는 복수의 뱅크들을 포함할 수 있다. 복수의 뱅크들은 각각 복수의 메모리 셀들을 포함하는 메모리 셀 어레이(미도시)를 포함할 수 있다.
메모리 셀들은 각각 하나의 데이터 비트를 저장하는 싱글 레벨 셀(Single Level Cell; SLC), 두 개의 데이터 비트들을 저장하는 멀티 레벨 셀(Multi Level Cell; MLC), 세 개의 데이터 비트들을 저장하는 트리플 레벨 셀(Triple Level Cell; TLC) 또는 네 개의 데이터 비트를 저장할 수 있는 쿼드 레벨 셀(Quad Level Cell; QLC)로 구성될 수 있다.
메모리 셀 어레이(미도시)는 복수의 메모리 블록들을 포함할 수 있다. 각 메모리 블록은 복수의 메모리 셀들을 포함할 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 실시 예에서, 페이지는 메모리 장치(100)에 데이터를 저장하거나, 메모리 장치(100)에 저장된 데이터를 리드하는 단위일 수 있다. 메모리 블록은 데이터를 지우는 단위일 수 있다.
메모리 장치(100)은 DRAM(Dynamic Random Access Memory), SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR2 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리일 수 있다. 본 명세서에서는 설명의 편의를 위해, 메모리 장치(100)가 DRAM인 경우를 가정하여 설명한다.
메모리 장치(100)는 메모리 컨트롤러(200)로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 메모리 셀 어레이 중 어드레스에 의해 선택된 영역을 액세스하도록 구성된다. 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 대해 커맨드(CMD)가 지시하는 동작을 수행할 수 있다. 예를 들면, 메모리 장치(100)는 쓰기 동작 (프로그램 동작), 리드 동작 및 소거 동작을 수행할 수 있다. 프로그램 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 데이터를 프로그램 할 것이다. 리드 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역으로부터 데이터를 읽을 것이다. 소거 동작 시에, 메모리 장치(100)는 어드레스(ADDR)에 의해 선택된 영역에 저장된 데이터를 소거할 것이다.
메모리 컨트롤러(200)는 스토리지 장치(50)의 전반적인 동작을 제어할 수 있다.
스토리지 장치(50)에 전원이 인가되면, 메모리 컨트롤러(200)는 펌웨어(firmware, FW)를 실행할 수 있다.
실시 예에서, 메모리 컨트롤러(200)는 호스트(300)로부터 데이터와 논리 블록 어드레스(Logical Block Address, LBA)를 입력 받고, 논리 블록 어드레스를 메모리 장치(100)에 포함된 데이터가 저장될 메모리 셀들의 주소를 나타내는 물리 블록 어드레스(Physical Block Address, PBA)로 변환할 수 있다. 본 명세서에서 논리 블록 어드레스(LBA)와 “논리 어드레스” 또는 “논리적 어드레스”는 같은 의미로 사용될 수 있다. 본 명세서에서 물리 블록 어드레스(PBA)와 “물리 어드레스” 또는 “물리적 어드레스”는 같은 의미로 사용될 수 있다.
메모리 컨트롤러(200)는 호스트(300)의 요청(request)에 따라 프로그램 동작, 리드 동작 또는 소거 동작 등을 수행하도록 메모리 장치(100)를 제어할 수 있다. 프로그램 동작 시, 메모리 컨트롤러(200)는 쓰기 커맨드, 물리 블록 어드레스 및 데이터를 메모리 장치(100)에 제공할 수 있다. 리드 동작 시, 메모리 컨트롤러(200)는 리드 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다. 소거 동작 시, 메모리 컨트롤러(200)는 소거 커맨드 및 물리 블록 어드레스를 메모리 장치(100)에 제공할 수 있다.
실시 예에서, 메모리 컨트롤러(200)가 적어도 둘 이상의 메모리 장치(100)들을 제어할 수 있다. 이 경우, 메모리 컨트롤러(200)는 동작 성능의 향상을 위해 메모리 장치(100)들을 인터리빙 방식에 따라 제어할 수 있다. 인터리빙 방식은 적어도 둘 이상의 메모리 장치(100)들에 대한 동작이 중첩되도록 제어하는 방식일 수 있다.
호스트(300)로부터 제공되는 리드 요청은 호스트(300)가 스토리지 장치(50)에 저장할 것을 요청했던 원본 데이터를 다시 호스트(300)에게 제공할 것을 요청하는 것이다. 메모리 컨트롤러(200)는 원본 데이터에 대해서 에러 정정 인코딩(error correction encoding)을 수행하여, 에러 정정을 위한 에러 정정 코드(Error Correction Code; ECC)가 포함된 쓰기 데이터를 생성한다. 메모리 컨트롤러(200)는 쓰기 데이터가 메모리 장치(100)에 저장되도록 메모리 장치(100)를 제어할 수 있다.
이후, 호스트(300)의 리드 요청에 응답하여, 메모리 컨트롤러(200)는 호스트(300)의 리드 요청에 대응되는 데이터를 메모리 장치(100)로부터 획득하기 위해서 리드 커맨드 및 리드할 데이터가 저장된 메모리 셀들의 위치를 나타내는 물리 어드레스를 메모리 장치(100)에 제공할 수 있다.
메모리 장치(100)는 디폴트 리드 전압을 이용하여 리드 동작을 수행할 수 있다. 리드 전압은 메모리 셀에 저장된 데이터를 식별하기 위해 인가되는 전압일 수 있다. 디폴트 리드 전압은 메모리 장치(100)의 생산 과정에서 테스트를 통해 결정된 리드 전압일 수 있다.
메모리 장치(100)는 수신된 물리 어드레스에 저장된 데이터를 디폴트 리드 전압을 이용하여 리드한 리드 데이터를 메모리 컨트롤러(200)에 제공할 수 있다. 메모리 컨트롤러(200)는 리드 데이터에 대해서 에러 정정 디코딩(error correction decoding)을 수행할 수 있다.
에러 정정 디코딩은 리드 데이터에 포함된 에러 비트를 정정하여 원본 데이터를 획득하는 동작일 수 있다. 에러 정정 디코딩은 리드 데이터에 포함된 에러 비트의 수가 정정 가능한 에러 비트의 수 이하인지 여부에 따라 성공 또는 실패할 수 있다. 리드 데이터에 포함된 에러 비트의 수가 정정 가능한 에러 비트의 수 이하이면 에러 정정 디코딩은 패스될 수 있다. 반대로 리드 데이터에 포함된 에러 비트의 수가 정정 가능한 에러 비트의 수를 초과하면, 에러 정정 디코딩은 페일될 수 있다. 에러 정정 디코딩이 패스되면, 호스트(300)가 리드 요청한 논리 어드레스에 대응되는 원본 데이터가 획득될 수 있다. 따라서, 에러 정정 디코딩이 패스되면, 메모리 장치(100)가 수행한 리드 동작은 패스될 수 있다. 에러 정정 디코딩에 실패하면, 원본 데이터가 획득될 수 없고, 메모리 장치(100)가 수행한 리드 동작은 페일될 수 있다.
한편, 컴퓨팅 시스템(10)은 예측 오류 분석(Predictive Failure Analysis; PFA) 기법을 통해 워크로드 동작 중에 특정 메모리 영역에 대한 에러를 감지하고, 해당 메모리 영역에 대한 접근을 제한할 수 있다. 다만, 컴퓨팅 시스템(10)은 워크로드 동작에 대응되는 메모리 영역의 에러만 예측할 뿐, 워크로드 동작과 관련되지 않은 메모리 영역의 에러는 감지하지 못한다. 따라서, 에러가 발생된 메모리 영역에 접근하는 경우, 컴퓨팅 시스템(10)에서 정정 불가능 오류(Uncorrectable Error; UE)가 발생하는 문제점이 있다.
따라서, 본 발명의 일 실시 예에 따르면, 호스트(300)의 워크로드 동작 중에 인접한 메모리 셀들에 대한 에러를 검출함으로써, 에러가 발생한 메모리 영역에 대한 접근을 사전에 차단하여 정정 불가능 오류가 발생하는 것을 방지할 수 있다.
일 실시 예에서, 메모리 컨트롤러(200)는 호스트(300)로부터 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 수신할 수 있다. 또한, 메모리 컨트롤러(200)는 복수의 메모리 셀들 중 타겟 어드레스에 대응되는 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 위한 요청을 수신할 수 있다. 또한, 메모리 컨트롤러(200)는 타겟 어드레스를 기초로 테스트 동작을 수행하도록 메모리 장치(100)를 제어할 수 있다.
일 실시 예에서, 메모리 컨트롤러(200)는 테스트 동작 제어부(210) 및 에러 정보 저장부(220)를 포함할 수 있다.
테스트 동작 제어부(210)는 호스트(300)의 요청에 응답하여 테스트 동작을 제어할 수 있다.
일 실시 예에서, 테스트 동작 제어부(210)는 에러가 발생된 메모리 셀과 인접한 메모리 셀들에 대한 테스트 동작을 제어할 수 있다.
일 실시 예에서, 테스트 동작 제어부(210)는 내장 자체 테스트(Built-in self-test; BIST) 엔진 및 스크럽(scurb) 엔진 중 적어도 하나를 이용하여 테스트 동작을 제어할 수 있다.
내장 자체 테스트 엔진은 메모리 컨트롤러(200)에 포함될 수 있다. 일 실시 예에서, 내장 자체 테스트 엔진은 이용한 테스트 동작은 인접한 메모리 셀들에 테스트 데이터를 프로그램하고, 테스트 데이터가 프로그램된 메모리 셀들로부터 데이터를 리드하고, 테스트 데이터와 리드된 데이터를 비교하는 동작을 포함할 수 있다. 테스트 동작 제어부(210)는 테스트 데이터와 리드된 데이터를 비교한 결과를 기초로 인접한 메모리 셀들의 에러 발생 여부를 결정할 수 있다.
스크럽 엔진은 메모리 컨트롤러(200) 및 메모리 장치(100) 중 적어도 하나에 포함될 수 있다. 스크럽 엔진을 이용한 테스트 동작은 인접한 메모리 셀들로부터 데이터를 리드하고, 에러 정정 코드를 이용하여 리드된 데이터의 에러를 검출하는 동작을 포함할 수 있다. 테스트 동작 제어부(210)는 에러 정정 코드를 이용한 에러 검출 동작을 통해 인접한 메모리 셀들의 에러 발생 여부를 결정할 수 있다.
일 실시 예에서, 테스트 동작 제어부(210)는 테스트 동작을 수행한 결과에 기초하여 인접한 메모리 셀들 중 에러가 발생된 메모리 셀들과 관련된 정보를 포함하는 메모리 에러 정보를 생성할 수 있다.
일 실시 예에서, 메모리 에러 정보는 에러의 종류에 대한 정보를 포함하는 에러 종류 정보 및 에러가 발생된 메모리 셀들의 어드레스를 포함하는 어드레스 정보를 포함할 수 있다.
에러의 종류는 싱글 비트 단위에서 발생한 싱글 비트 에러(single bit error), 로우 단위에서 발생한 로우 에러(row error), 멀티 로우 단위에서 멀티 로우 에러(multi row error) 및 컬럼 단위에서 발생한 컬럼 에러(column error)를 포함할 수 있다.
싱글 비트 에러는 동일한 워드 라인, 동일한 비트 라인에서 1개 이하의 에러가 발생한 경우를 의미할 수 있다. 로우 에러는 메모리 장치(100)에서 발생한 적어도 2개 이상의 에러가 동일한 뱅크 내 동일한 로우 어드레스에서 발생하는 경우를 의미할 수 있다. 멀티 로우 에러는 동일한 뱅크에서 적어도 2개 이상의 로우 에러가 발생하는 경우를 의미할 수 있다. 컬럼 에러는 메모리 장치(100)에서 발생한 적어도 2개 이상의 에러가 동일한 컬럼 어드레스에서 발생하는 경우를 의미할 수 있다.
테스트 동작 제어부(210)는 테스트 동작을 수행한 결과에 기초하여 싱글 비트 에러, 로우 에러, 멀티 로우 에러 및 컬럼 에러 중 하나를 선택하여 에러 종류 정보를 생성할 수 있다.
어드레스 정보는 에러가 발생된 메모리 셀들의 뱅크 어드레스, 로우 어드레스 및 컬럼 어드레스를 포함할 수 있다.
일 실시 예에서, 테스트 동작 제어부(210)는 호스트(300)의 요청에 따라 메모리 에러 정보를 호스트(300)로 제공할 수 있다.
에러 정보 저장부(220)는 메모리 에러 정보를 저장할 수 있다.
호스트(300)는 워크로드에 따라 복수의 메모리 셀들에 대한 쓰기 요청, 리드 요청, 소거 요청 등과 같은 동작 요청을 스토리지 장치(50)로 제공할 수 있다.
일 실시 예에서, 호스트(300)는 에러 관리부(310) 및 모드 제어부(320)를 포함할 수 있다. 에러 관리부(310) 및 모드 제어부(320)는 바이오스(미도시)에 포함된 펌웨어일 수 있다.
에러 관리부(310)는 에러 모니터링 소프트웨어(error monitoring software)를 포함할 수 있다.
일 실시 예에서, 에러 관리부(310)는 워크로드에 대응되는 동작을 수행하는 동안에, 메모리 장치(100)에서 발생한 에러를 감지할 수 있다. 일 실시 예에서, 에러 관리부(310)는 에러를 감지하는 경우, 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 메모리 컨트롤러(200)로 제공할 수 있다. 또한, 에러 관리부(310)는 에러가 발생된 메모리 셀들과 인접한 메모리 셀들에 대한 테스트 동작을 요청할 수 있다. 이후, 에러 관리부(310)는 메모리 에러 정보를 요청하고, 메모리 컨트롤러(200)로부터 메모리 에러 정보를 수신할 수 있다.
일 실시 예에서, 에러 관리부(310)는 메모리 에러 정보에 기초하여 에러가 발생된 메모리 셀들에 대한 접근을 제어할 수 있다. 예를 들어, 에러 관리부(310)는 메모리 에러 정보에 기초하여 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다. 구체적으로, 에러 관리부(310)는 에러의 종류와 에러가 발생된 메모리 셀들의 어드레스를 기초로 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다. 또한, 에러 관리부(310)는 에러가 발생된 메모리 셀들에 대한 오프 라이닝(off-lining) 동작을 위한 요청을 메모리 컨트롤러(200)로 제공할 수 있다.
모드 제어부(320)는 호스트(300)의 동작 모드를 설정할 수 있다. 예를 들어, 호스트(300)의 동작 모드는 일반 동작 모드, 시스템 관리 모드(System Management Mode; SMM) 등을 포함할 수 있다. 일반 동작 모드는 호스트에 포함된 운영 체제(미도시)가 워크로드에 대응되는 동작을 수행하는 모드를 의미할 수 있다. 시스템 관리 모드는 운영 체제의 동작을 제한하고 메모리 장치(100)에 포함된 모든 메모리 영역에 대한 접근을 허용하는 모드를 의미할 수 있다.
도 2는 본 발명의 일 실시 예에 따른 테스트 동작의 일 예를 설명하기 위한 도면이다. 도 3은 본 발명의 일 실시 예에 따른 테스트 동작의 일 예를 나타내는 흐름도이다.
구체적으로, 도 2 및 도 3은 메모리 컨트롤러(200)에 포함된 내장 자체 테스트 엔진(BIST engine)을 이용하여 테스트 동작을 수행하는 예를 설명하기 위한 도면이다. 따라서, 도 2 및 도 3에서 메모리 컨트롤러(200)는 내장 자체 테스트 엔진(BIST engine)을 포함하는 것으로 가정한다.
도 2 및 3을 참조하면, 호스트(300)는 워크로드에 대응되는 동작을 수행하는 동안에 특정 메모리 셀에 대한 에러를 감지할 수 있다(S301).
이후, 호스트(300)는 동작 모드를 시스템 관리 모드(SMM mode)로 설정할 수 있다(S303).
이후, 호스트(300)는 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스(target_addr) 및 에러가 발생된 메모리 셀과 인접한 메모리 셀들에 대한 테스트 동작을 위한 요청(test_req)을 메모리 컨트롤러(200)로 제공할 수 있다(S305).
일 실시 예에서, 호스트(300)는 복수의 메모리 셀들에 대한 동작 요청 및 에러 정정 동작을 비활성화할 수 있다(S307).
일 실시 예에서, 테스트 동작 제어부(210)는 인접한 메모리 셀들에 저장된 데이터를 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장하도록 메모리 장치(100)를 제어할 수 있다.
구체적으로, 테스트 동작 제어부(210)는 인접한 메모리 셀들에 저장된 데이터를 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장하도록 하기 위한 커맨드를 메모리 장치(100)로 제공할 수 있다(S309).
메모리 장치(100)는 인접한 메모리 셀들에 저장된 데이터를 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장할 수 있다(S311).
일 실시 예에서, 테스트 동작 제어부(210)는 내장 자체 테스트 엔진(BIST engine)을 이용하여 타겟 어드레스(target_addr)를 기초로 인접한 메모리 셀들에 대한 테스트 동작을 제어할 수 있다.
구체적으로, 테스트 동작 제어부(210)는 테스트 데이터(test data) 및 인접한 메모리 셀들에 테스트 데이터(test data)를 프로그램하도록 하기 위한 쓰기 커맨드(write_cmd)를 메모리 장치(100)로 제공할 수 있다(S313).
메모리 장치(100)는 쓰기 커맨드(write_cmd)에 따라 인접한 메모리 셀들에 테스트 데이터(test data)를 프로그램할 수 있다(S315).
이후, 테스트 동작 제어부(210)는 테스트 데이터(test data)가 프로그램된 메모리 셀들로부터 데이터를 리드하기 위한 리드 커맨드(read_cmd)를 메모리 장치(100)로 제공할 수 있다(S317).
메모리 장치(10)는 리드 커맨드(read_cmd)에 따라 리드된 데이터(read data)를 메모리 컨트롤러(200)로 제공할 수 있다(S319).
이후, 테스트 동작 제어부(210)는 테스트 데이터(test data)와 리드된 데이터(read data)를 비교한 결과를 기초로 메모리 에러 정보(error information)를 생성할 수 있다(S321). 일 실시 예에서, 에러의 종류가 싱글 비트 에러로 결정되는 경우, 테스트 동작 제어부(210)는 테스트 동작을 중단할 수 있다. 에러 정보 저장부(220)는 테스트 동작 제어부(210)에 의해 생성된 메모리 에러 정보(error information)를 저장할 수 있다.
테스트 동작 제어부(210)의 테스트 동작이 종료되면, 호스트(300)는 동작 모드를 일반 동작 모드로 설정할 수 있다(S323).
테스트 동작 제어부(210)는 메모리 에러 정보(error information)를 호스트(300)로 제공할 수 있다(S325).
호스트(300)는 메모리 에러 정보(error information)를 기초로 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다(S327).
도 4는 본 발명의 일 실시 예에 따른 테스트 동작의 다른 예를 설명하기 위한 도면이다. 도 5는 본 발명의 일 실시 예에 따른 테스트 동작의 다른 예를 나타내는 흐름도이다.
구체적으로, 도 4 및 도 5는 메모리 컨트롤러(200)에 포함된 스크럽 엔진(SCRUB engine)을 이용하여 테스트 동작을 수행하는 예를 설명하기 위한 도면이다. 따라서, 도 4 및 도 5에서 메모리 컨트롤러(200)는 스크럽 엔진(SCRUB engine)을 포함하는 것으로 가정한다. 또한, 도 4 및 도 5에서 호스트(300)의 동작 모드는 일반 동작 모드(Normal mode)일 수 있다.
도 4 및 도 5을 참조하면, 호스트(300)는 워크로드에 대응되는 동작을 수행하는 동안에 특정 메모리 셀에 대한 에러를 감지할 수 있다(S501).
이후, 호스트(300)는 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스(target_addr) 및 에러가 발생된 메모리 셀과 인접한 메모리 셀들에 대한 테스트 동작을 위한 요청(test_req)을 메모리 컨트롤러(200)로 제공할 수 있다(S503).
일 실시 예에서, 테스트 동작 제어부(210)는 메모리 컨트롤러(200)에 포함된 스크럽 엔진(SCRUB engine)을 이용하여 타겟 어드레스를 기초로 인접한 메모리 셀들에 대한 테스트 동작을 제어할 수 있다.
구체적으로, 테스트 동작 제어부(210)는 인접한 메모리 셀들로부터 데이터를 리드하기 위한 리드 커맨드(read_cmd)를 메모리 장치(100)로 제공할 수 있다(S505).
메모리 장치(100)는 리드 커맨드(read_cmd)에 따라 리드된 데이터(read data)를 메모리 컨트롤러(200)로 제공할 수 있다(S507).
이후, 테스트 동작 제어부(210)는 에러 정정 코드를 이용하여 리드된 데이터(read data)의 에러를 검출할 수 있다(S509).
이후, 테스트 동작 제어부(210)는 에러 검출 결과를 기초로 메모리 에러 정보(error information)를 생성할 수 있다(S511). 일 실시 예에서, 에러의 종류가 싱글 비트 에러로 결정되는 경우, 테스트 동작 제어부(210)는 테스트 동작을 중단할 수 있다. 에러 정보 저장부(220)는 테스트 동작 제어부(210)에 의해 생성된 메모리 에러 정보(error information)를 저장할 수 있다.
테스트 동작 제어부(210)는 메모리 에러 정보(error information)를 호스트(300)로 제공할 수 있다(S513).
호스트(300)는 메모리 에러 정보(error information)를 기초로 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다(S515).
도 6은 본 발명의 일 실시 예에 따른 테스트 동작의 또 다른 예를 설명하기 위한 도면이다. 도 7은 본 발명의 일 실시 예에 따른 테스트 동작의 또 다른 예를 나타내는 흐름도이다.
구체적으로, 도 6 및 도 7은 메모리 장치(100)에 포함된 스크럽 엔진(SCRUB engine)을 이용하여 테스트 동작을 수행하는 예를 설명하기 위한 도면이다. 따라서, 도 6 및 도 7에서 메모리 장치(100)는 스크럽 엔진(SCRUB engine)을 포함하는 것으로 가정한다. 또한, 도 6 및 도 7에서 호스트(300)의 동작 모드는 일반 동작 모드(Normal mode)일 수 있다.
도 6 및 도 7을 참조하면, 호스트(300)는 워크로드에 대응되는 동작을 수행하는 동안에 특정 메모리 셀에 대한 에러를 감지할 수 있다(S701).
이후, 호스트(300)는 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스(target_addr) 및 에러가 발생된 메모리 셀과 인접한 메모리 셀들에 대한 테스트 동작을 위한 요청(test_req)을 메모리 컨트롤러(200)로 제공할 수 있다(S703).
일 실시 예에서, 테스트 동작 제어부(210)는 메모리 장치(100)에 포함된 스크럽 엔진(SCRUB engine)을 이용하여 타겟 어드레스를 기초로 인접한 메모리 셀들에 대한 테스트 동작을 제어할 수 있다.
구체적으로, 테스트 동작 제어부(210)는 인접한 메모리 셀들에 대한 테스트 동작을 수행하도록 하기 위한 커맨드(cmd)를 메모리 장치(100)로 제공할 수 있다(S705).
메모리 장치(100)는 커맨드(cmd)에 따라 인접한 메모리 셀들로부터 데이터를 리드하고(S707), 에러 정정 코드를 이용하여 리드된 데이터의 에러를 검출할 수 있다(S709).
이후, 메모리 장치(100)는 에러 검출 결과를 기초로 메모리 에러 정보(error information)를 생성할 수 있다(S711). 일 실시 예에서, 에러의 종류가 싱글 비트 에러로 결정되는 경우, 메모리 장치(100)는 테스트 동작을 중단할 수 있다.
메모리 장치(100)는 메모리 에러 정보(error information)를 메모리 컨트롤러(200)로 제공할 수 있다(S713). 에러 정보 저장부(220)는 메모리 장치(100)로부터 제공받은 메모리 에러 정보(error information)를 저장할 수 있다.
테스트 동작 제어부(210)는 메모리 에러 정보(error information)를 호스트(300)로 제공할 수 있다(S715).
호스트(300)는 메모리 에러 정보(error information)를 기초로 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다(S717).
도 8은 본 발명의 일 실시 예에 따른 컴퓨팅 시스템의 동작 방법을 설명하기 위한 순서도이다.
도 8에 도시된 방법은 예를 들어, 도 1에 도시된 컴퓨팅 시스템(10)에 의해 수행될 수 있다.
도 8을 참조하면, 단계 S801에서, 컴퓨팅 시스템(10)은 에러를 감지할 수 있다.
단계 S803에서, 컴퓨팅 시스템(10)은 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 메모리 컨트롤러로 제공할 수 있다.
단계 S805에서, 컴퓨팅 시스템(10)은 메모리 컨트롤러에게 복수의 메모리 셀들 중 에러가 발생된 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청할 수 있다.
단계 S807에서, 컴퓨팅 시스템(10)은 인접한 메모리 셀들에 대한 테스트 동작을 수행할 수 있다.
단계 S809에서, 컴퓨팅 시스템(10)은 테스트 동작을 수행한 결과를 나타내는 메모리 에러 정보를 생성할 수 있다.
단계 S811에서, 컴퓨팅 시스템(10)은 메모리 에러 정보에 기초하여 인접한 메모리 셀들 중 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다.
도 9는 본 발명의 일 실시 예에 따른 테스트 동작을 수행하는 방법의 일 예를 설명하기 위한 순서도이다.
도 9에 도시된 방법은 예를 들어, 도 1에 도시된 컴퓨팅 시스템(10)에 의해 수행될 수 있다.
일 실시 예에서, 도 9에 도시된 방법은 메모리 컨트롤러에 포함된 내장 자체 테스트 엔진을 이용하여 테스트 동작을 수행하는 방법일 수 있다.
도 9를 참조하면, 단계 S901에서, 컴퓨팅 시스템(10)은 에러를 감지할 수 있다.
단계 S903에서, 컴퓨팅 시스템(10)은 호스트의 동작 모드를 시스템 관리 모드로 설정할 수 있다.
단계 S905에서, 컴퓨팅 시스템(10)은 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 메모리 컨트롤러로 제공할 수 있다.
단계 S907에서, 컴퓨팅 시스템(10)은 메모리 컨트롤러에게 복수의 메모리 셀들 중 에러가 발생된 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청할 수 있다.
단계 S909에서, 컴퓨팅 시스템(10)은 테스트 동작을 위한 요청을 제외한 복수의 메모리 셀들에 대한 동작 요청을 비활성화할 수 있다.
단계 S911에서, 컴퓨팅 시스템(10)은 에러 정정 동작을 비활성화할 수 있다.
단계 S913에서, 컴퓨팅 시스템(10)은 인접한 메모리 셀들에 저장된 데이터를 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장할 수 있다.
단계 S915에서, 컴퓨팅 시스템(10)은 인접한 메모리 셀들에 테스트 데이터를 프로그램할 수 있다.
단계 S917에서, 컴퓨팅 시스템(10)은 테스트 데이터가 프로그램된 메모리 셀들로부터 데이터를 리드할 수 있다.
단계 S919에서, 컴퓨팅 시스템(10)은 테스트 데이터와 리드된 데이터를 비교할 수 있다.
단계 S921에서, 컴퓨팅 시스템(10)은 테스트 데이터와 리드된 데이터를 비교한 결과를 기초로 메모리 에러 정보를 생성할 수 있다.
단계 S923에서, 컴퓨팅 시스템(10)은 호스트의 동작 모드를 일반 동작 모드로 설정할 수 있다.
단계 S925에서, 컴퓨팅 시스템(10)은 메모리 에러 정보를 호스트로 제공할 수 있다.
단계 S927에서, 컴퓨팅 시스템(10)은 메모리 에러 정보에 기초하여 인접한 메모리 셀들 중 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다.
도 10은 본 발명의 일 실시 예에 따른 테스트 동작을 수행하는 방법의 다른 예를 설명하기 위한 순서도이다.
도 10에 도시된 방법은 예를 들어, 도 1에 도시된 컴퓨팅 시스템(10)에 의해 수행될 수 있다.
일 실시 예에서, 도 10에 도시된 방법은 메모리 컨트롤러 및 메모리 장치 중 적어도 하나에 포함된 스크럽 엔진을 이용하여 테스트 동작을 수행하는 방법일 수 있다.
또한, 도 10에 도시된 방법은 호스트가 일반 동작 모드로 설정된 상태에서 수행될 수 있다.
도 10을 참조하면, 단계 S1001에서, 컴퓨팅 시스템(10)은 에러를 감지할 수 있다.
단계 S1003에서, 컴퓨팅 시스템(10)은 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 메모리 컨트롤러로 제공할 수 있다.
단계 S1005에서, 컴퓨팅 시스템(10)은 메모리 컨트롤러에게 복수의 메모리 셀들 중 에러가 발생된 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청할 수 있다.
단계 S1007에서, 컴퓨팅 시스템(10)은 인접한 메모리 셀들로부터 데이터를 리드할 수 있다.
단계 S1009에서, 컴퓨팅 시스템(10)은 에러 정정 코드를 이용하여 리드된 데이터의 에러를 검출할 수 있다.
단계 S1011에서, 컴퓨팅 시스템(10)은 에러 검출 결과를 기초로 메모리 에러 정보를 생성할 수 있다.
단계 S1013에서, 컴퓨팅 시스템(10)은 메모리 에러 정보를 호스트로 제공할 수 있다.
단계 S1015에서, 컴퓨팅 시스템(10)은 메모리 에러 정보에 기초하여 인접한 메모리 셀들 중 에러가 발생된 메모리 셀들에 대한 접근을 비활성화할 수 있다.
도 11은 도 1의 메모리 컨트롤러를 설명하기 위한 도면이다.
도 1 및 도 11을 참조하면, 메모리 컨트롤러(200)는 프로세서(230), RAM(240), 에러 정정 회로(250), ROM(260), 호스트 인터페이스(270), 및 메모리 인터페이스(280)를 포함할 수 있다.
프로세서(220)는 메모리 컨트롤러(200)의 제반 동작을 제어할 수 있다. RAM(230)은 메모리 컨트롤러(200)의 버퍼 메모리, 캐시 메모리, 동작 메모리 등으로 사용될 수 있다.
에러 정정 회로(240)는 에러 정정을 수행할 수 있다. 에러 정정 회로(240)는 플래시 인터페이스(280)를 통해 메모리 장치에 기입될 데이터에 기반하여 에러 정정 인코딩(ECC encoding)을 수행할 수 있다. 에러 정정 인코딩된 데이터는 메모리 인터페이스(280)를 통해 메모리 장치로 전달될 수 있다. 에러 정정 회로(240)는 메모리 장치로부터 메모리 인터페이스(280)를 통해 수신되는 데이터에 대해 에러 정정 디코딩(ECC decoding)을 수행할 수 있다. 예시적으로, 에러 정정 회로(240)는 메모리 인터페이스(280)의 구성 요소로서 메모리 인터페이스(280)에 포함될 수 있다.
ROM(260)은 메모리 컨트롤러(200)가 동작하는데 요구되는 다양한 정보들을 펌웨어 형태로 저장할 수 있다. 일 실시 예에서, 도 1의 테스트 동작 제어부(210) 및 에러 정보 저장부(220)는 ROM(260)에 저장되는 펌웨어일 수 있다.
메모리 컨트롤러(200)는 호스트 인터페이스(270)를 통해 외부 장치(예를 들어, 호스트(300), 애플리케이션 프로세서 등)와 통신할 수 있다.
메모리 컨트롤러(200)는 메모리 인터페이스(280)를 통해 메모리 장치(100)와 통신할 수 있다. 메모리 컨트롤러(200)는 메모리 인터페이스(280)를 통해 커맨드, 어드레스, 및 제어 신호 등을 메모리 장치(100)로 전송할 수 있고, 데이터를 수신할 수 있다.
10: 컴퓨팅 시스템
50: 스토리지 장치
100: 메모리 장치
200: 메모리 컨트롤러
210: 테스트 동작 제어부
220: 에러 정보 저장부
300: 호스트
310: 에러 관리부
320: 모드 제어부

Claims (20)

  1. 복수의 메모리 셀들을 포함하는 메모리 장치;
    워크로드에 대응되는 동작을 수행하는 동안에, 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 제공하고, 상기 복수의 메모리 셀들 중 상기 타겟 어드레스에 대응되는 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청하는 호스트; 및
    상기 호스트로부터 상기 타겟 어드레스 및 상기 테스트 동작을 위한 요청을 수신하고, 상기 타겟 어드레스를 기초로 상기 테스트 동작을 수행하도록 상기 메모리 장치를 제어하고, 상기 테스트 동작을 수행한 결과에 기초하여 상기 인접한 메모리 셀들 중 상기 에러가 발생된 메모리 셀들과 관련된 정보를 포함하는 메모리 에러 정보를 생성하는 메모리 컨트롤러;를 포함하고,
    상기 호스트는,
    상기 메모리 에러 정보에 기초하여 상기 복수의 메모리 셀들 중 상기 에러가 발생된 메모리 셀들에 대한 접근을 제어하는 컴퓨팅 시스템.
  2. 제1 항에 있어서, 상기 메모리 컨트롤러는,
    상기 테스트 동작을 위한 요청에 응답하여, 상기 테스트 동작을 수행하도록 상기 메모리 장치를 제어하는 테스트 동작 제어부; 및
    상기 메모리 에러 정보를 저장하는 에러 정보 저장부;를 포함하는 컴퓨팅 시스템.
  3. 제2 항에 있어서, 상기 테스트 동작 제어부는,
    내장 자체 테스트(Built-in self-test; BIST) 엔진 및 스크럽(scurb) 엔진 중 적어도 하나를 이용하여 상기 테스트 동작을 제어하는 컴퓨팅 시스템.
  4. 제3 항에 있어서, 상기 내장 자체 테스트 엔진은,
    상기 메모리 컨트롤러에 포함되고,
    상기 스크럽 엔진은,
    상기 메모리 컨트롤러 및 상기 메모리 장치 중 적어도 하나에 포함되는 컴퓨팅 시스템.
  5. 제3 항에 있어서, 상기 호스트는,
    상기 에러를 감지하는 경우, 상기 호스트의 동작 모드를 시스템 관리 모드로 설정하고, 상기 시스템 관리 모드에서 상기 타겟 어드레스 및 상기 테스트 동작을 위한 요청을 상기 테스트 동작 제어부로 제공하고,
    상기 테스트 동작 제어부는,
    상기 내장 자체 테스트 엔진을 이용하여 상기 테스트 동작을 제어하는 컴퓨팅 시스템.
  6. 제5 항에 있어서, 상기 테스트 동작 제어부는,
    상기 인접한 메모리 셀들에 저장된 데이터를 상기 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장한 뒤, 상기 인접한 메모리 셀들에 대한 상기 테스트 동작을 제어하는 컴퓨팅 시스템.
  7. 제5 항에 있어서, 상기 호스트는,
    상기 시스템 관리 모드에서 상기 테스트 동작을 위한 요청을 제외한 상기 복수의 메모리 셀들에 대한 동작 요청 및 에러 정정 동작을 비활성화하도록 상기 호스트를 제어하는 컴퓨팅 시스템.
  8. 제5 항에 있어서, 상기 내장 자체 테스트 엔진은 이용한 테스트 동작은,
    상기 인접한 메모리 셀들에 테스트 데이터를 프로그램하고, 상기 프로그램된 메모리 셀들로부터 데이터를 리드하고, 상기 테스트 데이터와 상기 리드된 데이터를 비교하는 동작을 포함하는 컴퓨팅 시스템.
  9. 제3 항에 있어서, 상기 호스트는,
    상기 에러를 감지하는 경우, 일반 동작 모드에서 상기 타겟 어드레스 및 상기 테스트 동작을 위한 요청을 상기 테스트 동작 제어부로 제공하고,
    상기 테스트 동작 제어부는,
    상기 스크럽 엔진을 이용하여 상기 테스트 동작을 제어하는 컴퓨팅 시스템.
  10. 제9 항에 있어서, 상기 스크럽 엔진을 이용한 테스트 동작은,
    상기 인접한 메모리 셀들로부터 데이터를 리드하고, 에러 정정 코드(Error Correction Code; ECC)를 이용하여 상기 리드된 데이터의 에러를 검출하는 동작을 포함하는 컴퓨팅 시스템.
  11. 제1 항에 있어서, 상기 메모리 에러 정보는,
    상기 에러의 종류에 대한 정보를 포함하는 에러 종류 정보 및 상기 에러가 발생된 메모리 셀들의 어드레스를 포함하는 어드레스 정보를 포함하는 컴퓨팅 시스템.
  12. 제1 항에 있어서, 상기 호스트는,
    상기 메모리 에러 정보에 기초하여 상기 에러가 발생된 메모리 셀들에 대한 접근을 비활성화하는 컴퓨팅 시스템.
  13. 워크로드에 대응되는 동작을 수행하는 호스트, 복수의 메모리 셀들을 포함하는 메모리 장치 및 상기 호스트의 요청에 따라 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하는 컴퓨팅 시스템의 동작 방법에 있어서,
    에러를 감지하는 단계;
    상기 에러가 발생된 메모리 셀에 대응되는 타겟 어드레스를 상기 메모리 컨트롤러로 제공하는 단계;
    상기 메모리 컨트롤러로 복수의 메모리 셀들 중 상기 에러가 발생된 메모리 셀과 인접한 메모리 셀들의 에러 발생 여부를 결정하기 위한 테스트 동작을 요청하는 단계;
    상기 인접한 메모리 셀들에 대한 상기 테스트 동작을 수행하는 단계;
    상기 테스트 동작을 수행한 결과를 나타내는 메모리 에러 정보를 생성하는 단계; 및
    상기 메모리 에러 정보에 기초하여 상기 인접한 메모리 셀들 중 상기 에러가 발생된 메모리 셀들에 대한 접근을 비활성화하는 단계;를 포함하는 컴퓨팅 시스템의 동작 방법.
  14. 제13 항에 있어서,
    상기 에러를 감지한 뒤, 상기 호스트의 동작 모드를 시스템 관리 모드로 설정하는 단계를 더 포함하고,
    상기 타겟 어드레스를 제공하는 단계, 상기 테스트 동작을 요청하는 단계, 상기 테스트 동작을 수행하는 단계 및 상기 메모리 에러 정보를 생성하는 단계는,
    상기 시스템 관리 모드에서 수행되는 컴퓨팅 시스템의 동작 방법.
  15. 제14 항에 있어서, 상기 테스트 동작을 수행하는 단계는,
    상기 메모리 컨트롤러에 포함된 내장 자체 테스트(Built-in self-test; BIST) 엔진을 이용하여 상기 테스트 동작을 수행하는 컴퓨팅 시스템의 동작 방법.
  16. 제15 항에 있어서, 상기 테스트 동작을 수행하기 이전에,
    상기 테스트 동작을 위한 요청을 제외한 상기 복수의 메모리 셀들에 대한 동작 요청을 비활성화하는 단계;
    에러 정정 동작을 비활성화하는 단계; 및
    상기 인접한 메모리 셀들에 저장된 데이터를 상기 복수의 메모리 셀들 중 데이터가 비어있는 메모리 셀들에 저장하는 단계;를 더 포함하는 컴퓨팅 시스템의 동작 방법.
  17. 제16 항에 있어서, 상기 테스트 동작을 수행하는 단계는,
    상기 인접한 메모리 셀들에 테스트 데이터를 프로그램하는 단계;
    상기 프로그램된 메모리 셀들로부터 데이터를 리드하는 단계; 및
    상기 테스트 데이터와 상기 리드된 데이터를 비교하는 단계;를 포함하는 컴퓨팅 시스템의 동작 방법.
  18. 제13 항에 있어서,
    상기 테스트 동작을 요청하는 단계, 상기 테스트 동작을 수행하는 단계 및 상기 메모리 에러 정보를 생성하는 단계는,
    일반 동작 모드에서 수행되는 컴퓨팅 시스템의 동작 방법.
  19. 제18 항에 있어서, 상기 테스트 동작을 수행하는 단계는,
    상기 메모리 컨트롤러 및 상기 메모리 장치 중 적어도 하나에 포함된 스크럽(scurb) 엔진을 이용하여 상기 테스트 동작을 수행하는 컴퓨팅 시스템의 동작 방법.
  20. 제19 항에 있어서, 상기 테스트 동작을 수행하는 단계는,
    상기 인접한 메모리 셀들로부터 데이터를 리드하는 단계; 및
    에러 정정 코드(Error Correction Code; ECC)을 이용하여 상기 리드된 데이터의 에러를 검출하는 단계;를 포함하는 컴퓨팅 시스템의 동작 방법.
KR1020200143524A 2020-10-30 2020-10-30 컴퓨팅 시스템 및 그 동작 방법 KR20220058127A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200143524A KR20220058127A (ko) 2020-10-30 2020-10-30 컴퓨팅 시스템 및 그 동작 방법
US17/313,868 US11650752B2 (en) 2020-10-30 2021-05-06 Computing system and operating method thereof
CN202110672946.2A CN114446375A (zh) 2020-10-30 2021-06-17 计算系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200143524A KR20220058127A (ko) 2020-10-30 2020-10-30 컴퓨팅 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20220058127A true KR20220058127A (ko) 2022-05-09

Family

ID=81362839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200143524A KR20220058127A (ko) 2020-10-30 2020-10-30 컴퓨팅 시스템 및 그 동작 방법

Country Status (3)

Country Link
US (1) US11650752B2 (ko)
KR (1) KR20220058127A (ko)
CN (1) CN114446375A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102511104B1 (ko) * 2022-06-13 2023-03-15 삼성전자주식회사 메모리 테스트 장치

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220080915A (ko) * 2020-12-08 2022-06-15 삼성전자주식회사 스토리지 장치와 호스트 장치의 구동 방법 및 스토리지 장치
JP2023060606A (ja) * 2021-10-18 2023-04-28 キオクシア株式会社 半導体集積回路及びメモリシステム
US11966277B2 (en) * 2022-01-25 2024-04-23 Dell Products L.P. Storage error identification/reduction system
US12013753B2 (en) * 2022-05-24 2024-06-18 Western Digital Technologies, Inc. Proactive loss notification and handling in data storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008118705A1 (en) 2007-03-28 2008-10-02 Sandisk Corporation Flash memory refresh techniques triggered by controlled scrub data reads
KR20090015506A (ko) 2007-08-09 2009-02-12 울산대학교 산학협력단 램의 이웃 패턴 민감 고장과 이웃 비트라인 민감 고장검출을 위한 자가 테스트 내장회로 및 이를 이용한 자가테스트 방법
KR101425958B1 (ko) 2007-09-06 2014-08-04 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템 및 그것의읽기 방법
US9037928B2 (en) * 2012-01-01 2015-05-19 Mosys, Inc. Memory device with background built-in self-testing and background built-in self-repair
KR20170023439A (ko) 2015-08-24 2017-03-06 삼성전자주식회사 메모리 테스트 시스템 및 메모리 시스템
KR102434053B1 (ko) * 2015-11-16 2022-08-19 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 동작 방법
US9934086B2 (en) * 2016-06-06 2018-04-03 Micron Technology, Inc. Apparatuses and methods for selective determination of data error repair
KR20210026201A (ko) * 2019-08-29 2021-03-10 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 이의 리페어 제어 방법
KR20210026487A (ko) * 2019-08-30 2021-03-10 삼성전자주식회사 휘발성 메모리 장치의 리페어 제어 방법 및 이를 수행하는 스토리지 장치
US10977139B1 (en) * 2019-10-14 2021-04-13 Micron Technology, Inc. Detailed failure notifications in memory sub-systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102511104B1 (ko) * 2022-06-13 2023-03-15 삼성전자주식회사 메모리 테스트 장치

Also Published As

Publication number Publication date
US11650752B2 (en) 2023-05-16
CN114446375A (zh) 2022-05-06
US20220137859A1 (en) 2022-05-05

Similar Documents

Publication Publication Date Title
KR20220058127A (ko) 컴퓨팅 시스템 및 그 동작 방법
US11282564B1 (en) Selective wordline scans based on a data state metric
US8176267B2 (en) Data accessing method for flash memory storage device having data perturbation module, and storage system and controller using the same
US11928055B2 (en) Memory sub-system for decoding non-power-of-two addressable unit address boundaries
US11625298B2 (en) Memory block defect detection and management
US11704196B2 (en) Reduced parity data management
WO2021041394A1 (en) Data redirection upon failure of a program operation
KR20220028300A (ko) 메모리 시스템 및 그 동작 방법
KR102666123B1 (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20210108208A (ko) 저장 장치 및 그 동작 방법
KR20210104278A (ko) 저장 장치 및 그 동작 방법
KR20210115751A (ko) 스토리지 장치 및 그 동작 방법
US9424922B2 (en) Semiconductor memory device, operating method thereof, and data storage device including the same
KR20220070989A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
CN112783431A (zh) 存储装置及其操作方法
US11556261B2 (en) Memory stripe coding management
US20240036741A1 (en) Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state
US11995320B2 (en) Scan fragmentation in memory devices
US11942160B2 (en) Performing a program operation based on a high voltage pulse to securely erase data
US20200319962A1 (en) Memory device for swapping data and operating method thereof
KR20230050012A (ko) 스토리지 장치 및 그 동작 방법
KR20220022139A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20220059272A (ko) 저장 장치 및 그 동작 방법
CN115273925A (zh) 存储器子系统刷新
CN116126213A (zh) 存储装置共享系统及其操作方法