KR20210043778A - 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법 - Google Patents

불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법 Download PDF

Info

Publication number
KR20210043778A
KR20210043778A KR1020190126049A KR20190126049A KR20210043778A KR 20210043778 A KR20210043778 A KR 20210043778A KR 1020190126049 A KR1020190126049 A KR 1020190126049A KR 20190126049 A KR20190126049 A KR 20190126049A KR 20210043778 A KR20210043778 A KR 20210043778A
Authority
KR
South Korea
Prior art keywords
reliability
error
parameter
memory area
memory
Prior art date
Application number
KR1020190126049A
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 KR1020190126049A priority Critical patent/KR20210043778A/ko
Priority to US16/999,201 priority patent/US11409441B2/en
Priority to CN202011007655.3A priority patent/CN112650443A/zh
Publication of KR20210043778A publication Critical patent/KR20210043778A/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Operations Research (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 따른 불휘발성 메모리 장치를 포함하는 스토리지 컨트롤러의 동작 방법은 초기 구동 구간에서, 불휘발성 메모리 장치의 제1 메모리 영역으로부터 제1 메모리 영역에 가해진 열화 정도를 가리키는 제1 파라미터 및 제1 메모리 영역에서 발생한 열화 정도를 가리키는 제2 파라미터를 수집하는 단계, 수집된 제1 파라미터 및 수집된 제2 파라미터를 기반으로 복수의 함수 모델들 중 제1 함수 모델을 선택하고, 선택된 제1 함수 모델을 기반으로 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계, 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하는 단계, 및 결정된 제1 신뢰성 주기를 기반으로 불휘발성 메모리 장치의 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하는 단계를 포함한다.

Description

불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법{OPERATION METHOD OF STORAGE CONTROLLER CONFIGURED TO CONTROL NONVOLATILE MEMORY DEVICE}
본 발명은 반도체 메모리에 관한 것으로, 좀 더 상세하게는 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법에 관한 것이다.
반도체 메모리는 SRAM, DRAM 등과 같이 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 휘발성 메모리 장치 및 플래시 메모리 장치, PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 불휘발성 메모리 장치로 구분된다.
플래시 메모리 장치는 대용량 저장 매체로서 널리 사용된다. 플래시 메모리 장치의 물리적 특정 또는 다양한 주변 요인으로 인하여, 플래시 메모리 장치에 저장된 데이터에서 에러가 발생할 수 있다. 이러한 데이터 에러는 별도의 에러 정정 수단을 통해 정정될 수 있다. 그러나 별도의 에러 정정 수단의 에러 정정 능력을 초과하는 에러가 발생된 경우 데이터가 소실될 수 있으며, 이 경우 플래시 메모리에 저장된 데이터의 신뢰성이 보장되지 않는다.
본 발명은 상술된 기술적 문제점을 해결하기 위한 것으로, 본 발명에 따르면, 향상된 신뢰성, 향상된 성능, 및 향상된 수명을 갖는 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법이 제공된다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 스토리지 컨트롤러의 동작 방법은 초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 상기 제1 메모리 영역에 가해진 열화 정도를 가리키는 제1 파라미터 및 상기 제1 메모리 영역에서 발생한 열화 정도를 가리키는 제2 파라미터를 수집하는 단계, 상기 수집된 제1 파라미터 및 상기 수집된 제2 파라미터를 기반으로 복수의 함수 모델들 중 제1 함수 모델을 선택하고, 상기 선택된 제1 함수 모델을 기반으로 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계, 상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하는 단계, 및 상기 결정된 제1 신뢰성 주기를 기반으로 상기 불휘발성 메모리 장치의 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법은 초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 상기 제1 메모리 영역에 가해진 열화 정도를 가리키는 제1 파라미터 및 상기 제1 메모리 영역에서 발생한 열화 정도를 가리키는 제2 파라미터를 수집하는 단계, 상기 불휘발성 메모리 장치의 에러 경향에 대하여 트레이닝된 트레이닝 모델, 상기 수집된 제1 파라미터, 및 상기 수집된 제2 파라미터를 기반으로 기계 학습을 수행하여 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계, 상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하는 단계, 및 상기 결정된 제1 신뢰성 주기를 기반으로 상기 불휘발성 메모리 장치의 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하는 단계를 포함한다.
본 발명의 실시 예에 따른 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법은 초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 제1 파라미터 세트를 수집하고, 상기 불휘발성 메모리 장치의 제2 메모리 영역으로부터 제2 파라미터 세트를 수집하는 단계, 상기 수집된 제1 파라미터 세트를 기반으로 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하고, 상기 수집된 제2 파라미터 세트를 기반으로 제2 에러 경향을 예측하는 단계, 상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하고, 상기 예측된 제2 에러 경향을 기반으로 제2 신뢰성 주기를 결정하는 단계, 및 상기 제1 신뢰성 주기를 기반으로 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하고, 상기 제2 신뢰성 주기를 기반으로 상기 제2 메모리 영역에 대한 제2 신뢰성 동작을 수행하는 단계를 포함한다.
본 발명에 따르면, 스토리지 컨트롤러는 구동 중에 불휘발성 메모리 장치에 대한 다양한 파라미터들을 수집하고, 수집된 파라미터들을 기반으로 신뢰성 주기를 조절할 수 있다. 따라서, 불휘발성 메모리 장치에 대하여 최적화된 신뢰성 주기를 기반으로 신뢰성 동작이 수행됨으로써, 스토리지 장치의 전체적인 성능 저하가 방지될 수 있다. 뿐만 아니라, 불필요한 신뢰성 동작이 감소될 수 있다. 따라서, 향상된 성능 및 향상된 수명을 갖는 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법이 제공된다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러를 보여주는 블록도이다.
도 3a는 도 1의 불휘발성 메모리 장치를 보여주는 블록도이다.
도 3b는 도 3a의 메모리 셀 어레이에 포함된 복수의 메모리 블록들 중 하나의 메모리 블록을 예시적으로 보여주는 도면이다.
도 4는 도 1의 스토리지 장치의 신뢰성 동작을 보여주는 순서도이다.
도 5는 도 1의 신뢰성 관리자를 예시적으로 보여주는 블록도이다.
도 6은 도 5의 함수 모델부의 생성 방법을 예시적으로 보여주는 순서도이다.
도 7a 내지 도 7c는 도 6의 순서도의 동작을 설명하기 위한 도면들이다.
도 8은 도 5의 신뢰성 관리부의 신뢰성 주기 관리 동작에 대한 순서도이다.
도 9는 도 8의 S220 단계를 설명하기 위한 예시적인 그래프이다.
도 10은 본 발명의 실시 예에 따른 신뢰성 관리자를 보여주는 블록도이다.
도 11은 도 10의 신뢰성 관리자의 동작을 보여주는 순서도이다.
도 12는 본 발명의 실시 예에 따른 신뢰성 관리자를 보여주는 블록도이다.
도 13은 도 12의 신뢰성 관리자의 동작을 보여주는 순서도이다.
도 14는 본 발명의 실시 예에 따른 신뢰성 관리자를 보여주는 블록도이다.
도 15 및 도 16은 도 14의 그룹부의 동작을 설명하기 위한 도면들이다.
도 17은 본 발명의 실시 예에 따른 신뢰성 관리자를 보여주는 블록도이다.
도 18은 도 1의 스토리지 시스템의 계층적 구조를 보여주는 블록도이다.
도 19는 본 발명에 따른 스토리지 장치가 적용된 SSD 시스템의 블록도이다.
이하에서, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다. 이하에서 사용되는 "부/유닛(unit)," "모듈(module)" 등과 같은 용어들은 본문에서 설명되는 다양한 기능들을 수행하도록 구성된 하드웨어, 소프트웨어, 또는 그것들의 조합의 형태로 구현될 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(10)은 호스트(11) 및 스토리지 장치(100)를 포함할 수 있다. 예시적인 실시 예에서, 스토리지 시스템(10)은 개인용 컴퓨터, 노트북, 랩탑, 서버, 워크스테이션, 태블릿 PC, 스마트폰, 디지털 카메라, 블랙박스 등과 같이 다양한 정보를 처리하도록 구성된 컴퓨팅 시스템일 수 있다.
호스트(11)는 스토리지 시스템(10)의 제반 동작을 제어할 수 있다. 예를 들어, 호스트(11)는 스토리지 장치(100)에 데이터를 저장하거나 또는 스토리지 장치(100)에 저장된 데이터를 읽을 수 있다. 스토리지 장치(100)는 호스트(11)의 제어에 따라 데이터를 저장하거나, 저장된 데이터를 호스트(11)로 전송할 수 있다. 스토리지 장치(100)는 스토리지 컨트롤러(110) 및 불휘발성 메모리 장치(120)를 포함할 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 장치(120)에 데이터를 저장하거나 또는 불휘발성 메모리 장치(120)에 저장된 데이터를 읽을 수 있다. 불휘발성 메모리 장치(120)는 스토리지 컨트롤러(110)의 동작에 따라 동작할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 장치(120)는 낸드 플래시 메모리일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치(120)는 PRAM, MRAM, RRAM, FRAM 등과 같이 전원 공급이 차단되어도 저장하고 있던 데이터를 유지할 수 있는 다양한 저장 장치들 중 하나일 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는 신뢰성 관리자(111)를 포함할 수 있다. 신뢰성 관리자(111)는 불휘발성 메모리 장치(120)에 저장된 데이터의 신뢰성을 보장하기 위한 다양한 신뢰성 관리 동작(이하에서, 설명의 편의를 위하여 "신뢰성 동작(reliability operation)"이라 칭함.)을 수행하거나 또는 관리할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)에 저장된 데이터는 다양한 요인으로 인한 에러를 포함할 수 있다. 불휘발성 메모리 장치(120)에 저장된 데이터의 에러는 별도의 에러 정정 수단(예를 들어, ECC 엔진, 또는 다양한 에러 정정 동작들)을 통해 검출되고 정정될 수 있다. 이 때, 데이터의 에러가 별도의 에러 정정 수단에 의해 정정될 수 있는 에러 정정 수준을 초과한 경우, 불휘발성 메모리 장치(120)에 저장된 데이터의 신뢰성이 보장되지 않을 수 있다. 즉, 불휘발성 메모리 장치(120)에 저장된 데이터가 소실될 수 있다.
신뢰성 관리자(111)는 불휘발성 메모리 장치(120)에 저장된 데이터를 일정 주기마다 모니터링할 수 있다. 불휘발성 메모리 장치(120)에 저장된 데이터의 에러가 일정 수준 이상인 경우, 신뢰성 관리자(111)는 데이터의 에러를 정정하고, 에러가 정정된 데이터를 불휘발성 메모리 장치(120)의 다른 영역 또는 다른 불휘발성 메모리 장치에 저장함으로써, 데이터의 신뢰성을 보장할 수 있다.
종래의 신뢰성 동작은 미리 정해진 주기를 기반으로 수행된다. 예를 들어, 종래의 스토리지 장치는 미리 정해진 주기마다 신뢰성 동작을 수행한다. 미리 정해진 주기는 불휘발성 메모리 장치의 열화 정도를 기반으로 결정된다. 불휘발성 메모리 장치는 복수의 메모리 블록들을 포함할 수 있고 복수의 메모리 블록들 각각은 서로 다른 열화 정도를 가질 수 있다. 즉, 열화 정도가 높은 메모리 블록에 저장된 데이터는 상대적으로 에러 증가률이 높고, 열화 정도가 낮은 메모리 블록에 저장된 데이터는 상대적으로 에러 증가률이 낮을 수 있다. 이 때, 미리 정해진 주기는 불휘발성 메모리 장치에 포함된 복수의 메모리 블록들 중 가장 높은 열화 정도를 갖는 메모리 블록을 기준으로 결정된다. 이 경우, 상대적으로 낮은 열화 정도를 갖는 메모리 블록들에 대하여 불필요하게 빈번한 신뢰성 동작이 수행됨에 따라 스토리지 장치의 전체적인 성능이 저하될 수 있다.
본 발명의 실시 예에 따른 스토리지 장치(100)는 구동 중에(runtime) 수집된 불휘발성 메모리 장치(120)의 특성을 기반으로 신뢰성 동작의 주기(이하에서, "신뢰성 주기(reliability interval)"라 칭한다.)를 결정할 수 있다. 이 경우, 불휘발성 메모리 장치(120)의 복수의 메모리 블록들 각각에 대하여 서로 다른 신뢰성 주기가 적용되기 때문에, 복수의 메모리 블록들 각각의 열화 정도에 최적화된 신뢰성 동작이 수행될 수 있다. 따라서, 스토리지 장치(100)의 성능 저하가 방지될 수 있다.
도 2는 도 1의 스토리지 컨트롤러를 예시적으로 보여주는 블록도이다. 도 1 및 도 2를 참조하면, 스토리지 컨트롤러(110)는 신뢰성 관리자(111), 프로세서(112), SRAM(113), ROM(114), 에러 정정 엔진(ECC Engine)(115), 호스트 인터페이스 회로(116), 및 불휘발성 메모리 인터페이스 회로(117)를 포함할 수 있다.
신뢰성 관리자(111)는 불휘발성 메모리 장치(120)에 대한 신뢰성 동작을 수행하거나 또는 관리할 수 있다. 예시적인 실시 예에서, 신뢰성 관리자(111)는 신뢰성 동작을 수행하기 위한 신뢰성 주기를 조절 및 관리할 수 있다. 신뢰성 관리자(111)의 신뢰성 주기를 조절하거나 또는 관리하는 동작 및 구성은 이하의 도면들을 참조하여 더욱 상세하게 설명된다.
프로세서(112)는 스토리지 컨트롤러(110)의 제반 동작을 제어할 수 있다. SRAM(113)은 스토리지 컨트롤러(1110)의 버퍼 메모리, 캐시 메모리, 또는 동작 메모리로 사용될 수 있다. ROM(114)은 스토리지 컨트롤러(110)가 동작하는데 필요한 다양한 정보를 펌웨어 형태로 저장할 수 있다. 예시적인 실시 예에서, 신뢰성 관리자(111)는 소프트웨어 형태, 하드웨어 형태, 또는 그것들의 조합의 형태로 제공될 수 있다. 신뢰성 관리자(111)가 소프트웨어 형태로 제공되는 경우, 신뢰성 관리자(111)는 SRAM(113)에 저장될 수 있고, 프로세서(112)에 의해 구동될 수 있다.
ECC 엔진(115)은 불휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러를 검출하고 정정할 수 있다. 예시적인 실시 예에서, ECC 엔진(115)은 일정 수준의 에러 정정 능력을 가질 수 있다. 불휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러가 ECC 엔진(115)의 에러 정정 능력을 초과하는 경우, 불휘발성 메모리 장치(120)로부터 읽어진 데이터의 에러는 정정되지 않을 수 있다. ECC 엔진(115)에 의해 에러가 정정되지 않는 상황을 방지하기 위하여, 신뢰성 관리자(111)는 신뢰성 주기를 기반으로 신뢰성 동작을 수행함으로써, 불휘발성 메모리 장치(120)에 저장된 데이터의 에러가 ECC 엔진(115)의 에러 정정 능력을 초과하지 않도록 할 수 있다.
스토리지 컨트롤러(110)는 호스트 인터페이스 회로(116)를 통해 호스트(11)와 통신할 수 있다. 예시적인 실시 예에서, 호스트 인터페이스 회로(116)는 SATA(Serial ATA), PCIe(Peripheral Component Interconnect Express), SAS(Serial Attached SCSI) 인터페이스, NVMe(Nonvolatile Memory express), UFS(Universal Flash Storage) 등과 같은 다양한 인터페이스들 중 적어도 하나를 기반으로 구현될 수 있다.
스토리지 컨트롤러(110)는 불휘발성 메모리 인터페이스 회로(117)를 통해 불휘발성 메모리 장치(120)와 통신할 수 있다. 예시적인 실시 예에서, 불휘발성 메모리 인터페이스 회로(117)는 낸드 인터페이스를 기반으로 구현될 수 있다.
도 3a는 도 1의 불휘발성 메모리 장치를 예시적으로 보여주는 블록도이다. 도 3b는 도 3a의 메모리 셀 어레이의 복수의 메모리 블록들 중 하나의 메모리 블록을 예시적으로 보여주는 도면이다. 도 1, 도 3a, 및 도 3b를 참조하면, 불휘발성 메모리 장치(120)는 메모리 셀 어레이(121), 어드레스 디코더(122), 제어 로직 및 전압 발생 회로(123), 페이지 버퍼(124), 및 입출력 회로(125)를 포함할 수 있다.
메모리 셀 어레이(121)는 복수의 메모리 블록들을 포함할 수 있다. 복수의 메모리 블록들 각각 도 3b에 도시된 제1 메모리 블록(BLK1)과 유사한 구조를 가질 수 있다. 도 3b에 도시된 제1 메모리 블록(BLK1)은 불휘발성 메모리 장치(120)의 물리적 소거 단위일 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 물리적 소거 단위는 페이지 단위, 워드라인 단위, 서브 블록 단위 등으로 변형될 수 있다.
도 3b에 도시된 바와 같이, 제1 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함할 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 행 방향(Row Direction) 및 열 방향(Column Direction)으로 배열될 수 있다. 비록 도면의 간결성을 위하여, 4개의 셀 스트링들(CS11, CS12, CS21, CS22)이 도 3b에 도시되어 있으나, 본 발명의 범위가 이에 한정되는 것은 아니며, 셀 스트링들의 개수는 행 방향 또는 열 방향으로 증가 또는 감소될 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 중 동일한 열에 위치한 셀 스트링들은 동일한 비트라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS21)은 제1 비트라인(BL1)과 연결될 수 있고, 셀 스트링들(CS21, CS22)은 제2 비트라인(BL2)과 연결될 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함할 수 있다. 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다. 복수의 셀 트랜지스터들은 행 방향 및 열 방향에 의해 형성된 평면(예를 들어, 반도체 기판(미도시))과 수직한 방향인 높이 방향(height direction)으로 적층될 수 있다.
복수의 셀 트랜지스터들은 대응하는 비트라인(예를 들어, BL1 또는 BL2) 및 공통 소스 라인(CSL) 사이에 직렬 연결될 수 있다. 예를 들어, 복수의 셀 트랜지스터들은 스트링 선택 트랜지스터들(SSTb, SSTa), 더미 메모리 셀들(DMC1, DMC2), 메모리 셀들(MC1~MC4), 및 접지 선택 트랜지스터들(GSTa, GSTb)을 포함할 수 있다. 직렬 연결된 스트링 선택 트랜지스터들(SSTb, SSTa)은 직렬 연결된 메모리 셀들(MC1~MC4) 및 대응하는 비트 라인(예를 들어, BL1 또는 BL2) 사이에 제공될 수 있다. 직렬 연결된 접지 선택 트랜지스터들(GSTa, GSTb)은 직렬 연결된 메모리 셀들(MC1~MC4) 및 공통 소스 라인(CSL) 사이에 제공될 수 있다. 예시적인 실시 예에서, 직렬 연결된 스트링 선택 트랜지스터들(SSTb, SSTa) 및 직렬 연결된 메모리 셀들(MC1~MC4) 사이에 제2 더미 메모리 셀(DMC2)이 제공될 수 있고, 직렬 연결된 메모리 셀들(MC1~MC4) 및 직렬 연결된 접지 선택 트랜지스터들(GSTb, GSTa) 사이에 제1 더미 메모리 셀(DMC1)이 제공될 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 메모리 셀들(MC1~MC4) 중 동일한 높이에 위치한 메모리 셀들은 서로 동일한 워드라인을 공유할 수 있다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제1 메모리 셀들(MC1)은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 제1 워드라인(WL1)을 공유할 수 있다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제2 메모리 셀들(MC2)은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 제2 워드라인(WL2)을 공유할 수 있다. 마찬가지로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제3 및 제4 메모리 셀들(MC3, MC4) 각각은 기판(미도시)으로부터 동일한 높이에 위치할 수 있고, 각각 제3 및 제4 워드라인들(WL3, WL4)을 공유할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 더미 메모리 셀들(DMC1, DMC2) 중 동일한 높이에 위치한 더미 메모리 셀들은 서로 동일한 더미 워드라인을 공유할 수 있다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제1 더미 메모리 셀들(DMC1)은 제1 더미 워드라인(DWL1)을 공유할 수 있고, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 제2 더미 메모리 셀들(DMC2)은 제2 더미 워드라인(DWL2)을 공유할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 스트링 선택 트랜지스터들(SST1b, SST1a) 중 동일한 행 및 동일한 높이에 위치한 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SST1b)과 연결될 수 있고, 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SST1a)과 연결될 수 있다. 셀 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTb)은 스트링 선택 라인(SST2b)과 연결될 수 있고, 셀 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTa)은 스트링 선택 라인(SST2a)과 연결될 수 있다. 비록 도면에 도시되지는 않았으나, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 스트링 선택 트랜지스터들(SST1b, SST1a) 중 동일한 행에 위치한 스트링 선택 트랜지스터들은 동일한 스트링 선택 라인을 공유할 수 있다. 예를 들어, 셀 스트링들(CS11, CS12)의 스트링 선택 트랜지스터들(SSTb, SSTa)은 제1 스트링 선택 라인을 공유할 수 있고, 셀 스트링들(CS21, CS22)의 스트링 선택 트랜지스터들(SSTb, SSTa)은 제1 스트링 선택 라인과 다른 제2 스트링 선택 라인을 공유할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 접지 선택 트랜지스터들(GST1b, GST1a) 중 동일한 행 및 동일한 높이에 위치한 접지 선택 트랜지스터들은 동일한 접지 선택 라인과 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTb)은 접지 선택 라인(GST1b)과 연결될 수 있고, 셀 스트링들(CS11, CS12)의 접지 선택 트랜지스터들(GSTa)은 접지 선택 라인(GST1a)과 연결될 수 있다. 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTb)은 접지 선택 라인(GST2b)과 연결될 수 있고, 셀 스트링들(CS21, CS22)의 접지 선택 트랜지스터들(GSTa)은 접지 선택 라인(GST2a)과 연결될 수 있다. 비록 도면에 도시되지는 않았으나, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 접지 선택 트랜지스터들(GST1b, GST1a)은 서로 동일한 접지 선택 라인을 공유할 수 있다. 또는 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 접지 선택 트랜지스터들(GST1b, GST1a) 중 동일한 높이의 접지 선택 트랜지스터들은 동일한 접지 선택 라인을 공유할 수 있다. 또는, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각의 접지 선택 트랜지스터들(GST1b, GST1a) 중 동일한 행에 위치한 접지 선택 트랜지스터들은 동일한 접지 선택 라인을 공유할 수 있다.
예시적인 실시 예에서, 도 2에 도시된 제1 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소될 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링을 구성하는 행들 및 열들의 개수가 증가 또는 감소될 수 있다. 또한, 제1 메모리 블록(BLK1)의 셀 트랜지스터들의 개수들은 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 제1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들의 개수들이 증가 또는 감소될 수 있다.
다시 도 3a를 참조하면, 어드레스 디코더(122)는 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 어드레스 디코더(122)는 스토리지 컨트롤러(110)로부터 수신된 어드레스(ADDR)를 디코딩하고, 디코딩 결과를 기반으로 스트링 선택 라인들(SSL), 워드라인들(WL), 및 접지 선택 라인들(GSL)을 제어할 수 있다.
제어 로직 및 전압 발생 회로(123)는 스토리지 컨트롤러(110)로부터 커맨드(CMD) 및 제어 신호(CTRL)를 수신할 수 있다. 제어 로직 및 전압 발생 회로(123)는 스토리지 컨트롤러(110)로부터 수신된 신호에 응답하여 어드레스 디코더(122), 페이지 버퍼(124), 및 입출력 회로(125)를 제어할 수 있다. 제어 로직 및 전압 발생 회로(123)는 불휘발성 메모리 장치(120)가 동작하는데 필요한 다양한 전압들(예를 들어, 읽기 전압들, 프로그램 전압들, 검증 전압들, 소거 전압들 등)을 생성할 수 있다.
페이지 버퍼(124)는 비트라인들(BL)을 통해 메모리 셀 어레이(121)와 연결될 수 있다. 페이지 버퍼(124)는 데이터 라인(DL)을 통해 입출력 회로(125)로부터 데이터를 수신할 수 있다. 페이지 버퍼(124)는 수신된 데이터를 기반으로 비트라인들(BL)을 제어함으로써, 데이터를 메모리 셀 어레이(121)에 저장할 수 있다. 페이지 버퍼 회로(124)는 비트라인들(BL)의 전압을 감지함으로써, 메모리 셀 어레이(121)에 저장된 데이터를 읽을 수 있다. 페이지 버퍼 회로(124)는 읽은 데이터를 데이터 라인(DL)을 통해 입출력 회로(125)로 제공할 수 있다.
입출력 회로(125)는 데이터 라인(DL)을 통해 페이지 버퍼(124)와 연결될 수 있다. 입출력 회로(125)는 스토리지 컨트롤러(110)로부터 수신된 데이터를 데이터 라인(DL)을 통해 페이지 버퍼(124)로 전달할 수 있다. 입출력 회로(125)는 데이터 라인(DL)을 통해 수신된 데이터를 스토리지 컨트롤러(110)로 전달할 수 있다.
예시적인 실시 예에서, 도 3a를 참조하여 설명된 어드레스(ADDR), 커맨드(CMD), 제어 신호(CTRL), 및 데이터(DATA)는 스토리지 컨트롤러(110)의 불휘발성 메모리 인터페이스 회로(117)를 통해 송수신될 수 있다.
도 4는 도 1의 스토리지 장치의 신뢰성 동작을 예시적으로 보여주는 순서도이다. 도 1 및 도 4를 참조하면, S11 단계에서, 스토리지 장치(100)는 일반 동작(예를 들어, 읽기 동작, 프로그램 동작, 소거 동작 등)을 수행할 수 있다. 이와 함께, 스토리지 장치(100)는 동작 카운트를 누적할 수 있다. 동작 카운트는 스토리지 장치(100)의 불휘발성 메모리 장치(120)에 대하여 수행된 동작(예를 들어, 읽기 동작, 프로그램 동작, 또는 소거 동작 등)의 실행 횟수를 가리킬 수 있다. 예시적인 실시 예에서, 동작 카운트는 메모리 블록 단위, 워드라인 단위, 페이지 단위, 서브 블록 단위, 슈퍼 블록 단위, 플레인 단위, 칩 단위 등으로 각각 누적될 수 있다.
S12 단계에서, 스토리지 장치(100)는 누적된 동작 카운트가 신뢰성 주기보다 큰지 판별할 수 있다. 다시 말해서, 스토리지 장치(100)는 누적된 동작 카운트가 신뢰성 주기에 도달했는지 판별할 수 있다. 누적된 동작 카운트가 신뢰성 주기보다 작은 경우, 스토리지 장치(100)는 S11 단계를 계속 수행한다.
누적된 동작 카운트가 신뢰성 주기보다 큰 경우(즉, 누적된 동작 카운트가 신뢰성 주기에 도달한 경우), S13 단계에서, 스토리지 장치(100)는 신뢰성 동작을 수행할 수 있다. 예를 들어, 스토리지 장치(100)는 신뢰성 주기에 도달한 누적된 동작 카운트에 대응하는 특정 메모리 블록에 대한 읽기 동작을 수행할 수 있다. 이 때, 읽기 동작은 특정 메모리 블록에 포함된 복수의 워드라인들 중 적어도 하나에 대하여 수행될 수 있다. 스토리지 장치(100)는 읽기 동작의 결과(즉, 특정 메모리 블록으로부터 읽은 데이터)에 대한 에러 검출 동작을 수행할 수 있다. 검출된 에러가 기준 값보다 큰 경우, 특정 메모리 블록에 저장된 데이터의 에러가 복구되지 않을 가능성이 높을 것이다. 따라서 특정 메모리 블록에 저장된 데이터의 신뢰성을 보장하기 위하여, 에러 검출 동작에 의해 검출된 에러 정도가 기준 값보다 큰 경우, 스토리지 장치(100)는 특정 메모리 블록에 저장된 데이터를 다른 메모리 블록으로 이동시킬 수 있다. 예시적인 실시 예에서, 스토리지 장치(100)는 특정 메모리 블록에 저장된 데이터를 읽고, 읽은 데이터의 에러를 정정하고, 에러가 정정된 데이터를 다른 메모리 블록에 프로그램할 수 있다. 상술된 일련의 신뢰성 동작이 수행됨으로써, 에러 발생 가능성이 높은 특정 메모리 블록에 저장된 데이터의 신뢰성이 보장될 수 있다.
예시적인 실시 예에서, S13 단계의 신뢰성 동작은 호스트(11)로부터의 명시적인 요청 없이 수행될 수 있다. 예를 들어, 스토리지 장치(100)는 호스트(11)로부터 명시적인 요청이 없더라도, S12 단계의 조건이 만족되는 경우(즉, 누적된 동작 카운트가 신뢰성 주기에 도달한 경우), 신뢰성 동작을 수행할 수 있다.
예시적인 실시 예에서, S13 단계의 신뢰성 동작은 호스트(11)로부터의 명시적인 요청과 함께 수행될 수 있다. 예를 들어, 스토리지 장치(100)는 S12 단계의 조건이 만족되고(즉, 누적된 동작 카운트가 신뢰성 주기에 도달하고), 호스트(11)로부터 불휘발성 메모리 장치(120)에 대한 동작이 요청되는 경우, 호스트(11)로부터 요청된 동작을 수행하면서, 특정 메모리 블록에 대한 신뢰성 동작을 수행할 수 있다.
S14 단계에서, 스토리지 장치(100)는 누적된 동작 카운트를 리셋할 수 있다. 예시적인 실시 예에서, 구현 방식에 따라 S14 단계의 동작은 생략될 수 있다. 예를 들어, 스토리지 장치(100)는 특정 단위에 따라 동작 카운트를 각각 누적하고, 누적된 동작 카운트의 증가량 및 신뢰성 주기를 비교할 수 있다. 이 경우, S14 단계의 동작 카운트를 리셋하는 동작은 생략될 수 있다. 예시적인 실시 예에서, 도 4의 순서도의 동작은 스토리지 컨트롤러(110) 또는 신뢰성 관리자(111)에 의해 수행될 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100)는 신뢰성 주기마다 신뢰성 동작을 수행함으로써, 불휘발성 메모리 장치(120)에 저장된 데이터의 신뢰성을 보장할 수 있다. 예시적인 실시 예에서, 본 발명의 실시 예에 따른 스토리지 장치(100) 또는 스토리지 컨트롤러(110)는 구동 중에, 불휘발성 메모리 장치(120)의 특성을 수집하고, 수집된 특성을 기반으로 신뢰성 주기를 적응적으로 조절하거나 또는 관리할 수 있다. 이 경우, 불휘발성 메모리 장치(120)의 특성에 최적화된 신뢰성 주기를 기반으로 신뢰성 동작이 수행되기 때문에, 상대적으로 낮은 열화 정도를 갖는 메모리 블록들에 대한 신뢰성 동작의 횟수가 감소하게 된다. 이로 인하여 스토리지 장치(100)의 전체적인 성능 저하가 방지될 수 있다.
도 5는 도 1의 신뢰성 관리자를 예시적으로 보여주는 블록도이다. 도 5를 참조하여, 신뢰성 관리자(111)가 신뢰성 주기를 적응적으로 조절하거나 또는 관리하는 구성이 설명된다. 이하에서 설명의 편의를 위하여, 신뢰성 관리자(111)는 메모리 블록 단위로 신뢰성 주기를 관리하는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 신뢰성 주기는 메모리 블록, 워드라인, 페이지, 서브 블록, 슈퍼 블록, 플레인, 칩 등과 같이 다양한 메모리 영역의 단위로 관리될 수 있다.
도 1 및 도 5를 참조하면, 신뢰성 관리자(111)는 제1 및 제2 파라미터 감시부들(111a, 111b), 함수 모델 선택부(111c), 함수 모델부(111d), 및 신뢰성 주기 결정부(111e)를 포함할 수 있다. 제1 및 제2 파라미터 감시부들(111a, 111b)는 불휘발성 메모리 장치(120)로부터 제1 및 제2 파라미터들을 실시간으로 또는 구동 중에 모니터링할 수 있다. 제1 파라미터는 불휘발성 메모리 장치(120)의 메모리 블록들 각각에 대한 동작 카운트(예를 들어, 읽기 카운트), 프로그램/소거 사이클 횟수(P/E cycle), 동작 경과 시간 또는 데이터 유지 시간(이하에서 설명의 편의를 위하여, "리텐션(retention)"이라 칭한다.), 또는 온도(temperature)와 같은 다양한 정보들 중 적어도 하나를 포함할 수 있다. 제2 파라미터는 불휘발성 메모리 장치(120)의 메모리 블록들 각각에 대한 에러 비트 개수, 셀 카운트 값 등과 같은 다양한 정보들 중 적어도 하나를 포함할 수 있다. 예시적인 실시 예에서, 셀 카운트 값은 특정 레벨로 하나의 워드라인에 연결된 메모리 셀들의 온-셀 또는 오프-셀을 카운트하고, 카운트된 값 및 기준 값과의 차이를 가리킬 수 있다. 이 경우, 셀 카운트 값의 크기는 열화 정ㄴ도(즉, 에러 정도)를 가리킬 수 있다.
예시적인 실시 예에서, 제1 파라미터는 불휘발성 메모리 장치(120)의 메모리 블록들 각각에 대하여 가해진 열화 정도를 가리키는 인자일 수 있고, 제2 파라미터는 불휘발성 메모리 장치(120)의 메모리 블록들 각각에 대하여 발생한 열화 정도를 가리키는 인자일 수 있다. 가해진 열화 정도는 불휘발성 메모리 장치(120)에 대한 열화를 발생시킴으로써, 불휘발성 메모리 장치(120)에서 에러를 발생하도록 하는 인자일 수 있다. 발생한 열화 정도는 불휘발성 메모리 장치(120)에서 발생한 에러의 수준 또는 에러의 정도를 가리키는 인자일 수 있다. 예를 들어, 특정 메모리 블록에 가해진 열화 정도가 증가할수록 특정 메모리 블록에서 발생한 열화 정도가 증가할 수 있다. 다시 말해서, 제1 파라미터가 증가할수록 제2 파라미터가 증가할 수 있다.
이 때, 불휘발성 메모리 장치(120)에 포함된 복수의 메모리 블록들 각각은 서로 다른 물리적 특성을 갖기 때문에, 가해진 열화 정도에 대하여 발생한 열화 정보의 비율이 서로 다를 수 있다. 좀 더 상세한 예로서, 제1 및 제2 메모리 블록들에 대하여 동일한 수준의 열화가 가해진 경우, 제1 및 제2 메모리 블록들의 물리적 특성 차이로 인하여, 제1 및 제2 메모리 블록들 각각에서 발생한 열화 정도가 다를 수 있다. 또는 제1 및 제2 메모리 블록들에 대하여 가해진 열화 정도의 증가량이 서로 동일한 경우, 제1 및 제2 메모리 블록들의 물리적 특성 차이로 인하여, 제1 및 제2 메모리 블록들 각각에서 발생한 열화 정도의 증가량이 서로 다를 수 있다.
이러한 물리적 특성 차이로 인하여, 제1 및 제2 메모리 블록들 각각에 서로 동일한 신뢰성 주기를 적용할 경우, 제1 및 제2 메모리 블록들 중 어느 하나의 메모리 블록에 대한 신뢰성 동작은 불필요하게 자주 수행될 것이다. 즉, 열화 정도가 상대적으로 낮은 메모리 블록에 대한 신뢰성 동작이 불필요하게 자주 수행된다.
함수 모델 선택부(111c)는 제1 파라미터 감시부(111a)로부터 특정 메모리 블록에 대한 제1 파라미터를 수집하고, 제2 파라미터 감시부(111b)로부터 특정 메모리 블록에 대한 제2 파라미터를 수집할 수 있다. 함수 모델 선택부(111c)는 수신된 제1 및 제2 파라미터들을 기반으로 함수 모델부(111d)에 포함된 복수의 함수 모델들 중 하나를 선택할 수 있다. 함수 모델 선택부(111c)는 선택된 함수 모델을 기반으로 특정 메모리 블록에 대한 에러 경향을 예측할 수 있다. 예시적인 실시 예에서, 에러 경향은 불휘발성 메모리 장치(120) 또는 특정 메모리 블록에서, 현재 시점 이후에 가해질 열화 정도에 대하여 발생될 에러 정도를 가리킬 수 있다. 즉, 에러 경향은 현재 시점 이후에서의 제1 파라미터에 대한 제2 파라미터의 관계를 가리킬 수 있다.
예를 들어, 함수 모델부(111d)는 사전에 미리 모델링된 복수의 함수 모델들을 포함할 수 있다. 복수의 함수 모델들은 다양한 메모리 블록들로부터 수신된 제1 및 제2 파라미터들을 기반으로 에러 증가량을 모델링한 함수 모델일 수 있다. 함수 모델 선택부(111c)는 수집된 제1 파라미터 및 수집된 제2 파라미터의 비율 또는 조합을 기반으로 복수의 함수 모델S들 중 하나를 선택할 수 있다. 선택된 함수 모델은 함수 모델 선택부(111c)에 의해 수집된 제1 및 제2 파라미터들에 대응하는 함수 모델일 수 있으며, 선택된 함수 모델은 특정 메모리 블록에 대한 에러 경향을 나타낼 수 있다. 즉, 함수 모델 선택부(111c)에 의해 선택된 함수 모델을 기반으로 특정 메모리 블록에 대하여 향후에 발생될 에러 경향이 예측될 수 있다. 좀 더 상세한 예로서, 함수 모델 선택부(111c)에 의해 선택된 함수 모델을 기반으로, 특정 메모리 블록에 대한 제1 파라미터가 제1 값만큼 증가한 경우, 특정 메모리 블록에 대한 제2 파라미터가 어느 정도 증가하는지가 판단될 수 있다.
신뢰성 주기 결정부(111e)는 함수 모델 선택부(111c)에 의해 선택된 함수 모델을 기반으로 특정 메모리 블록에 대한 신뢰성 주기를 결정하거나 또는 조절할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 선택된 함수 모델에 의해 특정 메모리 블록에 대한 에러 경향이 판별될 수 있다. 이 때, 신뢰성 주기 결정부(111e)는, 선택된 함수 모델을 기반으로, 제1 수준의 에러가 발생하는 제1 파라미터의 제1 값 및 제2 수준의 에러가 발생하는 제1 파라미터의 제2 값을 결정할 수 있다. 신뢰성 주기 결정부(111e)는 제1 값 및 제2 값을 기반으로 신뢰성 주기를 결정할 수 있다. 예시적인 실시 예에서, 제1 수준의 에러는 ECC 엔진(115)의 에러 정정 능력을 기반으로 결정된 최대 에러 정정량보다 소정의 레벨만큼 낮은 수준일 수 있고, 제2 수준의 에러는 ECC 엔진(115)의 에러 정정 능력을 기반으로 결정된 최대 에러 정정량의 수준일 수 있다. 예시적인 실시 예에서, 신뢰성 주기는 제1 값 및 제2 값의 차이를 일정 수준으로 나눈 크기일 수 있다.
상술된 바와 같이, 신뢰성 관리자(111)는 불휘발성 메모리 장치(120)의 복수의 메모리 블록들 각각에 대하여 실시간으로 또는 구동 중에 제1 및 제2 파라미터들을 모니터링하고, 제1 및 제2 파라미터들을 기반으로 복수의 메모리 블록들 각각에 대한 신뢰성 주기를 개별적으로 결정하거나 또는 조절할 수 있다. 따라서, 메모리 블록들 각각의 열화 정도에 따라 서로 다른 신뢰성 주기가 적용되기 때문에, 불필요한 신뢰성 동작이 방지되며, 스토리지 장치(100)의 성능이 향상될 수 있다.
도 6은 도 5의 함수 모델부를 생성하는 방법을 예시적으로 보여주는 순서도이다. 도 7a 내지 도 7c는 도 6의 순서도에 따른 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 제1 파라미터는 메모리 블록에 대한 읽기 카운트를 가리키고, 제2 파라미터는 메모리 블록에서 발생한 에러 정도를 가리키는 것으로 가정한다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다.
도 6 및 도 7a 내지 도 7c를 참조하면, S110 단계에서, 테스트 장치(12)는 복수의 샘플 칩들로부터 제1 파라미터 및 제2 파리미터를 측정할 수 있다. 예를 들어, 도 7a에 도시된 바와 같이, 테스트 장치(12)는 복수의 샘플 칩들 각각에 대한 다양한 일반 동작들을 반복 수행하고, 일반 동작들이 반복 수행되는 동안의 제1 및 제2 파라미터들을 복수의 샘플 칩들 각각으로부터 측정할 수 있다. 앞서 설명된 바와 같이, 제1 파라미터는 복수의 샘플 칩들 각각에 가해진 열화 정도를 가리킬 수 있고, 제2 파라미터는 복수의 샘플 칩들 각각에서 발행한 열화 정도를 가리킬 수 있다.
S120 단계에서, 테스트 장치(12)는 측정된 파라미터들을 기반으로 복수의 함수 모델들을 생성할 수 있다. 예를 들어, 도 7b의 그래프에 도시된 바와 같이, 테스트 장치(12)는 제1 내지 제4 함수 모델들(FT1~FT4)을 생성할 수 있다. 도 7b의 그래프의 가로축은 제1 파라미터(예를 들어, 읽기 카운트)를 가리키고, 세로축은 제2 파라미터(예를 들어, 에러 비트 수)를 가리킬 수 있다.
제1 내지 제4 함수 모델들(FT1~FT4)은 서로 다른 에러 경향을 나타낼 수 있다. 예를 들어, 도 7b에 도시된 바와 같이, 제1 함수 모델(FT1)에 의한 에러 경향은 제1 읽기 카운트(RD1)에서 제1 에러 비트 수(EB1)에 도달할 수 있다. 제2 함수 모델(FT2)에 의한 에러 경향은 제2 읽기 카운트(RD2)에서 제2 에러 비트 수(EB2)에 도달할 수 있다. 제3 함수 모델(FT3)에 의한 에러 경향은 제3 읽기 카운트(RD3)에서 제3 에러 비트 수(EB3)에 도달할 수 있다. 제4 함수 모델(FT4)에 의한 에러 경향은 제4 읽기 카운트(RD4)에서 제4 에러 비트 수(EB4)에 도달할 수 있다. 다시 말해서, 제1 내지 제4 함수 모델들(FT1~FT4)은 각각 제1 내지 제4 기울기들(a1~a4)를 갖는 선형 모델일 수 있다.
메모리 블록의 열화 정도를 설명하기 위하여, 제1 함수 모델(FT1)은 제1 샘플 칩을 기반으로 생성되고, 제2 함수 모델(FT2)은 제2 샘플 칩을 기반으로 생성된 것으로 가정한다. 이 때, 앞서 설명된 바와 같이, 제1 함수 모델(FT1)은 제1 읽기 카운트(RD1)에서 제1 에러 비트 수(EB1)에 도달하고, 제2 함수 모델(FT2)은 제2 읽기 카운트(RD2)에서 제1 에러 비트 수(EB1)에 도달할 수 있다. 이 때, 제1 읽기 카운트(RD1)는 제2 읽기 카운트(RD2)보다 작을 수 있다. 따라서, 제1 함수 모델(FT1)의 기반이 된 제1 샘플 칩은 제2 함수 모델(FT2)의 기반이 된 제2 샘플 칩보다 빠르게 열화될 수 있다. 다시 말해서, 제1 샘플 칩은 제2 샘플 칩보다 읽기 카운트에 대하여 빠르게 에러 비트 수가 증가할 수 있다.
다시 도 6을 참조하면, S120 단계 이후에, S130 단계에서, 테스트 장치(12)는 생성된 복수의 함수 모델들을 스토리지 컨트롤러(110)에 저장할 수 있다. 예를 들어, 복수의 함수 모델들에 대한 정보는 스토리지 컨트롤러(110)의 함수 모델부(111d)에 저장될 수 있다. 예를 들어, 도 7c에 도시된 바와 같이, 함수 모델부(111d)는 다양한 함수 모델들에 대한 정보를 포함할 수 있다.
예시적인 실시 예에서, 도 7c에 도시된 함수 모델부(111d)는 하나의 메모리 블록에 대하여 다양한 파라미터들이 반영된 함수 모델들을 보여준다. 예를 들어, 제1 파라미터는 읽기 카운트(Read Count), P/E 사이클 횟수(P/E Cycle), 리텐션(Retention), 온도(Temperature) 중 어느 하나일 수 있고, 제2 파라미터는 에러 비트 수 및 셀 카운트 중 어느 하나일 수 있다. 테스트 장치(12)는 하나의 메모리 블록에 대한 제1 및 제2 파라미터들을 측정하고, 측정된 파라미터를 기반으로 대응하는 함수 모델들(FT11~FT42)을 생성하고, 관련된 인자(예를 들어, 기울기 정보(a11~a42))를 결정할 수 있다. 즉, 하나의 메모리 블록에 대하여 다양한 파라미터들을 기반으로 복수의 함수 모델들이 생성될 수 있다.
예시적인 실시 예에서, 복수의 함수 모델들 또는 함수 모델부(111d)는 스토리지 컨트롤러(110)의 ROM(114)에 펌웨어 형태로 저장될 수 있다. 또는 복수의 함수 모델들 도는 함수 모델부(111d)는 불휘발성 메모리 장치(120)에 저장될 수 있고, 스토리지 장치(100)의 구동 중에, 스토리지 컨트롤러(110)에 의해 불휘발성 메모리 장치(120)로부터 스토리지 컨트롤러(110)로 로드될 수 있다.
비록 도 7b의 그래프에서, 선형적인 함수 모델들(FT1~FT4)이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 다양한 함수 모델들은 선형 모델 뿐만 아니라, 로그 스케일 모델, 지수 모델 등으로 모델링될 수 있다.
도 8은 도 5의 신뢰성 관리부의 신뢰성 주기 관리 동작을 예시적으로 보여주는 순서도이다. 도 9는 도 8의 S220 단계를 설명하기 위한 예시적인 그래프이다. 도 9에 도시된 그래프의 가로축은 제1 파라미터를 가리키고, 세로축은 제2 파라미터를 가리킨다. 설명의 편의를 위하여, 도 8의 순서도는 스토리지 컨트롤러(110)가 수행하는 것으로 설명된다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니며, 도 8의 순서도는 스토리지 컨트롤러(110) 또는 스토리지 컨트롤러(110)에 포함된 다양한 구성들 중 적어도 하나, 예를 들어, 프로세서(112), 신뢰성 관리자(111) 등에 의해 수행될 수 있다.
도 1, 도 5, 및 도 8을 참조하면, S210 단계에서, 스토리지 컨트롤러(110)는 스토리지 장치(100)의 초기 구동 구간 동안 제1 및 제2 파라미터들을 수집할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 스토리지 장치(100)에 대한 일반 동작(예를 들어, 읽기 동작, 프로그램 동작, 소거 동작, 또는 가비지 콜렉션과 같은 관리 동작)을 수행할 수 있다. 스토리지 컨트롤러(110)는 스토리지 장치(100)의 일반 동작의 초기 구동 구간동안 불휘발성 메모리 장치(120)에 대한 제1 및 제2 파라미터들을 수집할 수 있다. 예시적인 실시 예에서, 제1 파라미터는 동작 카운트, P/E 사이클 횟수, 리텐션(Retention), 온도 등과 같이 불휘발성 메모리 장치(120)에 가해진 열화 정도를 가리키는 인자들 중 적어도 하나일 수 있다. 제2 파라미터는 에러 비트, 셀 카운트 등과 같이 불휘발성 메모리 장치(120)에서 발생한 열화 정도를 가리키는 인자들 중 적어도 하나일 수 있다.
예시적인 실시 예에서, 스토리지 장치(100)의 초기 구동 구간은 스토리지 장치(100)가 사용자에 의해 실제로 사용된 시점으로부터 소정의 구간(예를 들어, 사용 시간 또는 동작 카운트 등)을 가리킬 수 있다. 또는 초기 구동 구간은 불휘발성 메모리 장치(120)에 대한 동작이 개시된 시점으로부터 소정의 구간을 가리킬 수 있다. 또는 스토리지 장치(100)의 초기 구동 구간은 특정 시점으로부터의 소정의 구간을 가리킬 수 있다. 즉, 스토리지 컨트롤러(110)는 스토리지 장치(100)가 실제 처음 사용되는 시점으로부터 소정의 구간 동안 제1 및 제2 파라미터들을 수집하거나 또는 스토리지 장치(100)가 사용되는 도중에 특정 시점으로부터 소정의 구간 동안 제1 및 제2 파라미터들을 수집할 수 있다.
S220 단계에서, 스토리지 컨트롤러(110)는 제1 및 제2 파라미터들을 기반으로 복수의 함수 모델들 중 하나를 선택할 수 있다. 스토리지 컨트롤러(110)는 수집된 제1 및 제2 파라미터들의 분포를 기반으로 복수의 함수 모델들 중 대응하는 함수 모델을 선택할 수 있다.
예를 들어, 스토리지 컨트롤러(110)는 초기 구동 구간(PR_int) 동안 제1 메모리 블록(BLK1)에 대하여 제1 및 제2 파라미터들을 수집할 수 있고, 제1 메모리 블록(BLK1)에 대하여 수집된 제1 및 제2 파라미터들은 도 9에서 "*"의 기호로 표시된다. 스토리지 컨트롤러(110)는 초기 구동 구간(PR_int) 동안 제2 메모리 블록(BLK2)에 대하여 제1 및 제2 파라미터들을 수집할 수 있고, 제2 메모리 블록(BLK2)에 대하여 수집된 제1 및 제2 파라미터들은 도 9에서 "+"의 기호로 표시된다.
도 9의 그래프에서 도시된 바와 같이, 제1 메모리 블록(BLK1)의 제1 및 제2 파라미터들은 제1 분포(DT1)를 가질 수 있다. 이 때, 제1 분포(DT1)는 제1 기울기(a1)의 경향으로 증가하는 형태를 가질 수 있다. 즉, 제1 메모리 블록(BLK1)의 에러 경향은 제1 기울기(a1)를 갖는 제1 함수 모델(FT1)과 대응될 수 있다.
도 9의 그래프에서 도시된 바와 같이, 제2 메모리 블록(BLK2)의 제1 및 제2 파라미터들은 제2 분포(DT2)를 가질 수 있다. 이 때, 제2 분포(DT2)는 제4 기울기(a4)의 경향으로 증가하는 형태를 가질 수 있다. 즉, 제2 메모리 블록(BLK2)에 대한 제1 및 제2 파라미터들은 제4 기울기(a4)를 갖는 제4 함수 모델(FT4)과 대응될 수 있다. 즉, 스토리지 컨트롤러(110)는 제1 메모리 블록(BLK1)에 대하여 제1 함수 모델(FT1)을 선택하고, 제2 메모리 블록(BLK2)에 제4 함수 모델(FT4)을 선택할 수 있다.
S230 단계에서, 스토리지 컨트롤러(110)는 선택된 함수 모델을 기반으로 에러 경향을 추론 또는 예측할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 복수의 함수 모델들 각각은 에러 경향에 대한 정보를 포함할 수 있다. 스토리지 컨트롤러(110)는 선택된 함수 모델을 기반으로 각 메모리 블록에 대한 에러 경향을 추론 또는 예측할 수 있다.
S240 단계에서, 스토리지 컨트롤러(110)는 추론된 에러 경향을 기반으로 신뢰성 주기를 판별할 수 있다. 예를 들어, 도 9를 참조하여 설명된 바와 같이, 제1 메모리 블록(BLK1)에 대한 함수 모델로서 제1 함수 모델(FT1)이 선택되고, 제2 메모리 블록(BLK2)에 대한 함수 모델로서 제2 함수 모델(FT2)이 선택될 수 있다.
스토리지 컨트롤러(110)는 제1 함수 모델(FT1)의 제2 파라미터의 값이 제2 에러 비트 수(EB2)로부터 제1 에러 비트 수(EB1)로 증가하는 동안의 제1 파라미터 값의 증가량을 제1 메모리 블록(BLK1)에 대한 제1 신뢰성 주기(RI1)으로 결정할 수 있다. 스토리지 컨트롤러(110)는 제2 함수 모델(FT2)의 제2 파라미터의 값이 제2 에러 비트 수(EB2)로부터 제1 에러 비트 수(EB1)로 증가하는 동안의 제1 파라미터 값의 증가량을 제2 메모리 블록(BLK2)에 대한 제2 신뢰성 주기(RI2)으로 결정할 수 있다. 또는 제1 함수 모델(FT1)로부터 추론된 에러 경향을 기반으로 제2 파라미터가 제2 에러 비트 수(EB2)인 경우의 대응하는 제1 파라미터의 제1 값 및 제2 파라미터가 제1 에러 비트 수(EB1)인 경우의 대응하는 제1 파라미터의 제2 값이 결정되고, 신뢰성 주기는 제1 값 및 제2 값의 차이를 기반으로 결정될 수 있다.
예시적인 실시 예에서, 제1 에러 비트 수(EB1)는 ECC 엔진(115)에 의해 정정 가능한 최대 에러 비트 수를 가리킬 수 있다. 제2 에러 비트 수(EB2)는 제1 에러 비트 수(EB1)보다 소정의 값만큼 작은 에러 비트 수를 가리킬 수 있다.
예시적인 실시 예에서, 스토리지 컨트롤러(110)는, 판별된 신뢰성 주기를 기반으로, 도 4의 순서도를 참조하여 설명된 신뢰성 동작을 주기적으로 수행할 수 있다. 즉, 스토리지 컨트롤러(110)는 스토리지 장치(100)의 구동 중에 또는 실시간으로 불휘발성 메모리 장치(120)에 대한 다양한 파라미터들을 수집하고, 수집된 파라미터들을 기반으로 불휘발성 메모리 장치(120)의 메모리 블록들 각각 또는 다른 특정 단위 영역들 각각에 대하여 서로 다른 신뢰성 주기를 적용할 수 있다. 따라서, 상대적으로 열화 정도가 낮은 메모리 블록들 또는 메모리 영역들에 대한 신뢰성 동작의 횟수가 감소되기 때문에, 스토리지 장치(100)의 성능 저하가 방지되거나 또는 스토리지 장치(100)의 성능이 향상될 수 있다. 뿐만 아니라, 전체적인 신뢰성 동작의 횟수가 감소되기 때문에, 스토리지 장치(100)의 전체 수명이 향상될 수 있다.
도 10은 본 발명의 실시 예에 따른 신뢰성 관리자를 예시적으로 보여주는 블록도이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 예시적인 실시 예에서, 도 10을 참조하여 설명되는 신뢰성 관리자(211)는 도 1 및 도 2를 참조하여 설명된 스토리지 장치(100) 또는 스토리지 컨트롤러(110)에 적용되거나 또는 도 1 및 도 2를 참조하여 설명된 신뢰성 관리자(111)의 다른 예일 수 있다. 즉, 스토리지 장치(100) 및 스토리지 컨트롤러(110)는 이하의 도면들을 참조하여 설명되는 다양한 신뢰성 관리자들(211, 311, 411, 511) 중 적어도 하나를 포함하거나 또는 신뢰성 관리자들(211, 311, 411, 511) 중 적어도 하나를 실행하도록 구성될 수 있다.
도 10을 참조하면, 신뢰성 관리자(211)는 제1 및 제2 파라미터 감시부들(211a, 211b), 에러 경향 예측부(211c), 및 신뢰성 구산 결정부(211e)를 포함할 수 있다. 제1 및 제2 파라미터 감시부들(211a, 211b), 및 신뢰성 구산 결정부(211e)는 앞서 설명된 바와 유사하므로 이에 대한 상세한 설명은 생략된다.
에러 경향 예측부(211c)는 기계 학습부(ML) 및 트레이닝 모델(TM)을 포함할 수 있다. 기계 학습부(ML)는 신경망(Neural Network), 서포트 벡터 머신(SVM; Support Vector Machine), 선형 회귀(Linear Regression), 의사 결정 나무(Decision Tree), 일반화 선형 모델(Generalized linear models, GLM), 랜덤 포레스트(Random forests), 점진적 부스팅 머신(Gradient boosting machine, GBM), 딥 러닝(Deep learning), 클러스터링(Clustering), 비정상 탐지(Anomaly detection), 차원 축소(Dimension reduction) 등과 같은 다양한 기계 학습 알고리즘들 중 적어도 하나를 기반으로 동작할 수 있다. 기계 학습부(ML)는 제1 파라미터 감시부(211a)로부터 제1 파라미터를 수신하고, 제2 파라미터 감시부(211b)로부터 제2 파라미터를 수신하고, 수신된 제1 및 제2 파라미터들을 입력으로 사용하여, 사전에 트레이닝된 트레이닝 모델(TM)을 기반으로 대응하는 메모리 블록에 대한 에러 경향을 예측할 수 있다.
예시적인 실시 예에서, 기계 학습부(ML)는 기계 학습을 수행하도록 구성된 하드웨어 가속기로 제공될 수 있다. 또는, 기계 학습부(ML)는 기계 학습을 수행하도록 구성된 소프트웨어 형태로 제공될 수 있다. 소프트웨어 형태로 제공된 기계 학습부(ML)는 도 2를 참조하여 설명된 SRAM(113)에 저장되고, 프로세서(112)에 의해 실행될 수 있다.
예시적인 실시 예에서, 트레이닝 모델(TM)은 도 7a를 참조하여 설명된 바와 유사하게, 테스트 장치(12)에 의해 학습될 수 있다. 예를 들어, 테스트 장치(12)는 복수의 샘플 칩들 각각으로부터 제1 및 제2 파라미터들을 수집하고, 수집된 제1 및 제2 파라미터들을 기반으로 기계 학습을 수행하여 트레이닝 모델(TM)을 생성할 수 있다. 테스트 장치(12)에 의해 생성된 트레이닝 모델(TM)은 신뢰성 관리자(211)에 포함될 수 있다.
예시적인 실시 예에서, 트레이닝 모델(TM)은 앞서 설명된 복수의 함수 모델들 또는 함수 모델부(111d)와 다른 구조를 가질 수 있다. 앞서 설명된 복수의 함수 모델들 또는 함수 모델부(111d)는 다양한 함수들 각각에 대한 정보를 포함하는 구성이나, 트레이닝 모델(TM)은 기계 학습부(ML)의 기계 학습을 위한 학습 모델일 수 있다. 예시적인 실시 예에서, 기계 학습부(ML)의 에러 경향을 예측하는 동작이 수행됨에 따라, 트레이닝 모델(TM)이 추가적으로 학습될 수 있다.
도 11은 도 10의 신뢰성 관리자의 동작을 예시적으로 보여주는 순서도이다. 이하에서, 설명의 편의를 위하여, 도 1의 스토리지 컨트롤러(110)가 도 11의 순서도에 따른 동작을 수행하는 것으로 설명된다. 즉, 비록 도면에 명시적으로 도시되지는 않았으나, 도 1의 스토리지 컨트롤러(110)는 도 10의 신뢰성 관리자(211)를 포함할 수 있다.
예시적인 실시 예에서, 도 10을 참조하여 트레이닝 모델(TM)이 사전에 생성되는 것으로 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 기계 학습부(ML)는 스토리지 장치(100)의 초기 구동 구간 동안 학습을 수행함으로써, 트레이닝 모델(TM)을 생성할 수 있다. 좀 더 상세한 예로서, 도 1, 도 10, 및 도 11을 참조하면, S310 단계에서, 스토리지 컨트롤러(110)는 초기 구동 구간 동안 제1 및 제2 파라미터들을 수집할 수 있다. S310 단계의 동작은 도 8의 S210 단계의 동작과 유사하므로 이에 대한 상세한 설명은 생략된다.
S320 단계에서, 스토리지 컨트롤러(110)는 수집된 제1 및 제2 파라미터들을 기반으로 트레이닝 모델(TM)에 대한 트레이닝을 동작을 수행할 수 있다. 즉, 스토리지 장치(100)의 실제 구동 중에 수집된 파라미터들을 기반으로 트레이닝 모델(TM)이 추가적으로 트레이닝됨으로써, 스토리지 장치(100)의 실제 동작 환경이 트레이닝 모델(TM)에 실시간으로 반영될 수 있다. 이 경우, 불휘발성 메모리 장치(120)에 대한 에러 경향 예측의 정확도가 향상될 수 있다.
S330 단계에서, 스토리지 컨트롤러(110)는 트레이닝 모델(TM)을 기반으로 에러 경향을 추론 또는 예측할 수 있다. 예를 들어, 기계 학습부(ML)는 수집된 제1 및 제2 파라미터들 및 학습된 트레이닝 모델(TM)을 기반으로 다양한 기계 학습 알고리즘 중 적어도 하나를 수행하여 메모리 블록에 대한 에러 경향을 추론 또는 예측할 수 있다. S340 단계에서, 스토리지 컨트롤러(110)는 추론된 에러 경향을 기반으로 신뢰성 주기를 결정할 수 있다. S340 단계의 동작은 도 8의 S240 단계의 동작과 유사하므로 이에 대한 상세한 설명은 생략된다.
예시적인 실시 예에서, S320 단계 및 S330 단계의 동작은 동시에 또는 병렬적으로 수행될 수 있다. 예를 들어, 기계 학습부(ML)는 수집된 제1 및 제2 파라미터들 및 트레이닝 모델(TM)을 기반으로 기계 학습을 수행하여 에러 경향을 추론함과 동시에, 트레이닝 모델(TM)에 대한 트레이닝 동작을 수행할 수 있다.
상술된 바와 같이, 본 발명의 실시 예에 따른 스토리지 장치(100)는 사전에 생성되거나 또는 스토리지 장치(100)의 구동 중에 학습된 트레이닝 모델(TM)을 기반으로 불휘발성 메모리 장치(120)의 메모리 블록들에 대한 신뢰성 주기를 결정할 수 있다. 따라서, 스토리지 장치(100)의 실제 동작 환경에 따라, 불휘발성 메모리 장치(120)의 메모리 블록들에 대하여 최적화된 신뢰성 주기가 결정될 수 있기 때문에, 스토리지 장치(100)의 성능 및 수명이 향상될 수 있다.
도 12는 본 발명의 실시 예에 따른 신뢰성 관리자를 예시적으로 보여주는 블록도이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 12를 참조하면, 신뢰성 관리자(311)는 제1 및 제2 파라미터 감시부들(311a, 311b), 제1 에러 경향 예측부(311c), 제2 에러 경향 예측부(311d), 및 신뢰성 주기 결정부(311e)를 포함할 수 있다. 제1 및 제2 파라미터 감시부들(311a, 311b), 및 신뢰성 주기 결정부(311e)는 앞서 설명된 바와 유사하므로, 이에 대한 상세한 설명은 생략된다.
제1 에러 경향 예측부(311c)는 도 5를 참조하여 설명된 함수 모델 선택부(111c) 및 함수 모델부(111d)를 포함할 수 있다. 즉, 제1 에러 경향 예측부(311c)는 도 5 내지 도 9를 참조하여 설명된 방법을 기반으로 메모리 블록들 각각에 대한 에러 경향을 예측할 수 있다. 제2 에러 경향 예측부(311d)는 도 10을 참조하여 설명된 기계 학습부(ML) 및 트레이닝 모델(TM)을 포함할 수 있다. 즉, 제2 에러 경향 예측부(311d)는 도 10 및 도 11을 참조하여 설명된 방법을 기반으로 메모리 블록들 각각에 대한 에러 경향을 예측할 수 있다.
예시적인 실시 예에서, 신뢰성 관리자(311)는 제1 에러 경향 예측부(311c) 및 제2 에러 경향 예측부(311d) 중 어느 하나를 사용하여 에러 경향을 예측할 수 있다. 예를 들어, 앞서 설명된 바와 같이, 제1 에러 경향 예측부(311c)는 사전에 생성된 복수의 함수 모델들 중 하나를 선택하는 방식으로 에러 경향을 예측할 수 있다. 제2 에러 경향 예측부(311d)는 트레이닝 모델(TM)을 기반으로 기계 학습을 수행하는 방식으로 에러 경향을 예측할 수 있다. 이 때, 스토리지 장치(100)의 초기 구동 구간에서, 트레이닝 모델(TM)이 완전히 학습되지 않은 상태일 수 있다. 이 경우 제2 에러 경향 예측부(311d)의 에러 경향 예측 동작의 정확도가 낮을 수 있다. 따라서, 신뢰성 관리자(311)는 스토리지 장치(100)의 초기 구동 구간 또는 특정 구간 동안 제1 에러 경향 예측부(311c)를 통해 에러 경향을 예측하고, 트레이닝 모델(TM)이 완전히 완성 또는 충분히 학습된 이후에는 제2 에러 경향 예측부(311d)를 통해 에러 경향을 예측할 수 있다.
도 13은 도 12의 신뢰성 관리자의 동작을 예시적으로 보여주는 순서도이다. 설명의 편의를 위하여, 도 13의 순서도에 따른 동작은 도 1 및 도 2를 참조하여 설명된 스토리지 컨트롤러(110)에 의해 수행되는 것으로 설명된다. 즉, 스토리지 컨트롤러(110)는 도 12의 신뢰성 관리자(311)를 포함하거나 또는 신뢰성 관리자(311)를 실행하도록 구성될 수 있다. 도 1, 도 2, 도 12, 및 도 13을 참조하면, S410 단계에서, 스토리지 컨트롤러(110)는 제1 및 제2 파라미터들을 수집할 수 있다.
S420 단계에서, 스토리지 컨트롤러(110)는 트레이닝 모델(TM)이 완성되었는지 판별할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 트레이닝 모델(TM)이 완성되었는지 또는 충분히 학습되었는지 판별할 수 있다. 예시적인 실시 예에서, S420 단계의 동작은 스토리지 컨트롤러(110)가 수집된 파라미터들의 양이 기준치 이상인지 판별하는 동작으로 대체될 수 있다. 예를 들어, 수집된 파라미터의 양이 충분한 경우, 트레이닝 모델(TM)에 대한 트레이닝 동작이 충분히 수행될 수 있으며, 이 경우 트레이닝 모델(TM)의 신뢰성 또는 정확성이 상대적으로 높아질 수 있다. 즉, 수집된 파라미터의 양은 트레이닝 모델(TM)의 신뢰성과 대응될 수 있으며, 이에 따라 S420 단계의 동작은 스토리지 컨트롤러(110)가 수집된 파라미터들의 양이 기준치 이상인지 판별하는 동작으로 대체될 수 있다.
트레이닝 모델(TM)이 완성된 경우, S430 단계에서, 스토리지 컨트롤러(110)는 제2 에러 경향 예측부(311d) 및 수집된 파라미터들을 사용하여 에러 경향을 추론 또는 예측할 수 있다. S430 단계의 동작은 도 10 및 도 11을 참조하여 설명된 기계 학습을 기반으로 에러 경향을 추론 또는 예측하는 방법과 유사하므로, 이에 대한 상세한 설명은 생략된다.
트레이닝 모델(TM)이 완성되지 않은 경우, 스토리지 컨트롤러(110)는 S441 단계 및 S442 단계를 수행할 수 있다. S441 단계에서, 스토리지 컨트롤러(110)는 수집된 파라미터들 및 제1 에러 경향 예측부(311c)를 사용하여 에러 경향을 추론 또는 예측할 수 있다. S441 단계의 동작은 도 5 내지 도 9를 참조하여 설명된 복수의 함수 모델들 중 하나를 선택하여 에러 경향을 추론 또는 예측하는 방법과 유사하므로, 이에 대한 상세한 설명은 생략된다.
S442 단계에서, 스토리지 컨트롤러(110)는 수집된 파라미터들 및 제2 에러 경향 예측부(311d)를 사용하여 트레이닝 동작을 수행할 수 있다. 예를 들어, 스토리지 컨트롤러(110)는 제2 에러 경향 예측부(311d)를 사용하여 수집된 파라미터들을 기반으로 트레이닝 동작을 수행함으로써, 트레이닝 모델(TM)을 학습시킬 수 있다. 예시적인 실시 예에서, S441 단계 및 S442 단계의 동작들은 동시에 또는 병렬적으로 수행될 수 있다. S450 단계에서, 스토리지 컨트롤러(110)는 추론된 에러 경향을 기반으로 신뢰성 주기를 결정할 수 있다.
예시적인 실시 예에서, 신뢰성 관리자(311)는, 수집된 다양한 파라미터들의 양이 상대적으로 적은 스토리지 장치(100)의 초기 구동 구간 동안, 도 12 및 도 13을 참조하여 설명된 동작을 수행할 수 있다. 그러나 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 트레이닝 모델(TM)이 사전에 충분히 학습된 경우, 신뢰성 관리자(411)는 스토리지 장치(100)의 초기 구동 구간 동안 제2 에러 경향 예측부(411c)의 기계 학습을 기반으로 에러 경향을 예측할 수 있다. 소겅 구간이 경과한 이후에, 신뢰성 관리자(411)는 제1 에러 경향 예측부(411c)의 함수 선택을 기반으로 예러 경향을 예측할 수 있다. 이는 기계 학습 기반의 추론은 상대적으로 많은 연산을 필요로 하고, 반면에, 함수 선택 기반의 추론은 상대적으로 적은 연산을 필요로 할 수 있다. 즉, 트레이닝 모델(TM)이 사전에 충분히 학습된 경우, 신뢰성 관리자(411)는 기계 학습 기반의 추론을 수행하고, 소정의 구간이 경과한 이후에, 함수 선택 기반의 추론을 수행할 수 있다. 이는 수집된 파라미터의 양이 충분한 경우, 함수 선택 기반의 추론의 신뢰성도 향상될 수 있기 때문이다.
상술된 바와 같이, 신뢰성 관리자(311), 또는 신뢰성 관리자(311)를 포함하는 스토리지 컨트롤러(110)는 스토리지 장치(100)의 동작 도중에 수집된 파라미터들의 양 또는 트레이닝 모델(TM)의 상태에 따라 함수 모델 선택 기반의 동작 또는 기계 학습 동작을 수행함으로써, 에러 경향을 추론하고 추론된 에러 경향을 기반으로 신뢰성 주기를 결정할 수 있다. 따라서, 앞서 설명된 바와 유사하게, 불필요한 신뢰성 동작이 감소되므로, 스토리지 장치(100)의 성능 및 수명이 향상될 수 있다.
도 14는 본 발명의 실시 예에 따른 신뢰성 관리자를 예시적으로 보여주는 블록도이다. 도 15 및 도 16은 도 14의 그룹부의 동작을 설명하기 위한 도면들이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 14를 참조하면, 신뢰성 관리자(411)는 제1 및 제2 파라미터 감시부들(411a, 411b), 함수 모델 선택부(411c), 함수 모델부(411d), 신뢰성 주기 결정부(411e), 및 그룹부(411f)를 포함할 수 있다. 제1 및 제2 파라미터 감시부들(411a, 411b), 함수 모델 선택부(411c), 함수 모델부(411d), 및 신뢰성 주기 결정부(411e)는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
그룹부(411f)는 복수의 메모리 영역들을 복수의 그룹들로 그룹핑할 수 있다. 예를 들어, 복수의 메모리 영역들은 불휘발성 메모리 장치(120)에 포함될 수 있다. 복수의 메모리 영역들 각각은 신뢰성 주기가 개별적으로 관리 또는 제어되는 단위를 가리킬 수 있다. 즉, 복수의 메모리 영역들 각각은 메모리 블록, 워드라인, 페이지, 서브 블록, 슈퍼 블록, 플레인, 칩 등의 단위로 구분된 영역일 수 있다. 이하에서 하나의 메모리 영역은 하나의 메모리 블록에 대응하는 것으로 가정한다.
그룹부(411f)는 복수의 메모리 영역들 각각에 대응하는 함수 모델들을 기반으로 동일한 함수 모델을 갖는 메모리 영역들끼리 그룹핑할 수 있다. 예를 들어, 도 15 및 도 16과 같이, 불휘발성 메모리 장치는 8개의 메모리 영역들을 포함할 수 있다. 신뢰성 관리자(411)는 8개의 메모리 영역들 각각에 대한 복수의 파리미터 세트들(PMS1~PMS8)을 수집할 수 있다. 복수의 파라미터 세트들(PMS1~PMS8) 각각은 앞서 설명된 바와 같은 제1 및 제2 파라미터들을 포함할 수 있다.
신뢰성 관리자(411)는 수집된 복수의 파라미터 세트들(PMS1~PMS8)을 기반으로 8개의 메뫼리 영역들 각각에 대한 함수 모델을 선택하거나 또는 에러 경향을 추론할 수 있고, 선택된 함수 모델 또는 추론된 에러 경향을 기반으로 각각에 대한 신뢰성 주기를 결정할 수 있다. 이 때, 도 16에 도시된 바와 같이, 제1, 제3, 및 제6 메모리 영역들(1st, 3rd, and 6th memory areas)은 제1 함수 모델(FT1)과 대응될 수 있고, 제2, 제4, 및 제5 메모리 영역들(2nd, 4th, and 5th memory areas)은 제2 함수 모델(FT2)과 대응될 수 있고, 제7 메모리 영역(7th memory area)은 제3 함수 모델(FT3)과 대응될 수 있다.
앞서 설명된 바와 같이, 대응되는 함수 모델이 동일한 경우, 결정된 신뢰성 주기 또한 동일할 것이다. 즉, 제1, 제3, 및 제6 메모리 영역들(1st, 3rd, and 6th memory areas)에 대한 신뢰성 동작은 제1 신뢰성 주기를 기반으로 수행되고, 제2, 제4, 및 제5 메모리 영역들(2nd, 4th, and 5th memory areas)에 대한 신뢰성 동작은 제2 신뢰성 주기를 기반으로 수행되고, 제7 메모리 영역(7th memory area)에 대한 신뢰성 동작은 제3 신뢰성 주기를 기반으로 수행될 수 있다.
이에 따라, 그룹부(411f)는 서로 동일한 신뢰성 주기로 관리되는 메모리 영역들을 서로 동일한 그룹으로 관리할 수 있다. 예를 들어, 그룹부(411f)는 제1, 제3, 및 제6 메모리 영역들(1st, 3rd, and 6th memory areas)을 제1 그룹(GR1)으로 관리하고, 제2, 제4, 및 제5 메모리 영역들(2nd, 4th, and 5th memory areas)은 제2 그룹(GR2)으로 관리하고, 제7 메모리 영역(7th memory area)은 제3 그룹(GR3)으로 관리할 수 있다. 이 경우, 하나의 메모리 영역에 대하여 수집된 파라미터들의 양이 감소되더라도, 하나의 메모리 영역과 동일한 그룹에 포함된 다른 메모리 영역에 대하여 수집된 파라미터들을 사용하여 에러 경향을 추론하거나 또는 신뢰성 주기를 조절할 수 있기 때문에, 신뢰성 주기에 대한 정확도가 향상되거나 또는 최적화될 수 있다. 또는, 스토리지 장치(100) 전체에 대한 파라미터 양이 많은 경우, 동일한 그룹 내의 메모리 영역들에 대한 파라미터들을 감소시킬 수 있기 때문에, 관리 또는 수집되는 파라미터들에 대한 오버헤드를 감소시킬 수 있다.
예시적인 실시 예에서, 도 14의 신뢰성 관리자(411)는 함수 모델을 선택하는 방식을 기반으로 에러 경향을 추론하는 구성이 설명되었으나, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 신뢰성 관리자(411)는 도 10 또는 도 12를 참조하여 설명된 신뢰성 관리자(211 또는 311)과 유사하게 에러 경향을 추론할 수 있으며, 이 때, 신뢰성 관리자는 추론된 에러 경향 또는 결정된 신뢰성 주기를 기반으로 메모리 영역들을 그룹핑할 수 있다.
도 17은 본 발명의 실시 예에 따른 신뢰성 관리자를 예시적으로 보여주는 블록도이다. 설명의 편의를 위하여, 앞서 설명된 구성 요소들에 대한 상세한 설명은 생략된다. 도 17을 참조하면, 신뢰성 관리자(511)는 제1 및 제2 파라미터 감시부들(511a, 511b), 함수 선택부(511c), 함수 모델부(511d), 신뢰성 주기 결정부(511e), 및 제3 파라미터부(511f)를 포함할 수 있다. 제1 및 제2 파라미터 감시부들(511a, 511b), 함수 선택부(511c), 함수 모델부(511d), 및 신뢰성 주기 결정부(511e)는 앞서 설명되었으므로, 이에 대한 상세한 설명은 생략된다.
제3 파라미터부(511f)는 불휘발성 메모리 장치(120)의 물리적 특성과 관련된 정보를 포함할 수 있다. 예를 들어, 제3 파라미터부(511f)는 불휘발성 메모리 장치(120)에 포함된 다양한 메모리 영역들(예를 들어, 메모리 블록들, 워드라인들, 페이지들, 서브 블록들, 슈퍼 블록들, 플레인들, 칩들 등)에 대한 물리적 특성 정보를 포함할 수 있다. 함수 선택부(511c)는 제1 및 제2 파라미터 감시부들(511a, 511b)로부터 수신된 제1 및 제2 파라미터들 뿐만 아니라, 제3 파라미터부(511f)로부터의 정보를 사용하여 복수의 함수 모델들 중 하나를 선택할 수 있다. 예를 들어, 불휘발성 메모리 장치(120)에 포함된 메모리 블록들 각각은 서로 다른 물리적 특성을 가질 수 있다. 즉, 수집된 제1 및 제2 파라미터들이 서로 동일하더라도, 메모리 블록의 물리적 위치, 메모리 블록의 형태, 메모리 블록의 크기 등에 따라 에러 경향이 다르게 나타날 수 있다. 함수 선택부(511c)는 함수 모델을 선택함에 있어서, 제1 및 제2 파라미터들 뿐만 아니라, 메모리 블록의 물리적 특성을 고려하여 함수 모델을 선택할 수 있다.
도 18은 도 1의 스토리지 시스템의 계층적 구조를 예시적으로 보여주는 블록도이다. 도 1 및 도 18을 참조하면, 스토리지 시스템(10)의 계층적 구조는 애플리케이션 레이어(11a), 파일 시스템(11b), 및 플래시 변환 레이어(FTL; Flash Translation Layer)를 포함할 수 있다.
애플리케이션 레이어(11a)는 호스트(11)에서 구동되는 다양한 응용 프로그램들이 실행되는 계층일 수 있다. 파일 시스템(11b)은 애플리케이션 레이어(11a)에 의해 사용되는 파일 또는 데이터를 불휘발성 메모리 장치(120)에 저장할 경우, 이를 조직화하는 역할을 수행한다. 예를 들어, 파일 시스템(11b)은 스토리지 장치(100)의 저장 영역을 논리적 어드레스로 관리할 수 있다. 파일 시스템(11b)은 스토리지 장치(100)에 저장된 데이터에 대하여 논리적 어드레스를 부여하고 관리할 수 있다. 예시적으로, 파일 시스템(11b)은 호스트(11)의 운영 체제(OS; Operating System)에 따라 FAT(File Allocation Table), FAT32, NTFS(NT File System), HFS(Hierarchical File System), JSF2(Journaled File System2), XFS, ODS-5(On-Disk Structure-5), UDF, ZFS, UFS(Unix File System), ext2, ext3, ext4, ReiserFS, Reiser4, ISO 9660, Gnome VFS, BFS, 또는 WinFS 등과 같은 다양한 형태를 가질 수 있다.
플래시 변환 레이어(FTL)는 불휘발성 메모리 장치(120)가 효율적으로 사용될 수 있도록, 호스트(11) 및 불휘발성 메모리 장치(120) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 플래시 변환 레이어(FTL)는, 파일 시스템(11a)에 의해 관리되는 논리적 어드레스 및 불휘발성 메모리 장치(120)의 물리적 어드레스를 변환하는 변환 동작을 수행할 수 있다. 플래시 변환 레이어(FTL)는 이러한 어드레스 변환 동작을 맵핑 테이블을 통해 관리한다. 예시적인 실시 예에서, 플래시 변환 레이어(FTL)는 도 1 내지 도 17을 참조하여 설명된 신뢰성 관리자들(111, 211, 311, 411, 511) 중 적어도 하나를 포함하거나 또는 그것들을 실행하도록 구성될 수 있다. 예시적인 실시 예에서, 플래시 변환 레이어(FTL)는 도 2를 참조하여 설명된 프로세서(112)에 의해 실행될 수 있다.
도 18을 참조하여 설명된 신뢰성 관리자는 예시적인 것이며, 본 발명의 범위가 이에 한정되는 것은 아니다. 예를 들어, 도 1 내지 도 17을 참조하여 설명된 신뢰성 관리자들(111, 211, 311, 411, 511)은 소프트웨어, 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있으며, 스토리지 컨트롤러(110)의 다양한 구성 요소들에 포함될 수 있다. 일 예로서, 도 1 내지 도 17을 참조하여 설명된 신뢰성 관리자들(111, 211, 311, 411, 511)은 스토리지 컨트롤러(110)의 불휘발성 메모리 인터페이스 회로(117)에 하드웨어 IP 형태로 포함될 수 있다.
도 19는 본 발명에 따른 스토리지 장치가 적용된 SSD(solid state drive) 시스템을 예시적으로 보여주는 블록도이다. 도 19를 참조하면, SSD 시스템(1000)은 호스트(1100) 및 스토리지 장치(1200)를 포함한다. SSD 장치(1200)는 신호 커넥터(1201)를 통해 호스트(1100)와 신호(SIG)를 주고 받고, 전원 커넥터(1202)를 통해 전원(PWR)을 입력 받는다. 스토리지 장치(1200)는 SSD(Solid State Drive) 컨트롤러(1210), 복수의 불휘발성 메모리들(1221~122n), 보조 전원 장치(1230), 및 버퍼 메모리(1240)를 포함한다.
SSD 컨트롤러(1210)는 호스트(1100)로부터 수신된 신호(SIG)에 응답하여 복수의 불휘발성 메모리들(1221~122n)을 제어할 수 있다. 복수의 불휘발성 메모리들(1221~122n)은 SSD 컨트롤러(4210)의 제어에 따라 동작할 수 있다. 예시적인 실시 예에서, SSD 컨트롤러(1210)는 도 1 내지 도 18을 참조하여 설명된 스토리지 컨트롤러(110)이거나 또는 도 1 내지 도 18을 참조하여 설명된 신뢰성 관리자들(111, 211, 311, 411, 511) 중 적어도 하나를 포함할 수 있다. SSD 컨트롤러(1210)는 도 1 내지 도 18을 참조하여 설명된 방법을 기반으로 복수의 불휘발성 메모리들(1221~122n) 각각 또는 그것들에 포함된 메모리 블록들 각각 또는 특정 메모리 단위에 대한 신뢰성 주기를 조절할 수 있다.
보조 전원 장치(1230)는 전원 커넥터(1002)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1230)는 호스트(1100)로부터 전원(PWR)을 입력 받고, 충전할 수 있다. 보조 전원 장치(1230)는 호스트(1100)로부터의 전원 공급이 원활하지 않을 경우, SSD(1200)의 전원을 제공할 수 있다. 버퍼 메모리(1240)는 스토리지 장치(1200)의 버퍼 메모리로서 사용될 수 있다.
상술된 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술된 실시 예들뿐만 아니라, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들 또한 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술된 실시 예들에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (20)

  1. 불휘발성 메모리 장치를 포함하는 스토리지 컨트롤러의 동작 방법에 있어서,
    초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 상기 제1 메모리 영역에 가해진 열화 정도를 가리키는 제1 파라미터 및 상기 제1 메모리 영역에서 발생한 열화 정도를 가리키는 제2 파라미터를 수집하는 단계;
    상기 수집된 제1 파라미터 및 상기 수집된 제2 파라미터를 기반으로 복수의 함수 모델들 중 제1 함수 모델을 선택하고, 상기 선택된 제1 함수 모델을 기반으로 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계;
    상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하는 단계; 및
    상기 결정된 제1 신뢰성 주기를 기반으로 상기 불휘발성 메모리 장치의 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 제1 파라미터는 상기 제1 메모리 영역에 대한 동작 카운트, 프로그램/소거 사이클 횟수, 데이터 유지 시간(Retention), 및 온도 중 적어도 하나를 포함하고,
    상기 제2 파라미터는 상기 제1 메모리 영역에서 발생한 에러 비트의 수 및 상기 제1 메모리 영역에서 검출된 셀 카운트 값 중 적어도 하나를 포함하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 초기 구동 구간은 상기 불휘발성 메모리 장치에 대한 일반 동작이 개시된 시점으로부터 미리 정해진 구간을 가리키는 동작 방법.
  4. 제 3 항에 있어서,
    상기 제1 에러 경향은 상기 초기 구동 구간 이후에서, 상기 제1 메모리 영역에 대하여 상기 제1 파라미터가 증가함에 따라 상기 제1 메모리 영역에서 발생한 상기 제2 파라미터의 증가에 대한 관계를 가리키는 동작 방법.
  5. 제 4 항에 있어서,
    상기 제1 에러 경향을 기반으로 상기 제2 파라미터가 제1 기준 값인 경우의 대응하는 상기 제1 파라미터의 제1 값 및 상기 제2 파라미터가 제2 기준 값인 경우의 대응하는 상기 제1 파라미터의 제2 값이 결정되고,
    상기 제1 신뢰성 주기는 상기 제1 값 및 상기 제2 값의 차이를 기반으로 결정되는 동작 방법.
  6. 제 1 항에 있어서,
    상기 제1 신뢰성 동작은 외부 호스트 장치로부터의 명시적인 요청 없이 수행되는 동작 방법.
  7. 제 1 항에 있어서,
    상기 제1 신뢰성 동작을 수행하는 단계는:
    상기 제1 메모리 영역에 대한 제1 동작 카운트를 누적하는 단계;
    상기 누적된 제1 동작 카운트가 상기 제1 신뢰성 주기에 도달한 경우, 상기 제1 메모리 영역에 대한 에러 비트를 검출하는 단계; 및
    상기 검출된 에러 비트가 기준치 이상인 경우, 상기 제1 메모리 영역에 저장된 데이터의 에러를 정정하고, 상기 에러가 정정된 데이터를 상기 제1 메모리 영역과 다른 영역으로 이동시키는 단계를 포함하는 동작 방법.
  8. 제 1 항에 있어서,
    상기 제1 메모리 영역은 하나의 메모리 블록이고, 상기 하나의 메모리 블록은 상기 불휘발성 메모리 장치의 소거 단위인 동작 방법.
  9. 제 1 항에 있어서,
    상기 복수의 함수 모델은, 별도의 테스트 장치에 의해, 상기 불휘발성 메모리 장치와 다른 복수의 샘플 칩들로부터 수집된 샘플 파라미터들을 기반으로 사전에 생성되고, 상기 생성된 복수의 함수 모델들은 상기 불휘발성 메모리 장치에 저장되는 동작 방법.
  10. 제 1 항에 있어서,
    상기 초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제2 메모리 영역으로부터 상기 제2 메모리 영역에 가해진 열화 정도를 가리키는 제3 파라미터 및 상기 제2 메모리 영역에서 발생한 열화 정도를 가리키는 제4 파라미터를 수집하는 단계;
    상기 수집된 제3 파라미터 및 상기 수집된 제4 파라미터를 기반으로 상기 복수의 함수 모델들 중 제2 함수 모델을 선택하고, 상기 선택된 제2 함수 모델을 기반으로 상기 제2 메모리 영역에 대한 제2 에러 경향을 예측하는 단계;
    상기 예측된 제2 에러 경향을 기반으로 제2 신뢰성 주기를 결정하는 단계; 및
    상기 결정된 제2 신뢰성 주기를 기반으로 상기 불휘발성 메모리 장치의 상기 제2 메모리 영역에 대한 제2 신뢰성 동작을 수행하는 단계를 더 포함하는 동작 방법.
  11. 제 10 항에 있어서,
    상기 제1 및 제2 함수 모델들이 서로 동일하거나, 상기 제1 및 제2 에러 경향들이 서로 동일하거나, 또는 상기 제1 및 제2 신뢰성 주기들이 서로 동일한 경우, 상기 제1 및 제2 메모리 영역들을 하나의 그룹으로 관리하는 단계를 더 포함하는 동작 방법.
  12. 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법에 있어서,
    초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 상기 제1 메모리 영역에 가해진 열화 정도를 가리키는 제1 파라미터 및 상기 제1 메모리 영역에서 발생한 열화 정도를 가리키는 제2 파라미터를 수집하는 단계;
    상기 불휘발성 메모리 장치의 에러 경향에 대하여 트레이닝된 트레이닝 모델, 상기 수집된 제1 파라미터, 및 상기 수집된 제2 파라미터를 기반으로 기계 학습을 수행하여 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계;
    상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하는 단계; 및
    상기 결정된 제1 신뢰성 주기를 기반으로 상기 불휘발성 메모리 장치의 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하는 단계를 포함하는 동작 방법.
  13. 제 12 항에 있어서,
    상기 제1 파라미터는 상기 제1 메모리 영역에 대한 동작 카운트, 프로그램/소거 사이클 횟수, 데이터 유지 시간(Retention), 및 온도 중 적어도 하나를 포함하고,
    상기 제2 파라미터는 상기 제1 메모리 영역에서 발생한 에러 비트의 수 및 상기 제1 메모리 영역에서 검출된 셀 카운트 값 중 적어도 하나를 포함하는 동작 방법.
  14. 제 12 항에 있어서,
    상기 트레이닝 모델은 별도의 테스트 장치에 의해, 상기 불휘발성 메모리 장치와 다른 복수의 샘플 칩들로부터 수집된 샘플 파라미터들을 기반으로 사전에 트레이닝되고, 상기 생성된 트레이닝 모델들은 상기 불휘발성 메모리 장치에 저장되는 동작 방법.
  15. 제 12 항에 있어서,
    상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하는 단계는:
    상기 수집된 제1 파라미터 및 상기 수집된 제2 파라미터를 기반으로 상기 트레이닝 모델에 대한 트레이닝 동작을 수행하는 단계를 포함하는 동작 방법.
  16. 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법에 있어서,
    초기 구동 구간에서, 상기 불휘발성 메모리 장치의 제1 메모리 영역으로부터 제1 파라미터 세트를 수집하고, 상기 불휘발성 메모리 장치의 제2 메모리 영역으로부터 제2 파라미터 세트를 수집하는 단계;
    상기 수집된 제1 파라미터 세트를 기반으로 상기 제1 메모리 영역에 대한 제1 에러 경향을 예측하고, 상기 수집된 제2 파라미터 세트를 기반으로 제2 에러 경향을 예측하는 단계;
    상기 예측된 제1 에러 경향을 기반으로 제1 신뢰성 주기를 결정하고, 상기 예측된 제2 에러 경향을 기반으로 제2 신뢰성 주기를 결정하는 단계; 및
    상기 제1 신뢰성 주기를 기반으로 상기 제1 메모리 영역에 대한 제1 신뢰성 동작을 수행하고, 상기 제2 신뢰성 주기를 기반으로 상기 제2 메모리 영역에 대한 제2 신뢰성 동작을 수행하는 단계를 포함하는 동작 방법.
  17. 제 16 항에 있어서,
    상기 제1 파라미터 세트는:
    상기 제1 메모리 영역에 대한 동작 카운트, 프로그램/소거 사이클 횟수, 데이터 유지 시간, 및 온도 중 적어도 하나를 포함하는 제1 파라미터; 및
    상기 제1 메모리 영역에서 발생한 에러 비트 수 및 상기 제1 메모리 영역에 대한 셀 카운트 값 중 적어도 하나를 포함하는 제2 파라미터를 포함하고,
    상기 제2 파라미터 세트는:
    상기 제2 메모리 영역에 대한 동작 카운트, 프로그램/소거 사이클 횟수, 데이터 유지 시간, 및 온도 중 적어도 하나를 포함하는 제3 파라미터; 및
    상기 제2 메모리 영역에서 발생한 에러 비트 수 및 상기 제2 메모리 영역에 대한 셀 카운트 값 중 적어도 하나를 포함하는 제4 파라미터를 포함하는 동작 방법.
  18. 제 16 항에 있어서,
    상기 제1 에러 경향을 예측하고, 상기 제2 에러 경향을 예측하는 단계는:
    상기 수집된 제1 파라미터 세트를 기반으로 미리 정해진 복수의 함수 모델들 중 제1 함수 모델을 선택하는 단계;
    상기 제1 함수 모델을 기반으로 상기 제1 에러 경향을 예측하는 단계;
    상기 수집된 제2 파라미터 세트를 기반으로 상기 미리 정해진 복수의 함수 모델들 중 제2 함수 모델을 선택하는 단계; 및
    상기 제2 함수 모델을 기반으로 상기 제2 에러 경향을 예측하는 단계를 포함하는 동작 방법.
  19. 제 16 항에 있어서,
    상기 제1 에러 경향을 예측하고, 상기 제2 에러 경향을 예측하는 단계는:
    상기 수집된 제1 파라미터 세트 및 트레이닝 모델을 기반으로 기계 학습을 수행하여 상기 제1 에러 경향을 예측하는 단계; 및
    상기 수집된 제2 파라미터 세트 및 상기 트레이닝 모델을 기반으로 상기 기계 학습을 수행하여 상기 제2 에러 경향을 예측하는 단계를 포함하는 동작 방법.
  20. 제 16 항에 있어서,
    상기 제1 및 제2 에러 경향들이 서로 동일하거나 또는 상기 제1 및 제2 신뢰성 주기들이 서로 동일한 경우, 상기 제1 및 제2 메모리 영역들을 하나의 그룹으로 관리하는 단계를 더 포함하는 동작 방법.


KR1020190126049A 2019-10-11 2019-10-11 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법 KR20210043778A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190126049A KR20210043778A (ko) 2019-10-11 2019-10-11 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법
US16/999,201 US11409441B2 (en) 2019-10-11 2020-08-21 Operation method of a storage controller configured to control a nonvolatile memory device
CN202011007655.3A CN112650443A (zh) 2019-10-11 2020-09-23 控制非易失性存储器装置的存储控制器的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190126049A KR20210043778A (ko) 2019-10-11 2019-10-11 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210043778A true KR20210043778A (ko) 2021-04-22

Family

ID=75346646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190126049A KR20210043778A (ko) 2019-10-11 2019-10-11 불휘발성 메모리 장치를 제어하도록 구성된 스토리지 컨트롤러의 동작 방법

Country Status (3)

Country Link
US (1) US11409441B2 (ko)
KR (1) KR20210043778A (ko)
CN (1) CN112650443A (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230036730A (ko) 2021-09-08 2023-03-15 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN114861911B (zh) * 2022-05-19 2023-04-07 北京百度网讯科技有限公司 深度学习模型的训练方法、装置、系统、设备和介质
CN116486893B (zh) * 2023-04-23 2023-12-12 珠海妙存科技有限公司 Ufs验证方法、装置、电子设备及计算机可读存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843004B1 (ko) 2006-04-14 2008-07-01 주식회사 하이닉스반도체 플래쉬 메모리 소자 및 그 구동 방법
KR100827695B1 (ko) 2006-11-03 2008-05-07 삼성전자주식회사 연약 셀을 표식자로서 활용하는 불휘발성 반도체 메모리장치
JP2009129070A (ja) 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
KR101454817B1 (ko) 2008-01-11 2014-10-30 삼성전자주식회사 반도체 메모리 장치 및 그것의 마모도 관리 방법
US8719668B2 (en) * 2011-11-01 2014-05-06 Hitachi, Ltd. Non-volatile storage system compensating prior probability for low-density parity check codes
US9569120B2 (en) * 2014-08-04 2017-02-14 Nvmdurance Limited Adaptive flash tuning
KR102233074B1 (ko) 2014-10-08 2021-03-30 삼성전자주식회사 저장 장치 및 그것의 신뢰성 검증 방법
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
US9916237B2 (en) * 2014-12-12 2018-03-13 Sandisk Technologies Llc Model based configuration parameter management
US10430112B2 (en) 2014-12-22 2019-10-01 Sandisk Technologies Llc Memory block cycling based on memory wear or data retention
KR102333746B1 (ko) 2015-09-02 2021-12-01 삼성전자주식회사 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법
KR102435873B1 (ko) * 2015-12-18 2022-08-25 삼성전자주식회사 스토리지 장치 및 그것의 리드 리클레임 방법
US10936205B2 (en) * 2017-10-05 2021-03-02 International Business Machines Corporation Techniques for retention and read-disturb aware health binning
KR102639696B1 (ko) * 2018-05-23 2024-02-23 에스케이하이닉스 주식회사 메모리 시스템, 컨트롤러 및 그 동작방법

Also Published As

Publication number Publication date
US20210109660A1 (en) 2021-04-15
US11409441B2 (en) 2022-08-09
CN112650443A (zh) 2021-04-13

Similar Documents

Publication Publication Date Title
CN107797935B (zh) 存储装置和用于非易失性存储器装置的访问方法
CN111149096B (zh) 借助于主机内存缓冲区范围的自适应装置服务质量
KR102656190B1 (ko) 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
JP6916659B2 (ja) ストレージ装置、ストレージ装置の動作方法、及びストレージ装置とホスト装置とを含むコンピューティング装置の動作方法
CN107957851B (zh) 存储装置、存储器系统、及其读取电压决定方法
KR102634700B1 (ko) 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법
KR102533207B1 (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US20160179399A1 (en) System and Method for Selecting Blocks for Garbage Collection Based on Block Health
US11409441B2 (en) Operation method of a storage controller configured to control a nonvolatile memory device
US20130173875A1 (en) Method of managing storage region of memory device, and storage apparatus using the method
CN108694989B (zh) 存储设备及其坏块指派方法
US20220051730A1 (en) Storage device performing read operation by restoring on cell count (occ) from power loss protection area of non-volatile memory
CN108399110B (zh) 高容量固态驱动器中的软信息管理
KR102599117B1 (ko) 블록들의 온 셀 카운트들을 모니터링하고 저장하는 스토리지 장치 및 그것의 동작 방법
US11231883B1 (en) Detecting last page written in multi-plane non-volatile memory
US11016889B1 (en) Storage device with enhanced time to ready performance
US11922019B2 (en) Storage device read-disturb-based block read temperature utilization system
EP4053704B1 (en) Storage controller redirecting write operation and operating method thereof
US11748277B2 (en) Client input/output (I/O) access rate variation compensation
US20140304455A1 (en) Data management in a storage system
US11908531B2 (en) Detecting and managing under-program failures in non-volatile memory
KR20240033792A (ko) 읽기 정보 및 디코딩 정보에 기초하여 연판정 디코딩을 위한 읽기 레벨을 생성하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법
CN111708716A (zh) 数据存储设备、具有数据存储设备的计算设备和操作方法
US11983431B2 (en) Read-disturb-based read temperature time-based attenuation system
US11983424B2 (en) Read disturb information isolation system

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal