KR20240095910A - 신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20240095910A
KR20240095910A KR1020220178032A KR20220178032A KR20240095910A KR 20240095910 A KR20240095910 A KR 20240095910A KR 1020220178032 A KR1020220178032 A KR 1020220178032A KR 20220178032 A KR20220178032 A KR 20220178032A KR 20240095910 A KR20240095910 A KR 20240095910A
Authority
KR
South Korea
Prior art keywords
word line
word lines
word
lines
read
Prior art date
Application number
KR1020220178032A
Other languages
English (en)
Inventor
신승환
Original Assignee
에스케이하이닉스 주식회사
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to US18/321,770 priority Critical patent/US20240201864A1/en
Publication of KR20240095910A publication Critical patent/KR20240095910A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory

Abstract

본 기술은 신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법에 관한 것으로서, K개의 워드라인(wordline)을 포함하는 비휘발성 메모리 장치, 및 K개의 워드라인 각각에 대해 수행된 리드 리트라이(retry) 동작의 횟수를 카운팅한 횟수가 상대적으로 높은 최대 N개의 워드라인을 선택하여 제1워드라인으로서 관리하며, 설정된 주기마다 호스트로부터의 리드 요청 없이 K개의 워드라인 중 대상 워드라인의 에러 발생 여부를 확인하기 위한 미디어 스캔(media scan) 동작을 수행하고, 상기 설정된 주기마다 샘플링 조건을 만족하는 제2워드라인 및 상기 제1워드라인 중 상기 카운팅한 횟수가 기준횟수를 초과하는 제3워드라인을 상기 대상 워드라인으로 선택하는 컨트롤러를 포함한다.

Description

신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법{APPARATUS AND METHOD FOR ASSURING RELIABILITY}
본 발명은 메모리 시스템에 관한 것으로서, 구체적으로 신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치는 전원이 차단되어도 데이터가 소멸되지 않는 메모리 장치로서, 롬(Read Only Memory; ROM), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM) 및 플래시 메모리(Flash Memory) 등이 있다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
한편, 비휘발성 메모리 장치 중 플래시 메모리는 메모리 셀들의 문턱 전압을 변화시킴으로써 데이터를 저장하고, 미리 정해진 리드 레벨을 이용하여 데이터를 리드하는 방식을 사용한다. 그러나, 데이터를 저장한 후 시간의 흐름에 따라 메모리 셀들의 문턱 전압이 변경될 수 있고, 이에 따라, 리드 오류가 발생할 수 있다.
이와 같은, 리드 오류 발생을 방지하기 위해, 플래시 메모리를 사용하는 메모리 시스템의 경우, 미디어 스캔(media scan) 동작을 수행할 수 있다. 여기서, 미디어 스캔 동작은, 오랫동안 액세스되지 않은 메모리 영역에서 정정 불가능할 정도의 에러가 발생하는 것을 방지하기 위해 메모리 시스템 스스로 플래시 메모리의 데이터를 리드하여 에러 발생 여부를 확인하는 동작을 의미할 수 있다. 만약, 미디어 스캔 동작에서 정해진 기준 이상의 에러가 발생하는 경우, 메모리 시스템은 스스로, 에러가 발생한 메모리 영역의 데이터를 다른 메모리 영역으로 이동시켜주는 동작을 수행할 수 있다.
본 발명의 실시예는 메모리 장치에 포함된 워드라인(wordline)에 대한 리드 리트라이(retry) 카운트에 따라 미디어 스캔(media scan) 동작에 적용할지 여부를 제어할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법을 제공한다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 메모리 시스템은, K개의 워드라인(wordline)을 포함하는 비휘발성 메모리 장치; 및 K개의 워드라인 각각에 대해 수행된 리드 리트라이(retry) 동작의 횟수를 카운팅한 횟수가 상대적으로 높은 최대 N개의 워드라인을 선택하여 제1워드라인으로서 관리하며, 설정된 주기마다 호스트로부터의 리드 요청 없이 K개의 워드라인 중 대상 워드라인의 에러 발생 여부를 확인하기 위한 미디어 스캔(media scan) 동작을 수행하고, 상기 설정된 주기마다 샘플링 조건을 만족하는 제2워드라인 및 상기 제1워드라인 중 상기 카운팅한 횟수가 기준횟수를 초과하는 제3워드라인을 상기 대상 워드라인으로 선택하는 컨트롤러를 포함할 수 있으며, N은 1이상 K이하의 자연수이고, K는 2이상의 자연수일 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, K개의 워드라인 각각에 대해 수행된 리드 리트라이(retry) 동작의 횟수를 카운팅하는 단계; 상기 카운팅하는 단계에서 카운팅한 횟수가 상대적으로 높은 최대 N개의 워드라인을 선택하여 제1워드라인으로서 리트라이 테이블에 저장하는 단계; 설정된 주기마다 K개의 워드라인 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인에 대해 호스트로부터의 리드 요청 없이 에러 발생 여부를 확인하기 위한 미디어 스캔(media scan) 동작을 수행하는 제1스캔단계; 및 상기 설정된 주기마다 상기 제1스캔단계 이후, 상기 제1워드라인 중 상기 카운팅한 횟수가 기준횟수를 초과하는 제3워드라인에 대해 상기 미디어 스캔 동작을 수행하는 제2스캔단계를 포함할 수 있으며, N은 1이상 K이하의 자연수이고, K는 2이상의 자연수일 수 있다.
본 기술은 메모리 장치에 포함된 다수의 워드라인 각각에 대한 리드 리트라이(retry) 카운트에 따라 미디어 스캔(media scan) 동작에 우선적으로 적용될 워드라인을 선택할 수 있다.
이를 통해, 효과적으로 미디어 스캔 동작을 수행하여, 메모리 장치에 저장된 데이터에 대한 신뢰성을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 설명한다.
도 2 및 도 3은 리드 리트라이 동작을 설명하기 위한 도면이다.
도 4 내지 도 11은 본 발명의 실시예에 따른 메모리 시스템에서 리트라이 테이블의 관리동작을 설명하기 위해 도시한 도면이다.
도 12 및 도 13는 본 발명의 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2 및 도 3은 리드 리트라이 동작을 설명하기 위한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(Host)(102) 및 메모리 시스템(110)을 포함할 수 있다. 예를 들면, 호스트(102)와 메모리 시스템(110)은 데이터 버스(data bus), 호스트 케이블(host cable) 등과 같은 데이터 전달 수단을 통해 연결되어, 데이터를 송수신할 수 있다.
메모리 시스템(110)은 메모리 장치(150)와 컨트롤러(130)를 포함할 수 있다. 메모리 시스템(110) 내 메모리 장치(150)와 컨트롤러(130)는 물리적으로 구분되는 구성요소일 수 있다. 메모리 장치(150)와 컨트롤러(130)는 적어도 하나의 데이터 패스(data path)로 연결될 수 있다. 예를 들면, 데이터 패스는 채널(channel) 및/또는 웨이(way) 등으로 구성될 수 있다.
실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 기능적으로 구분되는 구성요소일 수 있다. 또한, 실시예에 따라, 메모리 장치(150)와 컨트롤러(130)는 하나의 반도체 장치 칩(chip) 혹은 다수의 반도체 장치 칩(chip)을 통해 구현될 수 있다. 실시예에 따라, 높은 집적도가 요구되는 메모리 시스템(110)의 경우, 메모리 장치(150)와 컨트롤러(130)는 하나의 반도체 장치 칩(chip)으로 구성될 수도 있다.
컨트롤러(130)는 호스트(102)로부터 입력된 커맨드에 대응하는 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 수행하기 위해 메모리 장치(150)를 제어할 수도 있고, 호스트(102)와 같은 외부 장치에서 입력되는 커맨드와 무관하게 메모리 시스템(110)이 독립적으로 동작을 수행할 수도 있다.
실시예에 따라, 호스트(102)로부터 프로그램 커맨드가 입력되면, 컨트롤러(130)는 호스트(102)로부터 메모리 장치(150)에 저장할 프로그램 데이터와 해당 프로그램 데이터를 식별하기 위한 논리 어드레스(Logical Address, LA)를 입력 받을 수 있다. 컨트롤러(130)는 입력된 논리 어드레스를 메모리 장치(150)에 포함된 메모리 셀들 중 프로그램 데이터가 저장될 메모리 셀들의 물리적인 주소를 나타내는 물리 어드레스(Physical Address, PA)로 변환할 수 있다. 예컨대, 하나의 물리 어드레스는 하나의 물리 페이지에 대응될 수 있다. 컨트롤러(130)는 데이터를 저장하기 위한 프로그램 커맨드, 물리 어드레스 및 프로그램 데이터를 메모리 장치(150)에 제공할 수 있다.
다른 실시예에 따라, 호스트(102)로부터 리드 커맨드가 입력되면, 컨트롤러(130)는 호스트(102)로부터 리드 요청에 대응되는 논리 어드레스를 수신할 수 있다. 여기서 리드 요청에 대응되는 논리 어드레스는 리드 요청된 데이터를 식별하는 논리 어드레스일 수 있다. 컨트롤러(130)는 호스트(102)가 제공한 논리 어드레스와 메모리 장치(150)의 물리 어드레스 간의 대응관계를 나타내는 맵 데이터로부터 리드 요청에 대응되는 논리 어드레스와 맵핑된 물리 어드레스를 획득할 수 있다. 이후, 컨트롤러(130)는 메모리 장치(150)에 리드 커맨드 및 물리 어드레스를 제공할 수 있다.
또 다른 실시예에 따라, 이레이즈 동작 시, 컨트롤러(130)는 이레이즈 커맨드 및 이레이즈할 영역의 물리 어드레스를 메모리 장치(150)에 제공할 수 있다.
또 다른 실시예에 따라, 컨트롤러(130)는 호스트(102)로부터의 요청과 무관하게 자체적으로 프로그램 동작, 리드 동작 또는 이레이즈 동작을 수행하도록 메모리 장치(150)를 제어할 수 있다. 예를 들면, 컨트롤러(130)는 웨어 레벨링(wear leveling), 가비지 컬렉션(garbage collection), 리드 리클레임(read reclaim) 및 미디어 스캔(media scan)과 같은 백그라운드 동작(background operation)들을 수행하기 위해 메모리 장치(150)를 제어할 수 있다.
실시예에 따라, 메모리 장치(150)는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND 혹은 NOR 플래시 메모리(flash memory), 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 또는 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리 장치로 구현될 수 있다.
메모리 시스템(110)과 연동하는 호스트(102) 혹은 메모리 시스템(110)을 포함하는 데이터 처리 시스템(110)은 오토모티브 등과 같은 모빌리티(mobility) 전자 장치, 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 비휴대용 전자 장치를 포함할 수 있다. 호스트(102)는, 적어도 하나의 운영 시스템(OS: operating system)을 통해 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공할 수 있다. 호스트(102)는 사용자 요청에 해당하는 다수의 커맨드들을 메모리 시스템(110)으로 전송하며, 메모리 시스템(110)에서는 다수의 커맨드들에 해당하는 동작들(즉, 사용자 요청에 상응하는 동작들)을 수행할 수 있다.
메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
한편, 메모리 장치(150)는 다수의 워드라인을 포함할 수 있다. 이때, 메모리 장치(150)에 포함된 다수의 워드라인은 로우(row)방향으로 배치되는 라인일 수 있다. 또한, 워드라인에 포함된 다수의 메모리 셀은, 워드라인에 접속된 다수의 메모리 셀을 의미할 수 있다. 참고로, 도면에 도시되지 않았지만, 메모리 장치(150)에 포함된 다수의 워드라인은, 컬럼(column)방향으로 배치되는 비트라인과 교차할 수 있으며, 다수의 메모리 셀은 워드라인과 비트라인 사이에 접속될 수 있다.
구체적으로, 메모리 장치(150)는, 다수의 메모리 셀들을 각각 포함하는 K개의 워드라인(WL1, WL2, WL3, … , WLK)을 포함할 수 있다. 또한, 메모리 장치(150)에 포함된 다수의 메모리 블록(152, 154, 156) 각각은, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 M개의 워드라인(WL1, WL2, WL3, … WLM / WLM+1, WLM+2, WLM+3, … , WL2M / WL2M+1, WL2M+2, WL2M+3, … ,WL3M)을 포함할 수 있다. 여기서, K는 2이상의 자연수이고, M은 1이상 K이하의 자연수이며, K는 M으로 나누어 떨어질 수 있다.
도면에서는 메모리 장치(150)에 3개의 메모리 블록(152, 154, 156)이 포함되는 것을 가정하여 3M이 K인 것을 가정하였으며, 이는 설명의 편의를 위해 예시한 것일 뿐, 실제로는 메모리 장치(150)에 더 작거나 더 많은 개수의 메모리 블록이 포함될 수 있다. 이때, 메모리 블록은 메모리 장치(150)에 저장된 데이터를 지우는 소거 동작을 수행하는 단위일 수 있다. 즉, 같은 메모리 블록에 저장된 데이터들은 동시에 소거될 수 있다 또한, 메모리 블록(152, 154, 156)은 프로그램 동작 시 함께 데이터가 저장되거나 리드 동작 시 데이터를 함께 출력하는 비휘발성 메모리 셀들의 그룹인 페이지(page)를 포함할 수 있다. 예를 들면, 하나의 메모리 블록(152, 154, 156)에는 다수의 페이지가 포함될 수 있다. 하나의 페이지에는 다수의 비휘발성 메모리 셀이 포함될 수 있다.
또한, 메모리 장치(150)에 포함된 K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각은, 논리적으로 적어도 한 개 이상의 페이지(page)를 포함할 수 있다. 즉, 하나의 메모리 셀에 저장 또는 표현할 수 있는 비트의 수에 따라, 단일 레벨 셀(SLC: Single Level Cell) 및 멀티 레벨 셀(MLC: Multi Level Cell) 등으로 구분될 수 있다. 이때, 페이지는 메모리 장치(150)에 데이터를 저장하거나, 메모리 장치(150)에 저장된 데이터를 리드하는 단위일 수 있다. 즉, 컨트롤러(130)가 프로그램 동작 또는 리드 동작시에 메모리 장치(150)에 제공하는 물리 어드레스는 특정 페이지를 식별하기 위한 어드레스일 수 있다.
실시예에 따라, 단일 레벨 셀이 포함되는 경우, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각은, 논리적으로 한 개의 페이지를 포함할 수 있다. 다른 실시예에 따라, 2비트 멀티 레벨 셀이 포함되는 경우, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각은, 논리적으로 두 개의 페이지를 포함할 수 있다. 또 다른 실시예에 따라, 3비트 멀티 레벨 셀인 트리플 레벨 셀(TLC: Triple Level Cell)이 포함되는 경우, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각은, 논리적으로 세 개의 페이지를 포함할 수 있다. 또 다른 실시예에 따라, 4비트 멀티 레벨 셀인 쿼드러플 레벨 셀(QLC: Quadruple Level Cell)이 포함되는 경우, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각은, 논리적으로 네 개의 페이지를 포함할 수 있다.
좀 더 구체적으로, 메모리 시스템(110)에서 컨트롤러(130)는, 메모리 장치(150)에 포함된 K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각에 대해 리드 리트라이(retry) 동작의 수행 횟수를 카운팅하되, 카운팅된 횟수가 상대적으로 높은 최대 N개의 제1워드라인(TG_WL<1:N>)을 선택하여 리트라이 테이블(220)에서 관리할 수 있다. 따라서, 리트라이 테이블(220)에는, 최대 N개의 제1워드라인(TG_WL<1:N>) 및 그에 대응하는 최대 N개의 리드 리트라이 카운팅 횟수(TG_CNT<1:N>)가 포함될 수 있다. 이때, 리트라이 테이블(220)에서 최대 N개의 제1워드라인(TG_WL<1:N>)가 관리된다는 것은, 최대 N개의 제1워드라인(TG_WL<1:N>) 각각을 가리키는 최대 N개의 물리주소 또는 논리주소가 리트라이 테이블(220)에 저장된다는 것을 의미할 수 있다. 여기서, 리드 리트라이 동작은, 앞선 리드 동작을 통해 리드된 데이터에 에러가 발생하여 리드가 실패하는 경우, 앞선 리드 동작에 사용된 리드 전압의 레벨을 변경하여 다시 리드 동작을 수행하는 것을 의미할 수 있다.
또한, 컨트롤러(130)는, 설정된 주기마다 호스트(102)로부터의 리드 요청 없이 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 예정된 개수의 대상 워드라인에 저장된 데이터를 리드하여 에러 발생여부를 확인하는 미디어 스캔(media scan) 동작을 수행할 수 있다. 여기서, 미디어 스캔 동작은, 오랫동안 액세스되지 않은 메모리 영역에서 정정 불가능할 정도의 에러가 발생하는 것을 방지하기 위해 호스트(102)로부터의 리드 요청과 상관없이 데이터를 리드하여 에러 발생 여부를 확인하는 동작을 의미할 수 있다. 만약, 미디어 스캔 동작에서 정해진 기준 이상의 에러가 발생하는 경우, 컨트롤러(130)는, 에러가 발생한 해당 워드라인 또는 해당 워드라인이 포함된 메모리 블록의 데이터를 다른 워드라인 또는 다른 메모리 블록으로 이동시켜주는 동작을 수행할 수 있다.
또한, 컨트롤러(130)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL), 및 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중 기준횟수를 초과하는 카운팅 횟수(TG_CNT<1:N>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 제3워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다. 즉, 컨트롤러(130)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 제2워드라인(SAM_WL) 및 제3워드라인을 나머지 다른 워드라인보다 더 우선적으로 미디어 스캔 동작을 위한 대상 워드라인으로 선택할 수 있다.
여기서, 설정된 주기는, 메모리 시스템(110)에 대한 다양한 파라미터(parameter)에 따라 가변될 수 있다. 예컨대, 동작 온도, 메모리 장치(150)에 대한 프로그램/이레이즈 사이클, 프로그램 경과 시간, 가용용량 등을 포함하는 다양한 파라미터에 따라 설정된 주기를 가변할 수 있다.
또한, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각의 물리적인 위치, 프로그램/이레이즈 사이클, 리드 횟수에 의해 결정되는 샘플링 조건에 따라 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 적어도 하나 이상의 제2워드라인(SAM_WL)을 선택하여 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 실시예에 따라, 컨트롤러(130)는, 다수의 메모리 블록(152, 154, 156) 각각에서 특정 물리적 위치에 있거나 또는 정해진 기준 이상의 프로그램/이레이즈 사이클 또는 정해진 기준 이상의 리드 횟수를 갖는 적어도 하나 이상의 워드라인을 제2워드라인(SAM_WL)로 선택하여 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다.
또한, 컨트롤러(130)는, 리트라이 테이블(220)에 저장된 제1워드라인(TG_WL<1:N>)의 개수, 및 제1워드라인(TG_WL<1:N>) 중 기준횟수를 초과하는 카운팅 횟수(TG_CNT<1:N>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 제3워드라인의 개수 각각을 예정된 개수와 비교한 결과에 따라 다음과 같이 동작할 수 있다.
먼저, 제1워드라인(TG_WL<1:N>) 및 제3워드라인 각각의 개수가 예정된 개수 이상인 경우, 컨트롤러(130)는, 제3워드라인 중 상대적으로 높은 카운팅 횟수를 갖는 예정된 개수의 워드라인을 선택하여 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 즉, 제3워드라인 중 예정된 개수의 워드라인만 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다.
또한, 제1워드라인(TG_WL<1:N>)의 개수가 예정된 개수 이상이고 제3워드라인의 개수가 예정된 개수 미만인 경우, 컨트롤러(130)는, 제1워드라인(TG_WL<1:N>) 중 제3워드라인을 제외한 나머지 워드라인에서 제2워드라인(SAM_WL)과 겹치지 않도록 랜덤하게 선택한 제4워드라인을 제3워드라인 및 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 이때, 컨트롤러(130)는, 제3워드라인의 개수와 제4워드라인의 개수를 합한 개수가 예정된 개수가 되도록, 제4워드라인의 선택 개수를 조절할 수 있다.
또한, 제1워드라인(TG_WL<1:N>)의 개수가 예정된 개수 미만인 경우, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 제1워드라인(TG_WL<1:N>)을 제외한 나머지 워드라인에서 제2워드라인(SAM_WL)과 겹치지 않도록 랜덤하게 선택한 제5워드라인과 제1워드라인(TG_WL<1:N>) 중 제2워드라인(SAM_WL)과 겹치지 않는 워드라인 및 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 이때, 컨트롤러(130)는, 제1워드라인(TG_WL<1:N>) 중 제2워드라인(SAM_WL)과 겹치지 않는 워드라인의 개수와 제5워드라인의 개수를 합한 개수가 예정된 개수가 되도록, 제5워드라인의 선택 개수를 조절할 수 있다.
참고로, 컨트롤러(130)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 몇 개의 워드라인을 제2워드라인(SAM_WL)로 선택하는지에 따라 예정된 개수를 가변할 수 있다. 예컨대, 첫 번째 설정된 주기에서 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 40개의 워드라인을 제2워드라인(SAM_WL)로 선택하는 경우 예정된 개수는 10개가 되고, 두 번째 설정된 주기에서 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 35개의 워드라인을 제2워드라인(SAM_WL)로 선택하는 경우 예정된 개수는 15개가 될 수 있다.
한편, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 앞선 리드 동작이 실패한 제6워드라인에 대해 수행된 리드 리트라이 동작이 성공할 때, 리트라이 테이블(220)을 참조하여 제6워드라인에 대한 카운팅 횟수를 결정할 수 있다.
여기서, 리드 리트라이 동작은, 호스트(102)로부터의 리드 요청에 따라 시작 리드 전압을 이용하여 메모리 장치(150)로부터 리드한 데이터에 에러가 발생하는 경우, 시작 리드 전압과는 다른 레벨의 리드 전압을 적어도 한 개 이상 사용하여 다시 메모리 장치(150)로부터 데이터를 리드하는 동작을 의미할 수 있다. 리드 리트라이 동작에 사용되는 리드 전압은 메모리 셀에 저장된 데이터를 식별하기 위해 인가되는 전압일 수 있다. 또한, 컨트롤러(130)에는 다수의 리드 전압에 대한 정보가 포함된 리드 테이블(READ TABLE)을 포함할 수 있으며, 리드 테이블(READ TABLE에 포함된 다수의 리드 전압을 정해진 순서대로 이용하여 리드 리트라이 동작을 제어할 수 있다. 이때, 컨트롤러(130)에서 리드 테이블(READ TABLE)에 포함된 다수의 리드 전압 및 그 중 어떤 것을 시작 리드 전압으로 이용하고 어떤 순서대로 이용할지 등에 대한 정보는, 메모리 장치(150)의 생산 과정에서 테스트를 통해 미리 결정될 수 있다.
구체적으로, 도 1 내지 도 3를 참조하면, 컨트롤러(130)는, 호스트(102)로부터 수신된 리드 요청에 응답하여 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 선택 워드라인에 대해 시작 리드전압(DR<1:3>)을 사용하여 첫 번째 리드 동작을 수행할 수 있다.
첫 번째 리드 동작의 수행결과 기준치 미만의 에러가 발생하면, 선택 워드라인에 대해 수행된 리드 동작이 성공(READ SUCCESS)했다고 볼 수 있다.
첫 번째 리드 동작의 수행결과 기준치 이상의 에러가 발생하면, 선택 워드라인에 대한 첫 번째 리드 동작이 실패(READ FAIL)한 것으로 판단하고, 리드 테이블(READ TABLE)을 참조하여 시작 리드전압(DR<1:3>)과는 다른 레벨을 갖는 첫 번째 수정 리드 전압(RR1<1:3>)을 사용하는 리드 리트라이 동작(READ RETRY)을 두 번째 리드 동작으로 수행하며, 선택 워드라인을 제6워드라인으로 구분할 수 있다.
두 번째 리드 동작의 수행결과 기준치 미만의 에러가 발생하면, 제6워드라인에 대해 수행된 리드 리트라이 동작(READ RETRY)이 성공(READ SUCCESS)했다고 볼 수 있다. 이와 같은 경우, 컨트롤러(130)는, 리트라이 테이블(220)을 참조하여 제6워드라인에 대한 카운팅 횟수를 결정할 수 있다.
이렇게, 제6워드라인에 대해 수행된 리드 리트라이 동작이 성공할 때, 컨트롤러(130)는, 제6워드라인이 리트라이 테이블(220)에 포함되었는지 여부를 확인할 수 있다.
리트라이 테이블(220)에 제6워드라인이 포함된 것으로 확인되는 경우, 컨트롤러(130)는, 리트라이 테이블에 포함된 제6워드라인의 리드 리트라이 카운팅 횟수를 업-카운팅할 수 있다. 즉, 컨트롤러(130)는, 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중에 제6워드라인이 포함된 것으로 확인되는 경우, 확인된 제6워드라인의 리드 리트라이 카운팅 횟수를 업-카운팅하여 리트라이 테이블(220)에 업데이트할 수 있다.
리트라이 테이블(220)에 제6워드라인이 포함되지 않은 것으로 확인되는 경우, 컨트롤러(130)는, 제6워드라인의 리드 리트라이 카운팅 횟수를 기준횟수보다 작은 설정된 횟수로 결정할 수 있다. 즉, 컨트롤러(130)는, 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중에 제6워드라인이 포함되지 않는 것으로 확인되는 경우, 제6워드라인의 리드 리트라이 카운팅 횟수를 기준횟수보다 작은 설정된 횟수로 결정할 수 있다. 실시예에 따라, 설정된 횟수는 '1'이 될 수 있다.
또한, 컨트롤러(130)는, 제6워드라인의 리드 리트라이 카운팅 횟수를 설정된 횟수로 결정한 뒤, 리트라이 테이블(220)에 빈(empty)공간이 존재하는 경우, 빈공간에 제6워드라인을 포함시킬 수 있다. 즉, 리트라이 테이블(220)에 저장된 제1워드라인(TG_WL<1:N>)의 개수가 N개보다 작은 경우, 컨트롤러(130)는, 제6워드라인을 새로운 제1워드라인(TG_WL<1:N>)으로서 리트라이 테이블(220)에 저장할 수 있다.
또한, 컨트롤러(130)는, 제6워드라인의 리드 리트라이 카운팅 횟수를 설정된 횟수로 결정한 뒤, 리트라이 테이블(220)에 빈공간이 존재하지 않고 리트라이 테이블(220)에 저장된 제1워드라인(TG_WL<1:N>) 중 리드 리트라이 카운팅 횟수가 설정된 횟수인 제7워드라인이 적어도 하나 이상 포함되는 경우, 적어도 하나 이상의 제7워드라인 중 어느 하나의 워드라인 대체하여 제6워드라인을 리트라이 테이블(220)에 포함시킬 수 있다. 즉, 리트라이 테이블(220)에 N개의 제1워드라인(TG_WL<1:N>)이 저장되어 있고, N개의 제1워드라인(TG_WL<1:N>) 중 리드 리트라이 카운팅 횟수가 설정된 횟수인 제7워드라인이 적어도 하나 이상 존재하는 경우, 컨트롤러(130)는, 리트라이 테이블(220)에서 어느 하나의 제7워드라인을 삭제하고 대신 제6워드라인을 새로운 제1워드라인(TG_WL<1:N>)로서 리트라이 테이블(220)에 저장할 수 있다.
또한, 컨트롤러(130)는, 제6워드라인의 리드 리트라이 카운팅 횟수를 설정된 횟수로 결정한 뒤, 리트라이 테이블(220)에 빈공간이 존재하지 않고 리트라이 테이블(220)에 저장된 제1워드라인(TG_WL<1:N>) 중 가장 작은 리드 리트라이 카운팅 횟수가 설정된 횟수를 초과하는 경우, 제6워드라인을 리트라이 테이블(220)에 포함시키지 않을 수 있다. 즉, 리트라이 테이블(220)에 N개의 제1워드라인(TG_WL<1:N>)가 저장되어 있고, N개의 제1워드라인(TG_WL<1:N>) 중 가장 작은 리드 리트라이 카운팅 횟수가 설정된 횟수를 초과하는 경우, 컨트롤러(130)는, 제6워드라인을 리트라이 테이블(220)에 저장하지 않을 수 있다.
참고로, 컨트롤러(130)는, 첫 번째 수정 리드 전압(RR1<1:3>)을 사용하는 리드 리트라이 동작(READ RETRY)을 두 번째 리드 동작으로 수행한 결과로서, 기준치 이상의 에러가 발생하여 제6워드라인에 대해 수행된 리드 리트라이 동작(READ RETRY)이 실패할 수 있다. 이와 같은 경우, 컨트롤러(130)는, 다시 리드 테이블(READ TABLE)을 참조하여 첫 번째 수정 리드 전압(RR1<1:3>)과는 다른 레벨을 갖는 두 번째 수정 리드 전압(RR2<1:3>)을 사용하는 리드 리트라이 동작(READ RETRY)을 세 번째 리드 동작으로 수행할 수 있다. 이와 같은 방식으로, 리드 리트라이 동작이 반복될 수 있으며, 리드 리트라이 동작을 몇 번 수행할지 여부는 실시예에 따라 얼마든지 다양하게 정의될 수 있다. 또한, 도면에서는 리드 테이블(READ TABLE)에 3종류의 리드 전압(DR<1:3>, RR1<1:3>, RR2<1:3>)만 포함되는 것을 도시하였는데, 이는 어디까지나 하나의 실시예일 뿐이며, 다른 실시예에 따라 더 많은 종류의 리드 전압이 포함되는 것도 얼마든지 가능하다.
그리고, 컨트롤러(130)는, 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중 내부의 메모리 셀들에 저장된 데이터가 무효(invalid) 또는 이레이즈(erase)된 워드라인을 리트라이 테이블(220)에서 삭제할 수 있다. 즉, 컨트롤러(130)는, 프로그램 동작 또는 이레이즈 동작 또는 백그라운드 동작을 통해 메모리 장치(150)에 포함된 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 선택된 워드라인의 메모리 셀들에 저장된 데이터를 무효 또는 이레이즈시킬 수 있다. 이때, 컨트롤러(130)는, 무효 또는 이레이즈된 선택된 워드라인이 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중 하나의 워드라인으로 확인되는 경우, 해당 워드라인을 리트라이 테이블(220)에서 삭제할 수 있다.
그리고, 컨트롤러(130)는, 내부에 포함된 휘발성 메모리 장치(144)에 리트라이 테이블(220)을 저장하고, 예정된 시점마다 휘발성 메모리 장치(144)에 저장된 리트라이 테이블(220)을 비휘발성 메모리 장치(150)에 백업할 수 있다.
좀 더 구체적으로, 메모리 시스템(110)에서 컨트롤러(130)는, 호스트 인터페이스(Host I/F, 132), 프로세서(Processor, 134), ECC(Error Correction Code, 138), PMU(Power Management Unit, 140), 메모리 인터페이스(Memory I/F, 142), 메모리(Memory, 144)와, 리드 리트라이 컨트롤러(230) 및 미디어 스캔 컨트롤러(200)를 포함할 수 있다.
호스트 인터페이스(132)는, 호스트(102)로부터 전달되는 신호, 커맨드(command) 또는 데이터를 수신할 수 있다. 즉, 호스트(102)와 메모리 시스템(110)은 서로 약속된 규격을 통해 데이터를 송수신할 수 있다. 데이터를 송수신하기 위한 약속된 규격의 예로서 2.5인치, 1.8인치, MO-297, MO-300, M.2 및 EDSFF(Enterprise and Data Center SSD Form Factor) 등과 같은 다양한 폼-팩터(Form-Factor)와 USB(Universal Serial Bus), MMC(Multi-Media Card), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), PCIE(Peripheral Component Interconnect Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜이 있다. 실시예에 따라, 호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다.
데이터를 송수신하기 위한 규격 중 하나인 IDE(Integrated Drive Electronics) 혹은 ATA(Advanced Technology Attachment)는 40개의 선이 병렬로 연결된 케이블을 사용하여 호스트(102)와 메모리 시스템(110) 간의 데이터의 송수신을 지원할 수 있다. 하나의 호스트(102)에 다수의 메모리 시스템(110)이 연결되는 경우, 다수의 메모리 시스템(110)이 연결되는 위치 혹은 딥스위치를 이용하여 다수의 메모리 시스템(110)을 마스터 혹은 슬레이브로 구분할 수 있다. 마스터로 설정된 메모리 시스템(110)이 주된 메모리 장치로 사용될 수 있다. IDE(ATA)는 Fast-ATA, ATAPI, EIDE(Enhanced IDE) 방식 등으로 발전해왔다.
SATA(Seral Advanced Technology Attachment, S-ATA)는 IDE(Integrated Drive Electronics) 장치의 접속 규격인 병렬 데이터 송수신 방식의 각종 ATA 규격과 호환성을 갖는 직렬 데이터 송수신 방식으로서, 연결선은 병렬 신호 40개에서 직렬 신호 6개로 줄일 수 있다. SATA는 IDE보다 데이터 송수신 속도가 빠르고, 데이터 송수신에 사용되는 호스트(102) 내 자원을 소모가 적은 이유로 널리 사용되어 왔다. SATA는 호스트(102)에 포함된 하나의 송수신 장치에 최대 30개의 외부 장치를 연결할 수 있다. 또한, SATA는 데이터 통신이 실행 중에도 외부 장치를 탈착할 수 있는 핫 플러깅을 지원하기 때문에, 호스트(102)에 전원이 공급된 상태에서도 유니버설 시리얼 버스(USB)처럼 메모리 시스템(110)을 추가 장치로서 연결하거나 분리할 수 있다. 예를 들어, eSATA 포트가 있는 장치의 경우, 호스트(102)에 메모리 시스템(110)을 외장 하드처럼 자유롭게 탈착할 수 있다.
SCSI(Small Computer System Interface)는 컴퓨터, 서버 등과 주변 장치를 연결하는 데 사용하는 직렬 연결 방식으로서, IDE 및 SATA와 같은 인터페이스에 비하여 전송 속도가 빠른 장점이 있다. SCSI에서는 호스트(102)와 다수의 주변 장치(예, 메모리 시스템(110)이 직렬로 연결되지만, 호스트(102)와 각 주변 장치 간 데이터 송수신은 병렬 데이터 송수신 방식으로 구현될 수 있다. SCSI에서는 호스트(102)에 메모리 시스템(110)과 같은 장치의 연결과 분리가 쉽다. SCSI는 호스트(102)에 포함된 하나의 송수신 장치에 15개의 외부 장치가 연결되는 것을 지원할 수 있다.
SAS(Serial Attached SCSI)는 SCSI의 직렬 데이터 송수신 버전으로 이해할 수 있다. SAS는 호스트(102)와 다수의 주변 장치가 직렬로 연결될 뿐만 아니라, 호스트(102)와 각 주변 장치간 데이터 송수신도 직렬 데이터 송수신 방식으로 수행될 수 있다. SAS는 많은 연결선을 포함하는 넓은 병렬 케이블 대신 시리얼 케이블로 연결하여 장비 관리가 쉽고 신뢰성과 성능이 개선될 수 있다. SAS는 호스트(102)에 포함된 하나의 송수신 장치에 최대 8개의 외부 장치를 연결할 수 있다.
NVMe(Non-volatile memory express)는 비휘발성 메모리 시스템(110)을 탑재한 서버, 컴퓨팅 장치 등의 호스트(102)의 성능 향상과 설계 유연성을 높일 수 있도록 만든 PCIe(Peripheral Component Interconnect Express, PCI Express) 인터페이스 기반의 프로토콜을 가리킬 수 있다. 여기서, PCIe는 컴퓨팅 장치와 같은 호스트(102)와 컴퓨팅 장치와 연결되는 주변 장치와 같은 메모리 시스템(110)을 연결하기 위한 슬롯(slot) 혹은 특정 케이블을 이용하여, 다수의 핀(예, 18개, 32개, 49개, 82개 등)과 적어도 하나의 배선(예, x1, x4, x8, x16 등)을 통해 배선 당 초당 수백 MB이상(예, 250 MB/s, 500 MB/s, 984.6250 MB/s, 1969 MB/s 등)의 대역폭을 가질 수 있다. 이를 통해, PCIe는 초당 수십~수백 Gbit의 대역폭을 구현할 수 있다. NVMe는 하드 디스크보다 더 빠른 속도로 동작하는 SSD와 같은 비휘발성 메모리 시스템(110)의 속도를 지원할 수 있다.
실시예에 따라, 호스트(102)와 메모리 시스템(110)은 범용 직렬 버스(Universal Serial Bus, USB)를 통해 연결될 수 있다. 범용 직렬 버스(USB)는 키보드, 마우스, 조이스틱, 프린터, 스캐너, 저장 장치, 모뎀, 화상 회의 카메라 등과 같은 주변 장치에 대한 경제적인 표준 연결을 보장하는 확장성이 뛰어난 핫 플러그형 플러그 앤 플레이 직렬 인터페이스를 포함할 수 있다. 호스트(102)에 포함된 하나의 송수신 장치에 메모리 시스템(110)과 같은 다수의 주변 장치를 연결할 수 있다.
리드 리트라이 컨트롤러(230)는, 프로세서(134)의 제어에 따라 리드 리트라이 동작을 제어할 수 있다. 여기서, 리드 리트라이 동작은, 호스트(102)로부터의 리드 요청에 따라 시작 리드 전압을 이용하여 메모리 장치(150)로부터 리드한 데이터에 에러가 발생하는 경우, 시작 리드 전압과는 다른 레벨의 리드 전압을 적어도 한 개 이상 사용하여 다시 메모리 장치(150)로부터 데이터를 리드하는 동작일 수 있다. 또한, 리드 전압은 메모리 셀에 저장된 데이터를 식별하기 위해 인가되는 전압일 수 있다. 또한, 리드 리트라이 컨트롤러(230)는, 다수의 리드 전압에 대한 정보가 포함된 리드 테이블(READ TABLE)을 포함할 수 있으며, 리드 테이블(READ TABLE에 포함된 다수의 리드 전압을 정해진 순서대로 이용하여 리드 리트라이 동작을 제어할 수 있다. 이때, 리드 리트라이 컨트롤러(230)에서 리드 테이블(READ TABLE)에 포함된 다수의 리드 전압 및 그 중 어떤 것을 시작 리드 전압으로 이용하고 어떤 순서대로 이용할지 등에 대한 정보는, 메모리 장치(150)의 생산 과정에서 테스트를 통해 미리 결정될 수 있다. 도 2 및 도 3을 참조하는 리드 리트라이 동작에 대한 설명은 상기에서 개시한 바 있으며, 여기에서는 구체적으로 설명하지 않도록 하겠다.
리드 리트라이 컨트롤러(230)에서 다수의 리드 전압을 모두 사용하여 반복적으로 리드 동작을 수행한 이후에도 리드된 데이터에 에러가 발생할 수 있다. 이와 같은 경우, 하기에 설명되는 ECC(138)를 통해 에러를 정정하여 복구하는 동작을 수행할 수 있다.
ECC(138)는, 메모리 장치(150)에서 처리되는 데이터의 에러 비트를 정정하며, ECC 인코더와 ECC 디코더를 포함할 수 있다. 여기서, ECC 인코더(ECC encoder)는 메모리 장치(150)에 프로그램될 데이터를 에러 정정 인코딩(error correction encoding)하여, 패리티(parity) 비트가 부가된 데이터를 생성하며, 패리티 비트가 부가된 데이터는, 메모리 장치(150)에 저장될 수 있다. 그리고, ECC 디코더(ECC decoder)는, 메모리 장치(150)에 저장된 데이터를 리드할 경우, 메모리 장치(150)로부터 리드된 데이터에 포함되는 에러를 검출 및 정정한다. 다시 말해, ECC(138)는, 메모리 장치(150)로부터 리드한 데이터를 에러 정정 디코딩(error correction decoding)한 후, 에러 정정 디코딩의 성공 여부를 판단하고, 판단 결과에 따라 지시 신호, 예컨대 에러 정정 성공(success)/실패(fail) 신호를 출력하며, ECC 인코딩 과정에서 생성된 패리티(parity) 비트를 사용하여 리드된 데이터의 에러 비트를 정정할 수 있다. 이때, ECC(138)는, 에러 비트 개수가 정정 가능한 에러 비트 한계치 이상 발생하면, 에러 비트를 정정할 수 없으며, 에러 비트를 정정하지 못함에 상응하는 에러 정정 실패 신호를 출력할 수 있다.
여기서, ECC(138)는, LDPC(low density parity check) 코드(code), BCH(Bose, Chaudhri, Hocquenghem) 코드, 터보 코드(turbo code), 리드-솔로몬 코드(Reed-Solomon code), 컨벌루션 코드(convolution code), RSC(recursive systematic code), TCM(trellis-coded modulation), BCM(Block coded modulation) 등의 코디드 모듈레이션(coded modulation)을 사용하여 에러 정정을 수행할 수 있으며, 이에 한정되는 것은 아니다. 또한, ECC(138)는 오류 정정을 위한 회로, 모듈, 시스템, 또는 장치를 모두 포함할 수 있다.
PMU(140)는, 컨트롤러(130)의 파워, 즉 컨트롤러(130)에 포함된 구성 요소들의 파워를 제공 및 관리할 수 있다. 또한, PMU(140)는 메모리 시스템(110)에 외부에서 인가되는 전원(예, 컨트롤러(130)에 공급되는 전압)을 추적 감시하고, 외부에서 공급되는 전압 레벨이 불안정한 경우, 메모리 시스템(110)이 긴급하게 현재 상태를 백업할 수 있도록 트리거 신호를 생성할 수 있다. 실시예에 따라, PMU(140)는 긴급 상황에서 사용될 수 있는 전력을 축적할 수 있는 예비 전원 장치(Auxiliary Power Supply)를 포함할 수 있다.
메모리 인터페이스(142)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하기 위해, 컨트롤러(130)와 메모리 장치(150) 간의 신호, 데이터를 송수신할 수 있다. 메모리 장치(150)가 플래시 메모리(예, NAND 플래시 메모리)일 경우, 메모리 인터페이스(142)는 NAND 플래시 컨트롤러(NAND Flash Controller, NFC)를 포함할 수 있다. 실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 지원하며, 메모리 장치(150)와 데이터를 주고받는 영역으로 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구현되거나 구동될 수 있다. 실시예에 따라, 메모리 인터페이스(142)는 메모리 장치(150) 간 데이터 입출력을 위해 Open NAND Flash Interface(ONFi), 토글(toggle) 모드 등을 지원할 수 있다. 예를 들면, ONFi는 8-비트 혹은 16-비트의 단위 데이터에 대한 양방향(bidirectional) 송수신을 지원할 수 있는 신호선을 포함하는 데이터 경로(예, 채널, 웨이 등)를 사용할 수 있다. 컨트롤러(130)와 메모리 장치(150) 사이의 데이터 통신은 비동기식 SDR(Asynchronous Single Data Rate), 동기식 DDR(Synchronous Double Data Rate) 및 토글 DDR(Toggle Double Data Rate) 중 적어도 하나에 대한 인터페이스(interface)를 지원하는 장치를 통해 수행될 수 있다.
미디어 스캔 컨트롤러(200)는, 프로세서(134)의 제어에 따라 설정된 주기마다 호스트(102)로부터의 리드 요청 없이 미디어 스캔 동작을 제어할 수 있다. 여기서, 미디어 스캔 동작은, 오랫동안 액세스되지 않은 메모리 영역에서 정정 불가능할 정도의 에러가 발생하는 것을 방지하기 위해 호스트(102)로부터의 리드 요청과 상관없이 데이터를 리드하여 에러 발생 여부를 확인하는 동작을 의미할 수 있다. 이때, 미디어 스캔 컨트롤러(200)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 예정된 개수의 대상 워드라인에 저장된 데이터를 리드하여 에러 발생여부를 확인하는 동작을 미디어 스캔 동작으로써 수행할 수 있다. 만약, 미디어 스캔 동작에서 정해진 기준 이상의 에러가 발생하는 경우, 미디어 스캔 컨트롤러(200)는, 에러가 발생한 해당 워드라인 또는 해당 워드라인이 포함된 메모리 블록의 데이터를 다른 워드라인 또는 다른 메모리 블록으로 이동시켜주는 동작을 수행할 것을 프로세서(134)에 요청할 수 있다.
또한, 미디어 스캔 컨트롤러(200)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL), 및 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중 기준횟수를 초과하는 카운팅 횟수(TG_CNT<1:N>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 제3워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다. 즉, 미디어 스캔 컨트롤러(200)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 제2워드라인(SAM_WL) 및 제3워드라인을 나머지 다른 워드라인보다 더 우선적으로 미디어 스캔 동작을 위한 대상 워드라인으로 선택할 수 있다.
여기서, 설정된 주기는, 프로세서(134)에 의해 정의될 수 있으며, 미디어 스캔 컨트롤러(200)는, 프로세서(134)의 제어에 따라 설정된 주기마다 미디어 스캔 동작을 수행할 수 있다. 프로세서(134)는, 메모리 시스템(110)에 대한 다양한 파라미터(parameter)에 따라 설정된 주기를 가변할 수 있다. 예컨대, 프로세서(134)는, 동작 온도, 메모리 장치(150)에 대한 프로그램/이레이즈 사이클, 프로그램 경과 시간, 가용용량 등을 포함하는 다양한 파라미터에 따라 설정된 주기를 가변할 수 있다.
또한, 미디어 스캔 컨트롤러(200)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 각각의 물리적인 위치, 프로그램/이레이즈 사이클, 리드 횟수에 의해 결정되는 샘플링 조건에 따라 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 적어도 하나 이상의 제2워드라인(SAM_WL)을 선택하여 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 실시예에 따라, 미디어 스캔 컨트롤러(200)는, 다수의 메모리 블록(152, 154, 156) 각각에서 특정 물리적 위치에 있거나 또는 정해진 기준 이상의 프로그램/이레이즈 사이클 또는 정해진 기준 이상의 리드 횟수를 갖는 적어도 하나 이상의 워드라인을 제2워드라인(SAM_WL)로 선택하여 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다.
또한, 미디어 스캔 컨트롤러(200)는, 리트라이 테이블(220)에 저장된 제1워드라인(TG_WL<1:N>)의 개수, 및 제1워드라인(TG_WL<1:N>) 중 기준횟수를 초과하는 카운팅 횟수(TG_CNT<1:N>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 제3워드라인의 개수 각각을 예정된 개수와 비교한 결과에 따라 다음과 같이 동작할 수 있다.
먼저, 제1워드라인(TG_WL<1:N>) 및 제3워드라인 각각의 개수가 예정된 개수 이상인 경우, 미디어 스캔 컨트롤러(200)는, 제3워드라인 중 상대적으로 높은 카운팅 횟수를 갖는 예정된 개수의 워드라인을 선택하여 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 즉, 제3워드라인 중 예정된 개수의 워드라인만 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다.
또한, 제1워드라인(TG_WL<1:N>)의 개수가 예정된 개수 이상이고 제3워드라인의 개수가 예정된 개수 미만인 경우, 미디어 스캔 컨트롤러(200)는, 제1워드라인(TG_WL<1:N>) 중 제3워드라인을 제외한 나머지 워드라인에서 제2워드라인(SAM_WL)과 겹치지 않도록 랜덤하게 선택한 제4워드라인을 제3워드라인 및 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 이때, 미디어 스캔 컨트롤러(200)는, 제3워드라인의 개수와 제4워드라인의 개수를 합한 개수가 예정된 개수가 되도록, 제4워드라인의 선택 개수를 조절할 수 있다.
또한, 제1워드라인(TG_WL<1:N>)의 개수가 예정된 개수 미만인 경우, 미디어 스캔 컨트롤러(200)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 제1워드라인(TG_WL<1:N>)을 제외한 나머지 워드라인에서 제2워드라인(SAM_WL)과 겹치지 않도록 랜덤하게 선택한 제5워드라인과 제1워드라인(TG_WL<1:N>) 중 제2워드라인(SAM_WL)과 겹치지 않는 워드라인 및 제2워드라인(SAM_WL)과 함께 미디어 스캔 동작을 위한 대상 워드라인에 포함시킬 수 있다. 이때, 미디어 스캔 컨트롤러(200)는, 제1워드라인(TG_WL<1:N>) 중 제2워드라인(SAM_WL)과 겹치지 않는 워드라인의 개수와 제5워드라인의 개수를 합한 개수가 예정된 개수가 되도록, 제5워드라인의 선택 개수를 조절할 수 있다.
참고로, 미디어 스캔 컨트롤러(200)는, 설정된 주기마다 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 몇 개의 워드라인을 제2워드라인(SAM_WL)로 선택하는지에 따라 예정된 개수를 가변할 수 있다. 예컨대, 첫 번째 설정된 주기에서 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 40개의 워드라인을 제2워드라인(SAM_WL)로 선택하는 경우 예정된 개수는 10개가 되고, 두 번째 설정된 주기에서 K개의 워드라인(WL1, WL2, WL3, … , WLK)의 워드라인 중 35개의 워드라인을 제2워드라인(SAM_WL)로 선택하는 경우 예정된 개수는 15개가 될 수 있다.
그리고, 미디어 스캔 컨트롤러(200)는, 하기에 설명되는 메모리(144)에서 리트라이 테이블(220)을 관리할 수 있다. 프로세서(134)는, 예정된 시점마다 메모리 (144)에 저장된 리트라이 테이블(220)을 비휘발성 메모리 장치(150)에 백업할 수 있다.
메모리(144)는, 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장한다. 보다 구체적으로 설명하면, 메모리(144)는, 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어, 예컨대 컨트롤러(130)가, 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장하며, 이를 위해 컨트롤러(130)가, 메모리 장치(150)의 리드, 프로그램, 이레이즈(erase) 등의 동작을 제어할 경우, 이러한 동작을 메모리 시스템(110), 즉 컨트롤러(130)와 메모리 장치(150) 간이 수행하기 위해 필요한 데이터를 저장한다.
여기서, 메모리(144)는, 휘발성 메모리로 구현될 수 있으며, 예컨대 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 아울러, 메모리(144)는, 도 1에서 도시한 바와 같이, 컨트롤러(130)의 내부에 존재하거나, 또는 컨트롤러(130)의 외부에 존재할 수 있으며, 이때 메모리 인터페이스를 통해 컨트롤러(130)로부터 데이터가 입출력되는 외부 휘발성 메모리로 구현될 수도 있다.
또한, 메모리(144)는, 전술한 바와 같이, 호스트(102)와 메모리 장치(150) 간 데이터 프로그램 및 리드 등의 동작을 수행하기 위해 필요한 데이터와, 데이터 프로그램 및 리드 등의 동작 수행 시의 데이터, 및 미디어 스캔 컨트롤러(200)에서 생성된 리트라이 테이블(220)을 저장할 수 있다. 이러한 데이터 저장을 위해, 프로그램 메모리, 데이터 메모리, 프로그램 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함한다.
프로세서(134)는, 메모리 시스템(110)의 전체적인 동작을 제어하며, 특히 호스트(102)로부터의 프로그램 요청 또는 리드 요청에 응답하여, 메모리 장치(150)에 대한 프로그램 동작 또는 리드 동작을 제어할 수 있다. 또한, 프로세서(134)는, 전술한 설명과 같이 리드 리트라이 컨트롤러(230)를 통해 리드 리트라이 동작을 제어할 수 있다. 또한, 프로세서(134)는, 전술한 설명과 같이 미디어 스캔 컨트롤러(200)를 통해 미디어 스캔 동작을 제어할 수 있다. 여기서, 프로세서(134)는, 메모리 시스템(110)의 제반 동작을 제어하기 위해 플래시 변환 계층(FTL: Flash Translation Layer, 이하 'FTL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 구동한다. 또한, 프로세서(134)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
일 예로, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 호스트(102)로부터 요청된 동작을 메모리 장치(150)에서 수행, 다시 말해 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작을, 메모리 장치(150)와 수행한다. 여기서, 컨트롤러(130)는, 호스트(102)로부터 수신된 커맨드에 해당하는 커맨드 동작으로 포그라운드(foreground) 동작을 수행, 예컨대 프로그램 커맨드에 해당하는 프로그램 동작, 리드 커맨드에 해당하는 리드 동작, 이레이즈 커맨드(erase command)에 해당하는 이레이즈 동작 등을 수행할 수 있다.
그리고, 컨트롤러(130)는, 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해, 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 여기서, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)의 메모리 블록들(152,154,156)에서 임의의 메모리 블록에 저장된 데이터를 다른 임의의 메모리 블록으로 카피(copy)하여 처리하는 동작, 일 예로 가비지 컬렉션(garbage collection) 동작과 리드 리클래임 동작(read reclaim) 동작 및 미디어 스캔(media scan)을 포함할 수 있다. 또한, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)의 메모리 블록들(152,154,156) 간 또는 메모리 블록들(152,154,156)에 저장된 데이터 간을 스왑(swap)하여 처리하는 동작, 일 예로 웨어 레벨링(WL: Wear Leveling) 동작을 포함할 수 있다. 또한, 메모리 장치(150)에 대한 백그라운드 동작은, 컨트롤러(130)에 저장된 맵 데이터를 메모리 장치(150)의 메모리 블록들(152,154,156)로 저장하는 동작, 일 예로 맵 플러시(map flush) 동작을 포함할 수 있다. 또한, 메모리 장치(150)에 대한 백그라운드 동작은, 메모리 장치(150)에 대한 배드 관리(bad management)하는 동작, 일 예로 메모리 장치(150)에 포함된 다수의 메모리 블록들(152,154,156)에서 배드 블록을 확인하여 처리하는 배드 블록 관리(bad block management) 동작을 포함할 수 있다.
도 4 내지 도 11은 본 발명의 실시예에 따른 메모리 시스템에서 리트라이 테이블의 관리동작을 설명하기 위해 도시한 도면이다.
도 4 내지 도 10을 참조하면, 전술한 도 1에서 설명된 리트라이 테이블(220)에는 최대 N개의 제1워드라인(TG_WL<1:N>)을 저장하기 위한 워드라인 저장공간(221), 및 그에 대응하는 최대 N개의 리드 리트라이 카운팅 횟수(TG_CNT<1:N>)를 저장하기 위한 카운팅 저장공간(222)이 포함되는 것을 알 수 있다. 하기에서는 N이 5인 것을 가정하여 설명하도록 하겠다.
도 1 및 도 4를 참조하면, 리프레시 테이블(24)에 포함된 5개의 공간(TG_WL<1:5>, TG_CNT<1:5>) 중 4개의 공간(TG_WL<1:4>, TG_CNT<1:4>)에 워드라인 값인 'WL3, WLM+7, WL2M+4, WL20'과 그에 대응하는 카운팅 횟수 '35, 20, 100, 1'가 저장되며, 1개의 공간(TG_WL<5>, TG_CNT<5>)은 빈공간인 것을 알 수 있다. 참고로, 워드라인 값 'WL3'은 제1메모리 블록(152)의 3번째 워드라인이고, 워드라인 값 'WLM+7'은 제2메모리 블록(154)의 7번째 워드라인이며, 워드라인 값 'WL2M+4'은 제3메모리 블록(156)의 4번째 워드라인이고, 워드라인 값 'WL20'은 제1메모리 블록(152)의 20번째 워드라인인 것을 알 수 있다.
도 1 및 도 5을 참조하면, 컨트롤러(130)는, K번째 워드라인(WLK), 즉, 제3메모리 블록(156)의 M번째 워드라인(WL3M)에 대해 수행한 리드 리트라이 동작이 성공하는 것에 응답하여 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>) 중 워드라인 값이 저장된 4개의 공간(TG_WL<1:4>)에 'WLK(WL3M)'인 워드라인 값이 저장되어 있는지 확인할 수 있다.
확인결과, 컨트롤러(130)는, 'WLK(WL3M)'인 워드라인 값이 리트라이 테이블(220)에 저장되지 않은 워드라인 값임을 확인할 수 있다.
또한, 컨트롤러(130)는, 리트라이 테이블(220)에 빈공간(TG_WL<5>, TG_CNT<5>)이 존재하는 것을 확인할 수 있다.
따라서, 컨트롤러(130)는, 리트라이 테이블(220)의 빈공간(TG_WL<5>, TG_CNT<5>)에 'WLK(WL3M)'을 갖는 워드라인 값과 함께 카운팅 횟수로 설정된 횟수인 '1'값을 저장할 수 있다. 즉, 리트라이 테이블(220)에 포함된 빈 워드라인 저장공간(TG_WL<5>)에 'WLK(WL3M)'을 갖는 워드라인 값을 저장하고, 그에 대응하는 빈 카운팅 저장공간(TG_CNT<5>)에 '1'값으로 결정된 카운팅 횟수를 함께 저장할 수 있다.
도 1 및 도 6을 참조하면, 컨트롤러(130)는, 컨트롤러(130)는, 제2메모리 블록(154)의 10번째 워드라인(WLM+10)에 대해 수행한 리드 리트라이 동작이 성공하는 것에 응답하여 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>)에 모두 워드라인 값이 저장되어 있으므로 빈공간이 존재하지 않음을 확인하고, 5개의 워드라인 저장공간(TG_WL<1:5>) 각각에 'WLM+10'인 워드라인 값이 존재하는지 확인할 수 있다.
확인결과, 컨트롤러(130)는, 'WLM+10'인 워드라인이 리트라이 테이블(220)에 저장되지 않은 워드라인 값임을 확인할 수 있다.
따라서, 컨트롤러(130)는, 리트라이 테이블(220)에 포함된 5개의 카운팅 저장공간(TG_CNT<1:5>)에 '1'인 카운팅 횟수가 존재하는지 확인할 수 있다.
확인결과, 컨트롤러(130)는, 리트라이 테이블(220)에 포함된 두 개 카운팅 저장공간(TG_CNT<4:5>) '1'인 카운팅 횟수가 저장된 것을 확인할 수 있다.
따라서, 컨트롤러(130)는, '1'인 카운팅 횟수 저장된 두 개의 카운팅 저장공간(TG_CNT<4:5>) 중 어느 하나의 공간에 대응하는 워드라인 저장공간(TG_WL<4:5>)에 저장되어 있던 워드라인 값을 대체하여 'WLM+10'인 워드라인 값을 저장할 수 있다. 도면에서는 '1'인 카운팅 횟수 저장된 두 개의 워드라인 저장공간(TG_WL<4:5>) 중 'WL20'인 워드라인 값이 저장되어 있던 워드라인 저장공간(TG_WL<4>)을 선택하여 'WL20'인 워드라인 값 대신 'WLM+10'인 워드라인 값을 저장하는 동작이 예시된 것을 알 수 있다.
물론, 도면과 다르게 '1'인 카운팅 횟수가 저장된 두 개의 카운팅 저장공간(TG_CNT<4:5>) 중 'WLK(WL3M)'인 워드라인 값이 저장되어 있던 워드라인 저장공간(TG_WL<5>)을 선택하여 'WLK(WL3M)'인 워드라인 값 대신 'WLM+10'인 워드라인 값을 저장하는 동작이 수행되는 것도 얼마든지 가능하다.
도 1 및 도 7를 참조하면, 컨트롤러(130)는, 제1메모리 블록(152)의 3번째 워드라인(WL3)에 대해 수행한 리드 리트라이 동작이 성공하는 것에 응답하여 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>)에 모두 워드라인 값이 저장되어 있으므로 빈공간이 존재하지 않음을 확인하고, 5개의 워드라인 저장공간(TG_WL<1:5>) 각각에 'WL3'인 워드라인 값이 존재하는지 확인할 수 있다.
확인결과, 컨트롤러(130)는, 'WL3'인 워드라인이 리트라이 테이블(220)에 저장된 워드라인 값임을 확인할 수 있다.
따라서, 컨트롤러(130)는, 리트라이 테이블(220)에서 'WL3'인 워드라인 값에 대응하는 카운팅 횟수(TG_CNT<1>)이 '35'인 것을 확인하고, 이를 업-카운팅(+1)하여 워드라인의 리드 리트라이 카운팅 횟수(RETRY_CNT)를 '36'으로 결정한 뒤, 이를 리트라이 테이블(220)에 업데이트할 수 있다. 따라서, 리트라이 테이블(220)에서 'WL3'인 워드라인 값에 대응하는 카운팅 횟수(TG_CNT<1>)가 '35'에서 '36'으로 업데이트될 수 있다.
도 1 및 도 8을 참조하면, 컨트롤러(130)는, 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>)에 저장된 5개의 제1워드라인의 워드라인 값 'WL3, WLM+7, WL2M+4, WLM+10, WLK(WL3M)' 중 기준횟수(REF_CNT)인 '20'를 초과하는 카운팅 횟수(TG_CNT<1:5>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 워드라인 값 'WL3, WLM+7, WL2M+4'을 제3워드라인으로 구분할 수 있다. 이때, 제3워드라인의 개수가 3개로서 설정된 개수(SEL_NUM)인 2개를 초과하므로, 3개의 제3워드라인 중 상대적으로 큰 카운팅 횟수를 갖는 워드라인 값이 'WL3, WL2M+4'인 2개의 제3워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
따라서, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL)과 함께 리트라이 테이블(220)에 저장된 워드라인 값이 'WL3, WL2M+4'인 2개의 제3워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
참고로, 도면에서는 리트라이 테이블(220)에 저장된 5개의 제1워드라인 'WL3, WLM+7, WL2M+4, WLM+10, WLK(WL3M)'이 모두 제2워드라인(SAM_WL)과 겹치지 않는 것을 가정할 수 있다.
도 1 및 도 9를 참조하면, 컨트롤러(130)는, 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>)에 저장된 5개의 제1워드라인의 워드라인 값 'WL3, WLM+7, WL2M+4, WLM+10, WLK(WL3M)' 중 기준횟수(REF_CNT)인 '35'를 초과하는 카운팅 횟수(TG_CNT<1:5>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 워드라인 값 'WL3, WL2M+4'을 제3워드라인으로 구분할 수 있다. 이때, 제3워드라인의 개수가 2개로서 설정된 개수(SEL_NUM)인 3개 이하이므로, 리트라이 테이블(220)에 저장된 5개의 제1워드라인 중 2개의 제3워드라인을 제외한 나머지 3개의 제1워드라인의 워드라인 값 WLM+7, WLM+10, WLK(WL3M)' 중 1개를 제4워드라인으로 랜덤하게 선택할 수 있다. 도면에서는, 'WLM+10'인 워드라인 값이 제4워드라인으로 선택되는 것을 가정하였으며, 그에 따라, 워드라인 값이 'WL3, WL2M+4'인 2개의 제3워드라인과 워드라인 값이 'WLM+10'인 1개의 제4워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
따라서, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL)과 함께 리트라이 테이블(220)에 저장된 워드라인 값이 'WL3, WL2M+4'인 2개의 제3워드라인 및 워드라인 값이 'WLM+10'인 1개의 제4워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
참고로, 도면에서는 리트라이 테이블(220)에 저장된 5개의 제1워드라인 'WL3, WLM+7, WL2M+4, WLM+10, WLK(WL3M)'이 모두 제2워드라인(SAM_WL)과 겹치지 않는 것을 가정할 수 있다. 또한, 도 8에서 예시된 기준횟수(REF_CNT) 및 설정된 개수(SEL_NUM)와 도 9에서 예시된 기준횟수(REF_CNT) 및 설정된 개수(SEL_NUM)가 서로 다르게 예시된 것과 같이, 미디어 스캔 동작을 수행할 때마다 기준횟수(REF_CNT) 및 설정된 개수(SEL_NUM)의 값이 달라질 수 있다.
도 1 및 도 10을 참조하면, 컨트롤러(130)는, 제1메모리 블록(152)을 이레이즈할 수 있다(BLOCK1 ERASE). 따라서, 제1메모리 블록(152)에 포함된 M개의 워드라인(WL<1:M>)은 모두 무효 또는 삭제될 수 있다. 따라서, 컨트롤러(130)는, 리트라이 테이블(220)에 포함된 5개의 워드라인 저장공간(TG_WL<1:5>)에 저장된 5개의 제1워드라인의 워드라인 값 'WL3, WLM+7, WL2M+4, WLM+10, WLK(WL3M)'에서 제1메모리 블록(152)에 대응하는 워드라인 값 'WL3' 및 그에 대응하는 카운팅 값(TG_CNT<1>)을 리트라이 테이블(220)에서 삭제할 수 있다.
도 1 및 도 11을 참조하면, 전술한 도 5 내지 도 10과 다르게 리프레시 테이블(24)에 포함된 5개의 공간(TG_WL<1:5>, TG_CNT<1:5>) 중 2개의 공간(TG_WL<1:2>, TG_CNT<1:2>)에만 워드라인 값인 'WL3, WLM+7'과 그에 대응하는 카운팅 횟수 '35, 20'가 저장되고, 3개의 공간(TG_WL<3:5>, TG_CNT<3:5>)은 빈공간인 것을 알 수 있다.
이렇게, 제1워드라인의 개수가 2개로서 설정된 개수(SEL_NUM)인 3개 이하이므로, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 2개의 제1워드라인을 제외한 나머지 워드라인에서 제2워드라인(SAM_WL)과 겹치지 않도록 1개의 제5워드라인을 선택할 수 있다. 도면에서는 'WL2M+20'인 워드라인 값이 제5워드라인으로 선택되는 것을 가정하였으며, 워드라인 값이 'WL3, WLM+7'인 2개의 제1워드라인과 워드라인 값이 'WL2M+20'인 1개의 제5워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
따라서, 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL)과 함께 리트라이 테이블(220)에 저장된 워드라인 값이 'WL3, WL2M+4'인 2개의 제1워드라인 및 워드라인 값이 'WL2M+20'인 1개의 제5워드라인을 미디어 스캔 동작을 위한 대상 워드라인으로 먼저 선택할 수 있다.
참고로, 도면에서는 리트라이 테이블(220)에 저장된 2개의 제1워드라인 'WL3, WLM+7'이 모두 제2워드라인(SAM_WL)과 겹치지 않는 것을 가정할 수 있다.
도 12 및 도 13는 본 발명의 실시 예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 1 및 도 12를 참조하면, 컨트롤러(130)는, 호스트(102)로부터 리드 요청(READ REQUSET)이 수신되는 것에 응답하여 K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 선택 워드라인에 대해 리드 동작을 수행할 수 있다(S10).
리드 동작의 수행결과 기준치 미만의 에러가 발생하면, 선택 워드라인에 대해 수행된 리드 동작이 성공(READ SUCCESS)했다고 볼 수 있다(S20의 YES). 따라서, 컨트롤러(130)는, 선택 워드라인의 데이터를 호스트(102)로 출력할 수 있다(S30).
리드 동작의 수행결과 기준치 이상의 에러가 발생하면, 선택 워드라인에 대한 리드 동작이 실패한 것으로 판단할 수 있다(S20의 NO).
따라서, 컨트롤러(130)는, 리드 테이블(READ TABLE)을 참조하여 앞선 리드 동작에서 사용한 리드전압과는 다른 레벨을 갖는 리드전압을 사용하는 리드 리트라이 동작(READ RETRY)을 수행할 수 있다(S50, S40).
리드 리트라이 동작(READ RETRY)의 수행결과 기준치 미만의 에러가 발생하면, 선택 워드라인에 대해 수행된 리드 리트라이 동작(READ RETRY)이 성공(READ SUCCESS)했다고 볼 수 있다(S60의 YES). 따라서, 컨트롤러(130)는, 선택 워드라인에 대한 리트 리트라이 카운팅 횟수를 결정하고, 이를 통해 리트라이 테이블(220)을 관리할 수 있다(S80). 또한, 컨트롤러(130)는, 선택 워드라인의 데이터를 호스트(102)로 출력할 수 있다.
리드 리트라이 동작(READ RETRY)의 수행결과 기준치 이상의 에러가 발생하면, 선택 워드라인에 대한 리드 리트라이 동작(READ RETRY)이 실패한 것으로 판단할 수 있다(S60의 NO).
이와 같은 경우, 컨트롤러(130)는, 리드 테이블(READ TABLE)을 참조하여 앞선 리드 리트라이 동작에서 사용한 리드전압과는 다른 레벨을 갖는 리드전압을 사용하여 리드 리트라이 동작(READ RETRY)을 다시 수행할 수 있는지 확인할 수 있다(S70).
S70에서 리드 리트라이 동작(READ RETRY)을 다시 수행할 수 있는 경우(S70의 YES), 앞선 리드 동작에서 사용한 리드전압과는 다른 레벨을 갖는 리드전압을 사용하는 리드 리트라이 동작(READ RETRY)을 수행할 수 있다(S50, S40).
S70에서 리드 리트라이 동작(READ RETRY)을 다시 수행할 수 없는 경우(S70의 NO), 선택 워드라인에 대해 추가 에러 정정 동작을 수행하거나 또는 선택 워드라인을 배드(bad) 워드라인으로 처리할 수 있다(S90).
도 1 및 도 13을 참조하면, 컨트롤러(130)는, 설정된 주기에 도달하였는지 여부를 확인할 수 있다(L10).
설정된 주기에 도달하지 못한 경우(L10의 NO), 컨트롤러(130)는, 호스트(102)로부터의 요청을 처리할 수 있다(L20).
설정된 주기에 도달한 경우(L10의 YES), 컨트롤러(130)는, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인(SAM_WL)을 선택할 수 있다(L30).
L30에서 제2워드라인(SAM_WL)의 선택이 완료되면, 선택된 제2워드라인(SAM_WL)에 대해 미디어 스캔 동작을 수행할 수 있다(L40).
L40의 미디어 스캔 동작에서 기준치 이상의 에러가 발생하는 경우(L50의 NO), 제2워드라인(SAM_WL) 중 에러가 발생한 워드라인의 데이터를 다른 워드라인으로 복사하는 리클래임 동작을 수행할 수 있다(L60).
L40의 미디어 스캔 동작이 완료된 후, 리트라이 테이블(220)에 저장된 최대 N개의 제1워드라인(TG_WL<1:N>) 중 기준횟수를 초과하는 카운팅 횟수(TG_CNT<1:N>)를 갖되 제2워드라인(SAM_WL)과 겹치지 않는 제3워드라인을 선택할 수 있다. 이때, 선택된 제3워드라인의 개수가 설정된 개수(SEL_NUM) 이상인지 여부를 확인할 수 있다(L70).
L70에서 제3워드라인의 개수가 설정된 개수(SEL_NUM) 이상인 경우(L70의 YES), 제3워드라인 중 설정된 개수(SEL_NUM)의 워드라인에 대해 미디어 스캔 동작을 수행할 수 있다(L80).
L70에서 제3워드라인의 개수가 설정된 개수(SEL_NUM) 미만인 경우(L70의 NO), 추가 워드라인을 랜덤하게 선택하고, 제3워드라인과 추가 워드라인에 대해 미디어 스캔 동작을 수행할 수 있다(L90). 이때, 추가 워드라인은, 제1워드라인(TG_WL<1:N>)의 개수가 설정된 개수(SEL_NUM) 이상일 때, 제1워드라인(TG_WL<1:N>) 중 제3워드라인을 제외한 나머지 워드라인에서 랜덤하게 선택한 제4워드라인을 포함할 수 있다. 또한, 추가 워드라인은, 제1워드라인(TG_WL<1:N>)의 개수가 설정된 개수(SEL_NUM) 미만일 때, K개의 워드라인(WL1, WL2, WL3, … , WLK) 중 제1워드라인(TG_WL<1:N>)을 제외한 나머지 워드라인에서 랜덤하게 선택한 제5워드라인을 포함할 수 있다.
L80 또는 L90의 미디어 스캔 동작에서 기준치 이상의 에러가 발생하는 경우(L100의 NO), 제3워드라인 중 에러가 발생한 워드라인의 데이터를 다른 워드라인으로 복사하는 리클래임 동작 또는 제3워드라인 및 제4워드라인 중 에러가 발생한 워드라인의 데이터를 다른 워드라인으로 복사하는 리클래임 동작 또는 제1워드라인 및 제5워드라인 중 에러가 발생한 워드라인의 데이터를 다른 워드라인으로 복사하는 리클래임 동작을 수행할 수 있다(L110).
L80 또는 L90의 미디어 스캔 동작이 완료된 후, 컨트롤러(130)는, 다시 설정된 주기에 도달하였는지 여부를 확인할 수 있다(L10).
이상에서 설명한 본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진자에게 있어 명백할 것이다.

Claims (17)

  1. K개의 워드라인(wordline)을 포함하는 비휘발성 메모리 장치; 및
    K개의 워드라인 각각에 대해 수행된 리드 리트라이(retry) 동작의 횟수를 카운팅한 횟수가 상대적으로 높은 최대 N개의 워드라인을 선택하여 제1워드라인으로서 관리하며, 설정된 주기마다 호스트로부터의 리드 요청 없이 K개의 워드라인 중 대상 워드라인의 에러 발생 여부를 확인하기 위한 미디어 스캔(media scan) 동작을 수행하고, 상기 설정된 주기마다 샘플링 조건을 만족하는 제2워드라인 및 상기 제1워드라인 중 상기 카운팅한 횟수가 기준횟수를 초과하는 제3워드라인을 상기 대상 워드라인으로 선택하는 컨트롤러
    를 포함하며, N은 1이상 K이하의 자연수이고, K는 2이상의 자연수인 메모리 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러는,
    상기 제3워드라인의 개수가 예정된 개수 이상인 경우, 상기 제3워드라인 중 상대적으로 높은 상기 카운팅한 횟수를 갖는 상기 예정된 개수의 워드라인 및 상기 제2워드라인을 상기 대상 워드라인으로 선택하는 메모리 시스템.
  3. 제2항에 있어서,
    상기 컨트롤러는,
    상기 제1워드라인의 개수가 상기 예정된 개수 이상이고 상기 제3워드라인의 개수가 상기 예정된 개수 미만인 경우, 상기 제1워드라인 중 상기 제3워드라인을 제외한 나머지 워드라인에서 상기 제2워드라인과 겹치지 않도록 랜덤(random)하게 선택한 제4워드라인과 상기 제3워드라인 및 상기 제2워드라인을 상기 대상 워드라인으로 선택하며,
    상기 제3워드라인의 개수와 상기 제4워드라인의 개수를 합한 개수가 상기 예정된 개수가 되도록 상기 제4워드라인의 선택 개수를 조절하는 메모리 시스템.
  4. 제3항에 있어서,
    상기 컨트롤러는,
    상기 제1워드라인의 개수가 상기 예정된 개수 미만인 경우, K개의 워드라인 중 상기 제1워드라인을 제외한 나머지 워드라인에서 상기 제2워드라인과 겹치지 않도록 랜덤하게 선택한 제5워드라인과 상기 제1워드라인 중 상기 제2워드라인과 겹치지 않는 워드라인 및 상기 제2워드라인을 상기 대상 워드라인으로 선택하며,
    상기 제1워드라인 중 상기 제2워드라인과 겹치지 않는 워드라인의 개수와 상기 제5워드라인의 개수를 합한 개수가 상기 예정된 개수가 되도록 상기 제5워드라인의 선택 개수를 조절하는 메모리 시스템.
  5. 제1항에 있어서,
    상기 컨트롤러는,
    상기 제1워드라인의 정보가 저장된 리트라이 테이블을 생성하여 관리하며, K개의 워드라인 중 앞선 리드 동작이 실패한 제6워드라인에 대해 수행된 상기 리드 리트라이 동작이 성공할 때, 상기 리트라이 테이블에 저장된 상기 제1워드라인의 정보에 기초하여 상기 제6워드라인의 상기 카운팅한 횟수를 결정하는 메모리 시스템.
  6. 제5항에 있어서,
    상기 컨트롤러는,
    상기 제6워드라인에 대한 상기 리드 리트라이 동작이 성공할 때,
    상기 제6워드라인이 상기 리트라이 테이블에 저장된 상기 제1워드라인 중 어느 하나와 동일한 워드라인인 경우, 상기 제1워드라인 중 상기 제6워드라인과 동일한 워드라인의 상기 카운팅한 횟수를 업-카운팅하며,
    상기 제6워드라인이 상기 리트라이 테이블에 저장된 상기 제1워드라인과 동일하지 않은 워드라인인 경우, 상기 제6워드라인의 상기 카운팅한 횟수를 상기 기준횟수보다 작은 설정된 횟수로 결정하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 컨트롤러는, 상기 제6워드라인의 상기 카운팅한 횟수를 상기 설정된 횟수로 결정한 뒤,
    상기 리트라이 테이블에 빈(empty)공간이 존재하는 경우, 빈공간에 상기 제6워드라인을 상기 제1워드라인 중 하나로서 저장하고,
    상기 리트라이 테이블에 빈공간이 존재하지 않고 상기 제1워드라인 중 상기 카운팅한 횟수가 상기 설정된 횟수인 워드라인이 적어도 하나 이상 포함된 경우, 상기 카운팅한 횟수가 상기 설정된 횟수인 어느 하나의 워드라인을 대체하여 상기 제6워드라인을 상기 제1워드라인 중 하나로서 상기 리트라이 테이블에 저장하며,
    상기 리트라이 테이블에 빈공간이 존재하지 않고 상기 제1워드라인 중 가장 작은 상기 카운팅한 횟수가 상기 설정된 횟수를 초과하는 경우, 상기 제6워드라인을 상기 리트라이 테이블에 저장하지 않는 메모리 시스템.
  8. 제5항에 있어서,
    상기 컨트롤러는,
    상기 제1워드라인 중 내부의 메모리 셀들에 저장된 데이터가 무효(invalid) 또는 이레이즈(erase)된 워드라인을 상기 리트라이 테이블에서 삭제하는 메모리 시스템.
  9. 제5항에 있어서,
    상기 컨트롤러는,
    내부의 휘발성 메모리 장치에 상기 리트라이 테이블을 저장하고, 예정된 시점마다 상기 휘발성 메모리 장치에 저장된 상기 리트라이 테이블을 상기 비휘발성 메모리 장치에 백업하는 메모리 시스템.
  10. K개의 워드라인 각각에 대해 수행된 리드 리트라이(retry) 동작의 횟수를 카운팅하는 단계;
    상기 카운팅하는 단계에서 카운팅한 횟수가 상대적으로 높은 최대 N개의 워드라인을 선택하여 제1워드라인으로서 리트라이 테이블에 저장하는 단계;
    설정된 주기마다 K개의 워드라인 중 샘플링 조건을 만족하는 적어도 하나 이상의 제2워드라인에 대해 호스트로부터의 리드 요청 없이 에러 발생 여부를 확인하기 위한 미디어 스캔(media scan) 동작을 수행하는 제1스캔단계; 및
    상기 설정된 주기마다 상기 제1스캔단계 이후, 상기 제1워드라인 중 상기 카운팅한 횟수가 기준횟수를 초과하는 제3워드라인에 대해 상기 미디어 스캔 동작을 수행하는 제2스캔단계를 포함하며, N은 1이상 K이하의 자연수이고, K는 2이상의 자연수인 메모리 시스템의 동작방법.
  11. 제10항에 있어서,
    상기 제2스캔단계는,
    상기 제3워드라인의 개수가 예정된 개수 이상인 경우, 상기 제3워드라인 중 상대적으로 높은 상기 카운팅한 횟수를 갖는 상기 예정된 개수의 워드라인에 대해 상기 미디어 스캔 동작을 수행하는 메모리 시스템의 동작방법.
  12. 제11항에 있어서,
    상기 제2스캔단계는,
    상기 제1워드라인의 개수가 상기 예정된 개수 이상이고 상기 제3워드라인의 개수가 상기 예정된 개수 미만인 경우, 상기 제1워드라인 중 상기 제3워드라인을 제외한 나머지 워드라인에서 상기 제2워드라인과 겹치지 않도록 랜덤(random)하게 선택한 제4워드라인 및 상기 제3워드라인에 대해 상기 미디어 스캔 동작을 수행하며,
    상기 제3워드라인의 개수와 상기 제4워드라인의 개수를 합한 개수가 상기 예정된 개수가 되도록 상기 제4워드라인의 선택 개수를 조절하는 메모리 시스템의 동작방법.
  13. 제12항에 있어서,
    상기 제2스캔단계는,
    상기 제1워드라인의 개수가 상기 예정된 개수 미만인 경우, K개의 워드라인 중 상기 제1워드라인을 제외한 나머지 워드라인에서 상기 제2워드라인과 겹치지 않도록 랜덤하게 선택한 제5워드라인 및 상기 제1워드라인 중 상기 제2워드라인과 겹치지 않는 워드라인에 대해 상기 미디어 스캔 동작을 수행하며,
    상기 제1워드라인 중 상기 제2워드라인과 겹치지 않는 워드라인의 개수와 상기 제5워드라인의 개수를 합한 개수가 상기 예정된 개수가 되도록 상기 제5워드라인의 선택 개수를 조절하는 메모리 시스템의 동작방법.
  14. 제10항에 있어서,
    K개의 워드라인 중 앞선 리드 동작이 실패한 상기 제6워드라인에 대해 상기 리드 리트라이 동작을 수행하는 단계를 더 포함하며,
    상기 카운팅하는 단계는,
    상기 제6워드라인에 대해 수행된 상기 리드 리트라이 동작이 성공할 때, 상기 리트라이 테이블에 저장된 상기 제1워드라인의 정보에 기초하여 상기 제6워드라인의 상기 카운팅한 횟수를 결정하는 메모리 시스템의 동작방법.
  15. 제14항에 있어서,
    상기 카운팅하는 단계는,
    상기 제6워드라인에 대한 상기 리드 리트라이 동작이 성공할 때, 상기 제6워드라인이 상기 리트라이 테이블에 저장된 상기 제1워드라인 중 어느 하나와 동일한 워드라인인 경우, 상기 제1워드라인 중 상기 제6워드라인과 동일한 워드라인의 상기 카운팅한 횟수를 업-카운팅하는 제1결정단계; 및
    상기 제6워드라인에 대한 상기 리드 리트라이 동작이 성공할 때, 상기 제6워드라인이 상기 리트라이 테이블에 저장된 상기 제1워드라인과 동일하지 않은 워드라인인 경우, 상기 제6워드라인의 상기 카운팅한 횟수를 상기 기준횟수보다 작은 설정된 횟수로 결정하는 제2결정단계를 포함하는 메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 저장하는 단계는,
    상기 제2결정단계 이후, 상기 리트라이 테이블에 빈(empty)공간이 존재하는 경우, 빈공간에 상기 제6워드라인을 상기 제1워드라인 중 하나로서 저장하는 단계;
    상기 제2결정단계 이후, 상기 리트라이 테이블에 빈공간이 존재하지 않고 상기 제1워드라인 중 상기 카운팅한 횟수가 상기 설정된 횟수인 워드라인이 적어도 하나 이상 존재하는 경우, 상기 카운팅한 횟수가 상기 설정된 횟수인 워드라인인 어느 하나의 워드라인을 대체하여 상기 제6워드라인을 상기 제1워드라인 중 하나로서 상기 리트라이 테이블에 저장하는 단계; 및
    상기 제2결정단계 이후, 상기 리트라이 테이블에 빈공간이 존재하지 않고 상기 제1워드라인 중 가장 작은 상기 카운팅한 횟수가 상기 설정된 횟수를 초과하는 경우, 상기 제6워드라인을 상기 리트라이 테이블에 저장하지 않는 단계를 포함하는 메모리 시스템의 동작방법.
  17. 제10항에 있어서,
    상기 저장하는 단계는,
    상기 제1워드라인 중 내부의 메모리 셀들에 저장된 데이터가 무효(invalid) 또는 이레이즈(erase)된 워드라인을 상기 리트라이 테이블에서 삭제하는 메모리 시스템의 동작방법.
KR1020220178032A 2022-12-19 2022-12-19 신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법 KR20240095910A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/321,770 US20240201864A1 (en) 2022-12-19 2023-05-23 Memory system for securing reliability and operating method thereof

Publications (1)

Publication Number Publication Date
KR20240095910A true KR20240095910A (ko) 2024-06-26

Family

ID=

Similar Documents

Publication Publication Date Title
US10102059B2 (en) Data storage device capable of preventing a data retention fail of a nonvolatile memory device and operating method thereof
US11204846B2 (en) Memory system and method for operating the same
US10824523B2 (en) Data storage device and operating method thereof
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
CN113314179A (zh) 用于执行读取操作的存储器系统及其操作方法
KR20210121654A (ko) 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법
US20210397378A1 (en) Storage device and operating method thereof
CN114661226A (zh) 用于传输由非易失性存储器系统生成的元数据的装置和方法
KR20220077041A (ko) 메모리 시스템 내 저장된 데이터를 유지하는 장치 및 방법
KR20210152738A (ko) 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법
CN117130544A (zh) 用于控制操作速度的存储器系统和数据处理系统
KR20170031311A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20230171128A (ko) 비휘발성 메모리 장치의 프로그램 상태에 대응하여 데이터를 읽는 장치 및 방법
KR20230160620A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
CN115373863A (zh) 存储器裸片失效风暴期间的性能及死锁缓解
US11157401B2 (en) Data storage device and operating method thereof performing a block scan operation for checking for valid page counts
KR20230064279A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
KR20230056901A (ko) 메모리 장치에 데이터를 프로그램하는 장치 및 방법
CN114155889A (zh) 存储器系统中数据通信的校准设备和方法
KR20240095910A (ko) 신뢰성 확보를 위한 메모리 시스템 및 메모리 시스템의 동작방법
KR20210114718A (ko) 리드 동작을 수행하는 메모리 시스템 및 메모리 시스템의 동작방법
US9966148B1 (en) Data storage device and operating method thereof
US20240201864A1 (en) Memory system for securing reliability and operating method thereof