KR20200143107A - 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 - Google Patents

스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 Download PDF

Info

Publication number
KR20200143107A
KR20200143107A KR1020190070989A KR20190070989A KR20200143107A KR 20200143107 A KR20200143107 A KR 20200143107A KR 1020190070989 A KR1020190070989 A KR 1020190070989A KR 20190070989 A KR20190070989 A KR 20190070989A KR 20200143107 A KR20200143107 A KR 20200143107A
Authority
KR
South Korea
Prior art keywords
memory
nonvolatile
nonvolatile memories
temperature information
temperature
Prior art date
Application number
KR1020190070989A
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 KR1020190070989A priority Critical patent/KR20200143107A/ko
Priority to US16/729,743 priority patent/US11232008B2/en
Priority to CN202010439690.6A priority patent/CN112086112A/zh
Publication of KR20200143107A publication Critical patent/KR20200143107A/ko
Priority to US17/563,662 priority patent/US11748223B2/en

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7206Reconfiguration of flash memory system

Abstract

스토리지 장치의 구동 방법에서, 스토리지 장치는 각각 온도 센서를 구비하는 복수의 비휘발성 메모리들을 포함한다. 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인한다. 온도 체크 주기에 도달한 경우에, 온도 센서를 이용하여 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링한다. 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득한다. 모니터링된 온도 정보 및 획득된 방치 시간 정보 중 적어도 하나에 기초하여 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경한다.

Description

스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치{METHOD OF OPERATING STORAGE DEVICE AND STORAGE DEVICE PERFORMING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 스토리지 장치의 구동 방법 및 상기 구동 방법을 수행하는 스토리지 장치에 관한 것이다.
최근에는 메모리 장치를 이용하는 SSD(solid state drive)와 같은 스토리지 장치가 널리 사용되고 있다. 상기와 같은 스토리지 장치는 기계적인 구동부가 없어 안정성 및 내구성이 뛰어나며 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 최근 들어 노트북과 같은 전자 시스템뿐만 아니라, 자동차, 항공기, 드론(drone) 등과 같은 다양한 종류의 시스템에 전자 회로가 적용됨에 따라, 스토리지 장치 역시 다양한 종류의 시스템에서 사용되고 있다.
상기와 같은 스토리지 장치는 비휘발성 메모리 장치를 포함할 수 있다. 스토리지 장치의 사용 시간이 증가함에 따라, 스토리지 장치에 포함되는 플래시 메모리와 같은 비휘발성 메모리 장치는 온도의 영향을 받아 특성이 변할 수 있으며, 이 경우 오류 발생 빈도가 증가한다는 문제점이 있다.
본 발명의 일 목적은 온도 모니터링을 통해 성능 및 신뢰성이 향상될 수 있는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명의 다른 목적은 온도 모니터링을 통해 성능 및 신뢰성이 향상될 수 있는 스토리지 장치를 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 스토리지 장치는 각각 온도 센서를 구비하는 복수의 비휘발성 메모리들을 포함한다. 상기 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인한다. 상기 온도 체크 주기에 도달한 경우에, 상기 온도 센서를 이용하여 상기 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링한다. 상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 상기 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득한다. 상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 스토리지 장치는 복수의 비휘발성 메모리들 및 스토리지 컨트롤러를 포함한다. 상기 복수의 비휘발성 메모리들은 각각 온도 센서를 구비한다. 상기 스토리지 컨트롤러는 상기 복수의 비휘발성 메모리들의 동작을 제어하고, 상기 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인하고, 상기 온도 체크 주기에 도달한 경우에 상기 온도 센서를 이용하여 상기 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링하고, 상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 상기 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득하며, 상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경한다.
상기와 같은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법 및 스토리지 장치에서, 복수의 비휘발성 메모리들 각각은 온도 센서를 포함하여 구현되며, 스토리지 컨트롤러는 외부 커맨드 없이 온도 센서를 이용하여 복수의 비휘발성 메모리들 각각의 온도 정보를 주기적으로 모니터링할 수 있다. 또한, 모니터링된 온도 정보에 기초하여 복수의 비휘발성 메모리들 각각에 대한 구동 파라미터를 적응적으로 변경함으로써, 스토리지 장치의 신뢰성 및 성능이 향상될 수 있다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 5, 6, 7, 8, 9, 10, 11 및 12는 도 1의 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다.
도 13은 본 발명의 실시예들에 따른 스토리지 장치에서 스토리지 컨트롤러 및 비휘발성 메모리들이 배치되는 일 예를 나타내는 평면도이다.
도 14, 15, 16 및 17은 도 1의 온도 정보를 내부적으로 모니터링하는 단계 및 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다.
도 18은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치에서 스토리지 컨트롤러 및 비휘발성 메모리들이 배치되는 다른 예를 나타내는 평면도이다.
도 20, 21, 22 및 23은 도 18의 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다.
도 24는 본 발명의 실시예들에 따른 스토리지 장치가 스토리지 서버에 응용된 예를 나타내는 도면이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치는 데이터를 저장하는 복수의 비휘발성 메모리들 및 상기 복수의 비휘발성 메모리들의 동작을 제어하는 스토리지 컨트롤러를 포함한다. 또한, 상기 복수의 비휘발성 메모리들 각각은 온도 센서를 포함하여 구현된다. 상기 스토리지 장치 및 이를 포함하는 스토리지 시스템의 구조에 대해서는 도 2 등을 참조하여 후술하도록 한다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 상기 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인한다(단계 S100). 예를 들어, 상기 온도 체크 주기는 상기 스토리지 장치의 제조 시에 설정되어 저장되며, 외부로부터 수신되는 사용자 설정 신호에 기초하여 변경될 수 있다.
상기 온도 체크 주기에 도달하지 않은 경우에(단계 S100: 아니오), 상기 스토리지 장치는 상기 온도 체크 주기에 도달할 때까지 대기할 수 있다(단계 S150). 일 실시예에서, 상기 스토리지 장치는 외부의 호스트로부터 수신되는 커맨드에 기초하여 프로그램/소거/독출 동작을 수행하거나 커맨드 없이 자체적으로 가비지 콜렉션(garbage collection) 동작을 수행하는 등 스토리지 장치의 일반적인 동작들 중 적어도 하나를 수행하면서 대기할 수 있다. 다른 실시예에서, 상기 스토리지 장치는 상기 일반적인 동작들의 수행 없이 대기할 수 있다.
상기 온도 체크 주기에 도달한 경우에(단계 S100: 예), 상기 온도 센서를 이용하여 상기 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링한다(단계 S200). 일 실시예에서, 상기 복수의 비휘발성 메모리들 모두에 대한 온도 정보를 각각 모니터링할 수 있다. 다른 실시예에서, 도 14 등을 참조하여 후술하는 것처럼, 상기 복수의 비휘발성 메모리들 일부에 대한 온도 정보만을 모니터링할 수 있다.
상기 온도 정보를 내부적으로 모니터링한다는 것은, 상기 외부의 호스트로부터 수신되는 커맨드 없이 상기 스토리지 컨트롤러에 의해 자체적으로 상기 온도 정보를 모니터링하는 것을 나타낼 수 있다. 외부 커맨드 없이 상기 온도 정보를 모니터링함으로써, 상기 스토리지 장치의 성능 열화를 방지할 수 있다.
상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 상기 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득한다(단계 S300). 예를 들어, 상기 방치 시간 정보는 하기의 [수학식 1]에 기초하여 획득될 수 있다.
[수학식 1]
Tu = ∑ [Tcycle * TAF]
상기의 [수학식 1]에서, Tu는 상기 방치 시간 정보를 나타내고, Tcycle은 상기 온도 체크 주기를 나타내며, TAF는 온도 가속 팩터(Temperature Acceleration Factor)를 나타낸다. 예를 들어, TAF는 아레니우스 방정식(Arrhenius equation)에 기초하여 획득되며, 이는 스토리지 장치에 기술 분야에서 널리 알려진 사항이므로 상세한 설명은 생략하도록 한다. 다만, 본 발명은 이에 한정되지 않으며, TAF는 다양한 알고리즘들 중 적어도 하나에 기초하여 획득될 수 있다.
상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로(adaptive) 변경한다(단계 S400). 예를 들어, 온도 및 방치 시간에 최적화된 구동 파라미터를 설정할 수 있다. 일 실시예에서, 단계 S200에서 상기 복수의 비휘발성 메모리들 모두에 대한 온도 정보를 각각 모니터링한 경우에, 각 비휘발성 메모리는 자기 자신의 온도 정보에 기초하여 구동 파라미터를 변경할 수 있다. 다른 실시예에서, 단계 S200에서 상기 복수의 비휘발성 메모리들 일부에 대한 온도 정보만을 모니터링한 경우에, 일부 비휘발성 메모리는 자기 자신의 온도 정보에 기초하여 구동 파라미터를 변경하고 나머지 비휘발성 메모리는 자기 자신이 아닌 다른 비휘발성 메모리의 온도 정보 및 미리 정의된 테이블(Pre Defined Table; PDT)에 기초하여 구동 파라미터를 변경할 수 있다.
일 실시예에서, 도 5 등을 참조하여 후술하는 것처럼, 상기 복수의 구동 파라미터들은 상기 복수의 비휘발성 메모리들의 방어 코드와 관련된 파라미터들을 포함할 수 있다. 일 실시예에서, 도 9 등을 참조하여 후술하는 것처럼, 상기 복수의 구동 파라미터들은 상기 복수의 비휘발성 메모리들의 일반적인 동작들(예를 들어, 프로그램/소거 동작 등)과 관련된 파라미터들을 포함할 수 있다.
한편, 상세하게 도시하지는 않았으나, 단계 S400에서 구동 파라미터가 변경된 이후에, 상기 스토리지 장치는 변경된 구동 파라미터에 기초하여 상기 외부의 호스트로부터의 요청에 의해 및/또는 요청 없이 일반적인 동작들(예를 들어, 상술한 프로그램/소거/독출 동작, 가비지 컬렉션 동작 등) 중 적어도 하나를 수행할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 스토리지 장치에 포함되는 복수의 비휘발성 메모리들 각각은 온도 센서를 포함하여 구현되며, 스토리지 장치에 포함되는 스토리지 컨트롤러는 외부 커맨드 없이 온도 센서를 이용하여 복수의 비휘발성 메모리들 각각의 온도 정보를 주기적으로 모니터링할 수 있다. 또한, 모니터링된 온도 정보에 기초하여 복수의 비휘발성 메모리들 각각에 대한 구동 파라미터를 적응적으로 변경함으로써, 스토리지 장치의 신뢰성 및 성능이 향상될 수 있다.
도 2는 본 발명의 실시예들에 따른 스토리지 장치 및 이를 포함하는 스토리지 시스템을 나타내는 블록도이다.
도 2를 참조하면, 스토리지 시스템(100)은 호스트(200) 및 스토리지 장치(300)를 포함한다.
호스트(200)는 스토리지 시스템(100)의 전반적인 동작을 제어한다. 예를 들어, 상세하게 도시하지는 않았으나, 호스트(200)는 호스트 프로세서 및 호스트 메모리를 포함할 수 있다. 상기 호스트 프로세서는 호스트(200)의 동작을 제어하고, 예를 들어 운영 체제(Operating System; OS)를 실행할 수 있다. 상기 호스트 메모리는 상기 호스트 프로세서에 의해 실행 및 처리되는 명령어(instruction) 및 데이터를 저장할 수 있다. 예를 들어, 상기 호스트 프로세서에 의해 실행되는 상기 운영 체제는 파일 관리를 위한 파일 시스템(file system), 및 스토리지 장치(300)를 포함하는 주변 기기를 상기 운영 체제 레벨에서 제어하기 위한 장치 드라이버(device driver)를 포함할 수 있다.
스토리지 장치(300)는 호스트(200)에 의해 액세스된다. 스토리지 장치(300)는 스토리지 컨트롤러(310), 복수의 비휘발성 메모리들(320a, 320b, 320c) 및 버퍼 메모리(330)를 포함할 수 있다.
스토리지 컨트롤러(310)는 스토리지 장치(300)의 동작을 제어할 수 있다. 예를 들어, 스토리지 컨트롤러(310)는 호스트(200)로부터 수신된 커맨드 및 데이터에 기초하여 복수의 비휘발성 메모리들(320a, 320b, 320c)의 동작을 제어할 수 있다.
스토리지 컨트롤러(310)는 도 1을 참조하여 상술한 방법을 수행한다. 예를 들어, 스토리지 컨트롤러(310)는 복수의 비휘발성 메모리들(320a, 320b, 320c)에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인하고, 상기 온도 체크 주기에 도달한 경우에 복수의 비휘발성 메모리들(320a, 320b, 320c) 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링하고, 상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 복수의 비휘발성 메모리들(320a, 320b, 320c)에 대한 방치 시간 정보를 획득하며, 상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 스토리지 장치가 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경할 수 있다. 다시 말하면, 스토리지 컨트롤러(310)는 호스트(200)의 제어와 독립적으로 상기 온도 정보를 모니터링하고 이를 기초로 최적의 구동 파라미터를 설정할 수 있다. 또한, 스토리지 컨트롤러(310)는 도 18을 참조하여 후술하는 방법을 수행할 수도 있다.
스토리지 컨트롤러(310)는 상기 온도 체크 주기에 도달하였는지 판단하기 위한 주기 측정부(311)를 포함할 수 있다. 예를 들어, 주기 측정부(311)는 타이머(timer) 및 카운터(counter) 중 적어도 하나를 포함하여 구현될 수 있다. 도시하지는 않았으나, 스토리지 컨트롤러(310)는 상기 외부로부터 수신되는 사용자 설정 신호에 기초하여 상기 온도 체크 주기를 변경할 수 있다.
복수의 비휘발성 메모리들(320a, 320b, 320c)은 복수의 데이터들을 저장할 수 있다. 예를 들어, 복수의 비휘발성 메모리들(320a, 320b, 320c)은 메타 데이터들 및 그 밖의 사용자 데이터들을 저장할 수 있다.
복수의 비휘발성 메모리들(320a, 320b, 320c)은 상기 온도 정보를 모니터링하기 위한 복수의 온도 센서들(322a, 322b, 322c)을 포함할 수 있다. 예를 들어, 하나의 비휘발성 메모리는 하나의 온도 센서를 포함하여 구현될 수 있다. 예를 들어, 복수의 온도 센서들(322a, 322b, 322c) 각각은 온-칩 금속 저항을 포함하는 온-칩 센서(또는 온-다이 센서)의 형태로 구현되며, 이에 따라 상대적으로 작고 간단한 구조를 가지며 상대적으로 적은 제조 비용으로 구현될 수 있다.
하나의 비휘발성 메모리는 하나의 반도체 다이(die)에 형성되며, 하나의 비휘발성 메모리 칩(chip)을 형성할 수 있다. 도 13 등을 참조하여 후술하는 것처럼, 스토리지 장치(300)는 복수의 메모리 패키지들을 포함하고, 상기 복수의 메모리 패키지들은 각각 복수의 비휘발성 메모리들(320a, 320b, 320c) 중 적어도 하나를 포함할 수 있다. 다시 말하면, 복수의 비휘발성 메모리들(320a, 320b, 320c)은 각각 상기 복수의 메모리 패키지들 중 하나에 포함될 수 있다.
일 실시예에서, 복수의 비휘발성 메모리들(320a, 320b, 320c) 각각은 NAND 플래시 메모리(Flash Memory)를 포함할 수 있다. 다른 실시예에서, 복수의 비휘발성 메모리들(320a, 320b, 320c) 각각은 EEPROM(Electrically Erasable Programmable Read-Only Memory), PRAM(Phase Change Random Access Memory), RRAM(Resistance Random Access Memory), NFGM(Nano Floating Gate Memory), PoRAM(Polymer Random Access Memory), MRAM(Magnetic Random Access Memory), FRAM(Ferroelectric Random Access Memory) 또는 이와 유사한 메모리를 포함할 수 있다.
일 실시예에서, 비휘발성 메모리 별로 온도 정보를 주기적으로 모니터링하여 칩 또는 다이 별로 저장/판단할 수 있다. 예를 들어, 저장 장치(300)의 실행(runtime) 중에 온도 정보를 주기적으로 확인하고, 저장 장치(300)의 실행 중에 주기적으로 확인한 온도를 TAF(온도 가속 계산식) 적용하여 환산하며, 저장 장치(300)의 파워 오프(power off) 시에 누적 온도 정보를 저장할 수 있다.
일 실시예에서, 특정 비휘발성 메모리의 온도가 평균 온도 대비 차이가 클 때, 해당 비휘발성 메모리의 온도 정보를 적절하게 처리할 수 있다. 예를 들어, 동일 메모리 패키지 내 특정 비휘발성 메모리에서만 온도 정보가 상이한 경우, 그 정도에 따라 해당 정보를 예외 처리하고, 예외 처리한 비휘발성 메모리의 온도 정보는 이후에 확인하지 않을 수 있다.
버퍼 메모리(330)는 스토리지 컨트롤러(310)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있고, 복수의 비휘발성 메모리들(320a, 320b, 320c)에 저장되어 있거나 저장하고자 하는 데이터를 임시로 저장할 수 있다. 예를 들어, 버퍼 메모리(330)는 DRAM(Dynamic Random Access Memory) 등과 같은 휘발성 메모리를 포함할 수 있다.
일 실시예에서, 스토리지 장치(300)는 SSD(Solid State Drive)일 수 있다. 다른 실시예에서, 스토리지 장치(300)는 UFS(Universal Flash Storage), MMC(Multi Media Card), eMMC(embedded MMC), SD(Secure Digital) 카드, 마이크로 SD 카드, 메모리 스틱(memory stick), 칩 카드(chip card), USB(Universal Serial Bus) 카드, 스마트 카드(smart card), CF(Compact Flash) 카드 또는 이와 유사한 형태로 구현될 수 있다.
일 실시예에서, 스토리지 장치(300)는 SATA(Serial Advanced Technology Attachment) 버스, SCSI(Small Computer Small Interface) 버스, NVMe(Non-Volatile Memory Express) 버스, SAS(Serial Attached SCSI) 버스, UFS, eMMC 등의 버스를 포함하는 블록 액세서블 인터페이스(block accessible interface)를 통해 호스트(200)와 연결되고, 호스트(200)에 의해 상기 블록 액세서블 인터페이스를 통하여 블록 단위로 액세스될 수 있다.
일 실시예에서, 스토리지 시스템(100)은 PC(Personal Computer), 서버 컴퓨터(server computer), 워크스테이션(workstation), 디지털 TV(digital television), 셋-탑 박스(set-top box), 네비게이션 시스템 등의 임의의 컴퓨팅 시스템일 수 있다. 다른 실시예에서, 스토리지 시스템(100)은 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC(Personal Computer), 노트북(laptop computer), PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 카메라(digital camera), 캠코더(camcorder), 휴대용 게임 콘솔(portable game console), 음악 재생기(music player), 동영상 재생기(video player), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기 등의 임의의 모바일 시스템일 수 있다.
도 3은 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 스토리지 컨트롤러의 일 예를 나타내는 블록도이다.
도 3을 참조하면, 스토리지 컨트롤러(400)는 적어도 하나의 프로세서(410), 메모리(420), 주기 측정부(430), 호스트 인터페이스(440), ECC(Error Correction Code) 블록(450) 및 메모리 인터페이스(460)를 포함할 수 있다.
프로세서(410)는 호스트(도 2의 200)로부터 호스트 인터페이스(440)를 통하여 수신된 커맨드에 응답하여 스토리지 컨트롤러(400)의 동작을 제어할 수 있다. 예를 들어, 프로세서(410)는 스토리지 장치(도 2의 300)를 구동하기 위한 펌웨어(Firmware)를 채용하여 각각의 구성들을 제어할 수 있다.
메모리(420)는 프로세서(410)에 의해 실행 및 처리되는 명령어 및 데이터를 저장할 수 있다. 예를 들어, 메모리(420)는 SRAM(Static Random Access Memory), 캐시(cache) 메모리 등과 같은 상대적으로 작은 용량 및 빠른 속도를 가지는 휘발성 메모리로 구현될 수 있다.
상기 온도 체크 주기에 도달하였는지 판단하기 위한 주기 측정부(430)는 도 2의 주기 측정부(311)와 실질적으로 동일할 수 있다. 실시예에 따라서, 주기 측정부(430)의 일부 또는 전부는 하드웨어의 형태로 구현될 수도 있고 소프트웨어(즉, 프로그램)의 형태로 구현될 수도 있다.
에러 정정을 위한 ECC 블록(450)은 BCH(Bose-Chaudhuri-Hocquenghem) 코드, LDPC(Low Density Parity Check) 코드, 터보 코드(Turbo Code), 리드-솔로몬 코드(Reed-Solomon Code), 콘볼루션 코드(Convolution Code), RSC(Recursive Systematic Code), TCM(Trellis-Coded Modulation), BCM(Block Coded Modulation) 등의 부호화된 변조(Coded Modulation), 또는 다른 에러 정정 코드를 이용하여 ECC 인코딩 및 ECC 디코딩을 수행할 수 있다.
호스트 인터페이스(440)는 호스트(200)와 스토리지 장치(300) 사이의 물리적 연결을 제공할 수 있다. 즉, 호스트 인터페이스(440)는 호스트(200)의 버스 포맷(bus format)에 대응하여 스토리지 장치(300)와의 인터페이싱을 제공할 수 있다. 일 실시예에서, 호스트(200)의 버스 포맷은 SCSI 또는 SAS일 수 있다. 다른 실시예에서, 호스트(200)의 버스 포맷은 USB, PCIe(peripheral component interconnect express), ATA, PATA, SATA, NVMe 등일 수 있다.
메모리 인터페이스(460)는 비휘발성 메모리들(도 2의 320a, 320b, 320c)과 데이터를 교환할 수 있다. 메모리 인터페이스(460)는 데이터를 비휘발성 메모리들(320a, 320b, 320c)에 전송할 수 있고, 비휘발성 메모리들(320a, 320b, 320c)로부터 독출된 데이터를 수신할 수 있다. 일 실시예에서, 메모리 인터페이스(460)는 비휘발성 메모리들(320a, 320b, 320c)과 하나의 채널을 통하여 연결될 수 있다. 다른 실시예에서, 메모리 인터페이스(460)는 비휘발성 메모리들(320a, 320b, 320c)과 2 이상의 채널들을 통하여 연결될 수 있다.
도 4는 본 발명의 실시예들에 따른 스토리지 장치에 포함되는 비휘발성 메모리의 일 예를 나타내는 블록도이다.
도 4를 참조하면, 비휘발성 메모리(500)는 메모리 셀 어레이(510), 로우 디코더(520), 페이지 버퍼 회로(530), 데이터 입출력 회로(540), 전압 발생기(550) 및 제어 회로(560)를 포함한다.
메모리 셀 어레이(510)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 로우 디코더(520)와 연결된다. 또한, 메모리 셀 어레이(510)는 복수의 비트 라인들(BL)을 통해 페이지 버퍼 회로(530)와 연결된다. 메모리 셀 어레이(510)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)에 연결되는 복수의 메모리 셀들을 포함할 수 있다. 메모리 셀 어레이(510)는 각각 메모리 셀들을 포함하는 복수의 메모리 블록들(BLK1, BLK2, ..., BLKz)로 구분될 수 있다. 또한, 복수의 메모리 블록들(BLK1, BLK2, ..., BLKz) 각각은 복수의 페이지들로 구분될 수 있다.
실시예에 따라서, 메모리 셀 어레이(510)는 2차원 어레이(array) 구조 또는 3차원 수직 어레이 구조로 형성될 수 있다. 수직형(또는 3차원) 메모리 셀 어레이에 대한 자세한 설명은 본 명세서에 참고 문헌으로 결합된 미국 등록 번호 7,679,133; 8,553,466; 8,654,587; 8,559,235 및 미국 공개 번호 2011/0233648에 기술되어 있다.
제어 회로(560)는 외부(예를 들어, 도 2의 호스트(200) 및/또는 스토리지 컨트롤러(310))로부터 커맨드(CMD) 및 어드레스(ADDR)를 수신하고, 커맨드(CMD) 및 어드레스(ADDR)에 기초하여 비휘발성 메모리(500)의 소거 루프, 프로그램 루프 및 독출 동작을 제어한다. 여기서 프로그램 루프는 프로그램 동작과 프로그램 검증 동작을 포함하고, 소거 루프는 소거 동작과 소거 검증 동작을 포함할 수 있다. 여기서 독출 동작은 노멀 독출 동작과 데이터 리커버리 독출 동작을 포함할 수 있다.
예를 들어, 제어 회로(560)는 커맨드(CMD)에 기초하여 전압 발생기(550)를 제어하기 위한 제어 신호들(CON) 및 페이지 버퍼 회로(530)를 제어하기 위한 제어 신호들(PBC)을 발생하고, 어드레스(ADDR)에 기초하여 로우 어드레스(R_ADDR) 및 컬럼 어드레스(C_ADDR)를 발생할 수 있다. 제어 회로(560)는 로우 어드레스(R_ADDR)를 로우 디코더(520)에 제공하고, 컬럼 어드레스(C_ADDR)를 데이터 입출력 회로(540)에 제공할 수 있다.
또한, 제어 회로(560)는 스토리지 컨트롤러(310)의 제어에 의해 구동 파라미터를 변경할 수 있다. 예를 들어, 제어 회로(560)는 스토리지 컨트롤러(310)로부터 온도 값을 수신하며, 상기 수신된 온도 값에 기초하여 구동 파라미터를 자체적으로 변경할 수 있다. 다른 예에서, 제어 회로(560)는 스토리지 컨트롤러(310)로부터 변경된 구동 파라미터와 관련된 값(예를 들어, 변경된 전압 레벨, 주기 등)을 수신하며, 상기 수신된 값에 기초하여 비휘발성 메모리(500)의 구성요소들을 제어할 수 있다.
로우 디코더(520)는 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)을 통해 메모리 셀 어레이(510)와 연결된다.
예를 들어, 소거/프로그램/독출 동작 시에, 로우 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 워드 라인들(WL) 중 적어도 하나를 선택 워드 라인으로 결정하고, 복수의 워드 라인들(WL) 중에서 상기 선택 워드 라인을 제외한 나머지 워드 라인들을 비선택 워드 라인들로 결정할 수 있다.
또한, 소거/프로그램/독출 동작 시에, 로우 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 스트링 선택 라인들(SSL) 중 적어도 하나를 선택 스트링 선택 라인으로 결정하고, 나머지 스트링 선택 라인들을 비선택 스트링 선택 라인들로 결정할 수 있다.
또한, 소거/프로그램/독출 동작 시에, 로우 디코더(520)는 로우 어드레스(R_ADDR)에 응답하여, 복수의 접지 선택 라인들(GSL) 중 적어도 하나를 선택 접지 선택 라인으로 결정하고, 나머지 접지 선택 라인들을 비선택 접지 선택 라인들로 결정할 수 있다.
전압 발생기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 비휘발성 메모리 장치(500)의 동작에 필요한 전압들(VS)을 발생할 수 있다. 전압들(VS)은 로우 디코더(520)를 통해 복수의 스트링 선택 라인들(SSL), 복수의 워드 라인들(WL) 및 복수의 접지 선택 라인들(GSL)에 인가될 수 있다. 또한, 전압 발생기(550)는 전원 전압(PWR) 및 제어 신호들(CON)에 기초하여 소거 동작에 필요한 소거 전압(VERS)을 발생할 수 있다. 소거 전압(VERS)은 메모리 셀 어레이(510)에 직접 인가되거나 비트 라인(BL)을 통해 인가될 수 있다.
예를 들어, 소거 동작 시에, 전압 발생기(550)는 하나의 메모리 블록의 공통 소스 라인 및/또는 비트 라인(BL)에 소거 전압(VERS)을 인가하고, 로우 디코더(520)를 통해 하나의 메모리 블록의 모든 워드 라인들 또는 일부의 서브 블록에 해당하는 워드 라인들에 소거 허용 전압(예를 들어, 접지 전압)을 인가할 수 있다. 소거 검증 동작 시에, 전압 발생기(550)는 하나의 메모리 블록의 모든 워드 라인들에 소거 검증 전압을 인가하거나 워드 라인 단위로 소거 검증 전압을 인가할 수 있다.
예를 들어, 프로그램 동작 시에, 전압 발생기(550)는 로우 디코더(520)를 통해 상기 선택 워드 라인에 프로그램 전압을 인가하고, 상기 비선택 워드 라인들에는 프로그램 금지 전압을 인가할 수 있다. 프로그램 검증 동작 시에, 전압 발생기(550)는 로우 디코더(520)를 통해 상기 선택 워드 라인에 프로그램 검증 전압을 인가하고, 상기 비선택 워드 라인들에는 검증 패스 전압을 인가할 수 있다.
또한, 노멀 독출 동작 시에, 전압 발생기(550)는 로우 디코더(520)를 통해 상기 선택 워드 라인에 독출 전압을 인가하고, 상기 비선택 워드 라인들에는 독출 패스 전압을 인가할 수 있다. 또한 데이터 리커버리 독출 동작 시에, 전압 발생기(550)는 로우 디코더(520)를 통해 상기 선택 워드 라인에 인접한 워드 라인에 독출 전압을 인가하고, 상기 선택 워드 라인에는 리커버리 독출 전압을 인가할 수 있다.
페이지 버퍼 회로(530)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(510)와 연결될 수 있다. 페이지 버퍼 회로(530)는 복수의 페이지 버퍼들을 포함할 수 있다. 일 실시예에서, 하나의 페이지 버퍼에 하나의 비트 라인이 연결될 수 있다. 다른 실시예에서, 하나의 페이지 버퍼에 두 개 이상의 비트 라인들이 연결될 수 있다.
페이지 버퍼 회로(530)는 메모리 셀 어레이(510)에 프로그램 될 기입 데이터(DAT)를 저장하거나 혹은 메모리 셀 어레이(510)로부터 감지된 독출 데이터(DAT)를 저장할 수 있다. 즉, 페이지 버퍼 회로(530)는 비휘발성 메모리 장치(500)의 동작 모드에 따라 기입 드라이버로서 또는 감지 증폭기로서 동작할 수 있다.
데이터 입출력 회로(540)는 데이터 라인들(DL)을 통해 페이지 버퍼 회로(530)와 연결될 수 있다. 데이터 입출력 회로(540)는 컬럼 어드레스(C_ADDR)에 응답하여, 기입 데이터(DAT)를 페이지 버퍼 회로(530)를 거쳐서 메모리 셀 어레이(510)에 제공하거나 혹은 메모리 셀 어레이(510)로부터 페이지 버퍼 회로(530)를 거쳐서 출력되는 독출 데이터(DAT)를 외부에 제공할 수 있다.
상기 온도 정보를 모니터링하기 위한 온도 센서(570)는 도 2의 복수의 온도 센서들(322a, 322b, 322c)과 실질적으로 동일할 수 있다.
도 5, 6, 7, 8, 9, 10, 11 및 12는 도 1의 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다.
도 5, 6 및 7은 상기 복수의 구동 파라미터들이 상기 복수의 비휘발성 메모리들의 방어 코드 중 예방(prevention) 코드와 관련되는 실시예들을 나타낸다. 도 8은 상기 복수의 구동 파라미터들이 상기 복수의 비휘발성 메모리들의 방어 코드 중 복구(recovery) 코드와 관련되는 실시예를 나타낸다. 도 9, 10, 11 및 12는 상기 복수의 구동 파라미터들이 상기 복수의 비휘발성 메모리들의 일반적인 동작들(예를 들어, 프로그램/소거 동작 등)과 관련되는 실시예들을 나타낸다.
도 5를 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 제1 온도 정보 및/또는 제1 방치 시간 정보가 제1 기준 범위 이내인 경우에(단계 S410: 예), 상기 제1 비휘발성 메모리에 대한 순찰 독출(patrol read) 동작과 관련된 순찰 독출 주기를 유지할 수 있다(단계 S411). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제1 기준 범위를 벗어나는 경우에(단계 S410: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 순찰 독출 주기를 변경할 수 있다(단계 S412).
상기 순찰 독출 동작은 비휘발성 메모리의 첫 번째 메모리 블록부터 마지막 블록까지 미리 정해진 시간 간격으로 순차적으로 독출하여 저장된 데이터의 이상 여부를 확인하는 동작이며, 이 때 첫 번째 메모리 블록의 독출 시점부터 마지막 메모리 블록의 독출 시점까지가 상기 순찰 독출 주기를 나타낼 수 있다. 상기 순찰 독출 동작은 background scan reclaim이라 부를 수 있다.
일 실시예에서, 상기 제1 비휘발성 메모리의 온도가 높아질수록 상기 순찰 독출 주기는 감소하고, 상기 제1 비휘발성 메모리의 온도가 낮아질수록 상기 순찰 독출 주기는 증가할 수 있다. 다른 실시예에서, 상기 제1 비휘발성 메모리의 방치 시간이 증가할수록 상기 순찰 독출 주기는 감소하고, 상기 제1 비휘발성 메모리의 방치 시간이 감소할수록 상기 순찰 독출 주기는 증가할 수 있다.
도 6을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 제1 비휘발성 메모리에 대한 상기 제1 온도 정보 및/또는 상기 제1 방치 시간 정보가 제2 기준 범위 이내인 경우에(단계 S420: 예), 상기 제1 비휘발성 메모리에 대한 리프레쉬(refresh) 동작과 관련된 리프레쉬 주기를 유지할 수 있다(단계 S421). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제2 기준 범위를 벗어나는 경우에(단계 S420: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 리프레쉬 주기를 변경할 수 있다(단계 S422). 예를 들어, 상기 제2 기준 범위는 상기 제1 기준 범위와 동일할 수도 있고 서로 다를 수도 있다.
상기 리프레쉬 동작은 저장된 데이터가 손상되기 이전에 다시 프로그램하는 동작이며, 이 때 데이터의 최초 프로그램 시점부터 리프로그램 시점까지가 상기 리프레쉬 주기를 나타낼 수 있다. 상기 리프레쉬 동작은 방치 시간에 따른 reclaim이라 부를 수 있다.
일 실시예에서, 상기 제1 비휘발성 메모리의 온도가 높아질수록 상기 리프레쉬 주기는 감소하고, 상기 제1 비휘발성 메모리의 온도가 낮아질수록 상기 리프레쉬 주기는 증가할 수 있다. 다른 실시예에서, 상기 제1 비휘발성 메모리의 방치 시간이 증가할수록 상기 리프레쉬 주기는 감소하고, 상기 제1 비휘발성 메모리의 방치 시간이 감소할수록 상기 리프레쉬 주기는 증가할 수 있다.
도 7을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 제1 비휘발성 메모리에 대한 상기 제1 온도 정보 및/또는 상기 제1 방치 시간 정보가 제3 기준 범위 이내인 경우에(단계 S430: 예), 상기 제1 비휘발성 메모리에 대한 독출 동작과 관련된 독출 전압의 레벨을 유지할 수 있다(단계 S431). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제3 기준 범위를 벗어나는 경우에(단계 S430: 아니오), 온도 범프 테이블(temp bump table)에 기초하여 상기 제1 비휘발성 메모리에 대한 상기 독출 전압의 레벨을 변경할 수 있다(단계 S432). 예를 들어, 상기 제3 기준 범위는 상기 제1 및 제2 기준 범위들 중 하나와 동일할 수도 있고 상기 제1 및 제2 기준 범위들 모두와 서로 다를 수도 있다.
상기 온도 범프 테이블은 온도와 독출 전압의 레벨 사이의 관계를 나타내며, 따라서 상기 제1 비휘발성 메모리의 온도에 따른 독출 전압의 최적의 레벨을 결정할 수 있다. 예를 들어, 상대적으로 고온 환경에서 프로그램된 메모리 블록의 데이터를 상대적으로 저온 환경에서 독출하고자 하는 경우에, 상기 온도 범프 테이블에 기초하여 상기 독출 전압의 레벨은 감소할 수 있다.
도 8을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 제1 비휘발성 메모리에 대한 상기 제1 온도 정보 및/또는 상기 제1 방치 시간 정보가 제4 기준 범위 이내인 경우에(단계 S440: 예), 상기 제1 비휘발성 메모리에 대한 복수의 복구 알고리즘들의 적용 순서를 유지할 수 있다(단계 S441). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제4 기준 범위를 벗어나는 경우에(단계 S440: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 복수의 복구 알고리즘들의 적용 순서를 변경할 수 있다(단계 S442). 예를 들어, 상기 제4 기준 범위는 상기 제1, 제2 및 제3 기준 범위들 중 하나와 동일할 수도 있고 상기 제1, 제2 및 제3 기준 범위들 모두와 서로 다를 수도 있다.
상기 복수의 복구 알고리즘들은 도 3을 참조하여 상술한 다양한 에러 정정 코드들을 포함할 수도 있고, 독출 전압의 레벨을 변경하기 위한 다양한 코드들을 포함할 수도 있다. 예를 들어, 동작 초기에 3개의 알고리즘들이 1-2-3의 순서로 적용되도록 설정되었다면, 이후에 단계 S442에서 상기 3개의 알고리즘들이 2-1-3의 순서로 적용되도록 설정 변경될 수 있다.
일 실시예에서, 도 4를 참조하여 상술한 것처럼 상기 제1 비휘발성 메모리는 복수의 메모리 블록들을 포함하며, 상기 복수의 메모리 블록들에 대해 상기 복수의 복구 알고리즘들의 적용 순서를 다르게 설정할 수 있다. 다른 실시예에서, 상기 복수의 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 복수의 페이지들에 대해 상기 복수의 복구 알고리즘들의 적용 순서를 다르게 설정할 수 있다. 다시 말하면, 메모리 블록 단위 및/또는 페이지 단위로 상기 복수의 복구 알고리즘들의 적용 순서를 다르게 설정할 수도 있다.
도 9를 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 제1 비휘발성 메모리에 대한 상기 제1 온도 정보 및/또는 상기 제1 방치 시간 정보가 제5 기준 범위 이내인 경우에(단계 S450: 예), 상기 제1 비휘발성 메모리에 대한 프로그램 동작과 관련된 프로그램 조건을 유지할 수 있다(단계 S451). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제5 기준 범위를 벗어나는 경우에(단계 S450: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 프로그램 조건을 변경할 수 있다(단계 S452). 예를 들어, 상기 제5 기준 범위는 상기 제1, 제2, 제3 및 제4 기준 범위들 중 하나와 동일할 수도 있고 상기 제1, 제2, 제3 및 제4 기준 범위들 모두와 서로 다를 수도 있다. 예를 들어, 상기 프로그램 조건은 프로그램 전압의 레벨(예를 들어, ISPP(Incremental Step Pulse Program) 방식으로 프로그램할 때의 시작 레벨), 프로그램 검증 조건(예를 들어, 프로그램 검증 전압의 레벨), 프로그램 최대 루프(max loop) 설정 조건(예를 들어, 해당 루프 조건으로도 프로그램되지 않는 경우에 프로그램 실패(fail)로 판단하기 위한 조건) 등을 포함할 수 있다. 상술한 프로그램 조건 중 적어도 하나가 변경(예를 들어, 증가 또는 감소)될 수 있다.
일 실시예에서, 상기 제1 비휘발성 메모리의 온도가 높아질수록(예를 들어, hot temp) 상기 프로그램 전압의 레벨은 감소하고, 상기 제1 비휘발성 메모리의 온도가 낮아질수록 상기 프로그램 전압의 레벨은 증가할 수 있다.
도 10을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 온도 정보 및/또는 방치 시간 정보와 함께 프로그램/소거 동작의 횟수를 나타내는 프로그램/소거 사이클(P/E Cycle)을 추가적으로 고려할 수 있다. 구체적으로, 상기 제1 비휘발성 메모리에 대한 제1 프로그램/소거 사이클이 제1 기준 횟수 이내인 경우에(단계 S455: 예), 상기 제1 비휘발성 메모리에 대한 상기 프로그램 조건을 유지할 수 있다(단계 S456). 상기 제1 프로그램/소거 사이클이 상기 제1 기준 횟수를 초과하는 경우에(단계 S455: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 프로그램 조건을 변경할 수 있다(단계 S457).
일 실시예에서, 상기 제1 비휘발성 메모리의 상기 제1 프로그램/소거 사이클이 증가할수록 상기 프로그램 전압의 레벨은 감소하고, 상기 제1 프로그램/소거 사이클이 감소할수록 상기 프로그램 전압의 레벨은 증가할 수 있다.
도 11을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 제1 비휘발성 메모리에 대한 상기 제1 온도 정보 및/또는 상기 제1 방치 시간 정보가 제6 기준 범위 이내인 경우에(단계 S460: 예), 상기 제1 비휘발성 메모리에 대한 소거 동작과 관련된 소거 조건을 유지할 수 있다(단계 S461). 상기 제1 온도 정보 및 상기 제1 방치 시간 정보 중 적어도 하나가 상기 제6 기준 범위를 벗어나는 경우에(단계 S460: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 소거 조건을 변경할 수 있다(단계 S462). 예를 들어, 상기 제6 기준 범위는 상기 제1, 제2, 제3, 제4 및 제5 기준 범위들 중 하나와 동일할 수도 있고 상기 제1, 제2, 제3, 제4 및 제5 기준 범위들 모두와 서로 다를 수도 있다. 예를 들어, 상기 소거 조건은 소거 전압의 레벨(예를 들어, ISPE(Incremental Step Pulse Erase) 방식으로 소거할 때의 시작 레벨), 소거 검증 조건(예를 들어, 소거 검증 전압의 레벨), 소거 최대 루프 설정 조건(예를 들어, 해당 루프 조건으로도 소거되지 않는 경우에 소거 실패로 판단하기 위한 조건) 등을 포함할 수 있다. 상술한 소거 조건 중 적어도 하나가 변경될 수 있다.
일 실시예에서, 상기 제1 비휘발성 메모리의 온도가 낮아질수록(예를 들어, cold temp) 상기 소거 전압의 레벨은 감소하고, 상기 제1 비휘발성 메모리의 온도가 높아질수록 상기 소거 전압의 레벨은 증가할 수 있다.
도 12를 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 프로그램/소거 사이클을 추가적으로 고려할 수 있다. 구체적으로, 상기 제1 비휘발성 메모리에 대한 상기 제1 프로그램/소거 사이클이 제2 기준 횟수 이내인 경우에(단계 S465: 예), 상기 제1 비휘발성 메모리에 대한 상기 소거 조건을 유지할 수 있다(단계 S466). 상기 제1 프로그램/소거 사이클이 상기 제2 기준 횟수를 초과하는 경우에(단계 S465: 아니오), 상기 제1 비휘발성 메모리에 대한 상기 소거 조건을 변경할 수 있다(단계 S467). 예를 들어, 상기 제2 기준 횟수는 상기 제1 기준 횟수와 동일할 수도 있고 서로 다를 수도 있다.
일 실시예에서, 상기 제1 비휘발성 메모리의 상기 제1 프로그램/소거 사이클이 감소할수록 상기 소거 전압의 레벨은 감소하고, 상기 제1 프로그램/소거 사이클이 증가할수록 상기 소거 전압의 레벨은 증가할 수 있다. 다른 실시예에서, 상기 제1 비휘발성 메모리의 상기 제1 프로그램/소거 사이클이 감소할수록 상기 소거 검증 전압의 레벨은 증가하고, 상기 제1 프로그램/소거 사이클이 증가할수록 상기 소거 전압의 레벨은 감소할 수 있다.
한편, 도시하지는 않았으나, 모니터링된 온도 정보에 기초하여 DTT(Dynamic Thermal Throttling)를 수행할 수도 있다.
실시예에 따라서, 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 상술한 실시예들 중 두 개 이상을 조합하여 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 구현할 수도 있다. 다시 말하면, 두 개 이상의 구동 파라미터들을 동시에 변경할 수도 있다.
한편, 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 상기 제1 비휘발성 메모리에 대한 구동 파라미터만을 변경하는 것으로 설명하였으나, 본 발명은 이에 한정되지 않으며, 상기 복수의 비휘발성 메모리들 중 상기 제1 비휘발성 메모리를 제외한 나머지 비휘발성 메모리들에 대한 구동 파라미터 또한 변경될 수 있다. 특히 상기 복수의 비휘발성 메모리들 모두에 대한 온도 정보를 각각 모니터링한 경우에, 상기 복수의 비휘발성 메모리들 모두에 대한 구동 파라미터를 변경할 수 있으며, 이에 따라 상기 복수의 비휘발성 메모리들은 서로 다른 구동 파라미터를 가질 수 있다.
또한, 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 하나의 기준 범위(또는 기준 값) 또는 하나의 기준 횟수에 기초하여 구동 파라미터를 변경하는 것으로 설명하였으나, 이는 예시적인 것일 뿐 본 발명은 이에 한정되지 않으며, 복수의 기준 범위들 또는 복수의 기준 횟수들에 기초하여 구동 파라미터를 변경할 수도 있다. 추가적으로, 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 특정 구동 파라미터를 변경하는 방식을 설명하였으나, 이는 예시적인 것일 뿐 본 발명은 이에 한정되지 않으며, 구동 파라미터를 변경하는 방식은 다양하게 구현될 수 있다.
상술한 것처럼, 비휘발성 메모리 별로 방치 온도/시간에 따른 방어 코드 주기/순서를 적응적으로 적용하고, 온도 변화(variation)를 보상한 최적의 독출 레벨/프로그램 조건/소거 조건으로 독출/프로그램/소거 동작을 수행함으로써, 스토리지 장치의 신뢰성 및 성능이 향상될 수 있다.
도 13은 본 발명의 실시예들에 따른 스토리지 장치에서 스토리지 컨트롤러 및 비휘발성 메모리들이 배치되는 일 예를 나타내는 평면도이다.
도 13을 참조하면, 스토리지 장치는 인쇄 회로 기판(Printed Circuit Board; PCB)(710), 스토리지 컨트롤러(720) 및 복수의 메모리 패키지들(730, 740, 750)(PKG1, PKG2, ..., PKGN)을 포함한다. 도시의 편의상, 버퍼 메모리(도 2의 330)는 생략하였다.
스토리지 컨트롤러(720)는 도 2의 스토리지 컨트롤러(310) 및 도 3의 스토리지 컨트롤러(400)와 실질적으로 동일하며, 온도 체크 주기에 도달하였는지 판단하기 위한 주기 측정부(PM)를 포함할 수 있다. 복수의 메모리 패키지들(730, 740, 750)은 복수의 비휘발성 메모리들(732, 734, 743, 744, 752, 754)(NVM1-1, ..., NVM1-M, NVM2-1, ..., NVM2-M, NVMN-1, ..., NVMN-M)을 포함할 수 있다. 복수의 비휘발성 메모리들(732, 734, 743, 744, 752, 754)은 도 2의 복수의 비휘발성 메모리들(320a, 320b, 320c) 및 도 4의 비휘발성 메모리(500)와 실질적으로 동일하며, 온도 정보를 모니터링하기 위한 온도 센서(TS)를 각각 포함할 수 있다.
스토리지 컨트롤러(720) 및 복수의 메모리 패키지들(730, 740, 750)은 인쇄 회로 기판(710) 상에 실장될 수 있다. 공간 제약으로 복수의 메모리 패키지들(730, 740, 750)을 인쇄 회로 기판(710) 상에 균일하게 배치하기 어려우며, 이에 따라 스토리지 장치 내에서 스토리지 컨트롤러(720)와의 거리가 상대적으로 가깝거나 먼 메모리 패키지 또는 비휘발성 메모리가 존재할 수 있다.
도 13에서는 N개의 메모리 패키지들이 각각 M개의 비휘발성 메모리들을 포함하는 것으로 도시하였으나(N, M은 각각 2 이상의 자연수), 본 발명은 이에 한정되지 않으며, 메모리 패키지들 및 비휘발성 메모리들의 개수는 변경될 수 있다. 또한, 도 13에서는 메모리 패키지들(730, 740, 750)이 인쇄 회로 기판(710)의 제1 면(예를 들어, 전면) 상에만 배치되는 것으로 도시하였으나, 본 발명은 이에 한정되지 않으며, 메모리 패키지들은 상기 제1 면과 대향하는 인쇄 회로 기판(710)의 제2 면(예를 들어, 후면) 상에 추가 배치될 수도 있다.
도 14, 15, 16 및 17은 도 1의 온도 정보를 내부적으로 모니터링하는 단계 및 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다. 도 14 및 16은 온도 정보를 내부적으로 모니터링하는 단계의 예를 나타내며, 도 15 및 17은 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타낸다.
도 14를 참조하면, 상기 온도 정보를 내부적으로 모니터링하는데 있어서(단계 S200), 복수의 메모리 패키지들 중 적어도 하나를 참조 메모리 패키지로 선정할 수 있다(단계 S210). 예를 들어, 상기 복수의 메모리 패키지들 중 스토리지 컨트롤러와 가장 가깝게 배치된 메모리 패키지를 상기 참조 메모리 패키지로 선정할 수 있다. 실시예에 따라서, 2개 이상의 메모리 패키지들을 상기 참조 메모리 패키지로 선정할 수도 있다.
상기 참조 메모리 패키지에 대한 참조 패키지 온도 정보만을 모니터링할 수 있다(단계 S211). 예를 들어, 상기 참조 메모리 패키지에 포함되는 비휘발성 메모리들 중 적어도 일부(예를 들어, 전부 또는 일부)에 대한 온도 정보만을 모니터링 할 수 있다. 다시 말하면, 복수의 비휘발성 메모리들 일부에 대한 온도 정보만을 모니터링할 수 있다.
도 15를 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 참조 패키지 온도 정보에 기초하여 상기 참조 메모리 패키지에 대한 구동 파라미터(예를 들어, 상기 참조 메모리 패키지에 포함되는 비휘발성 메모리들에 대한 구동 파라미터)를 변경하고(단계 S470), 상기 참조 패키지 온도 정보 및 미리 정의된 테이블에 기초하여 상기 복수의 메모리 패키지들 중 상기 참조 메모리 패키지를 제외한 나머지 메모리 패키지들에 대한 구동 파라미터(예를 들어, 상기 나머지 메모리 패키지에 포함되는 비휘발성 메모리들에 대한 구동 파라미터)를 변경할 수 있다(단계 S471). 예를 들어, 프로그램/독출 동작 시에, 상기 참조 메모리 패키지의 온도 정보만을 주기적으로 체크하며, 다른 메모리 패키지들은 온도를 확인하지 않고 상기 미리 정의된 테이블을 이용하여 온도 보상할 수 있다. 상기 미리 정해진 테이블은 참조 온도 정보에 따른 패키지별/메모리별 대응하는 온도 정보를 포함할 수 있다.
단계 S470 및 S471 각각은 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 상술한 실시예들 중 적어도 하나를 포함하여 구현될 수 있다.
도 16을 참조하면, 상기 온도 정보를 내부적으로 모니터링하는데 있어서(단계 S200), 복수의 비휘발성 메모리들 중 적어도 하나를 참조 비휘발성 메모리로 선정할 수 있다(단계 S220). 예를 들어, 상기 참조 비휘발성 메모리는 특정 메모리 패키지에 포함되는 특정 비휘발성 메모리일 수도 있고, 여러 메모리 패키지들에 포함되는 여러 비휘발성 메모리들일 수도 있으며, 특정 메모리 패키지에 포함되는 여러 비휘발성 메모리들일 수도 있다.
상기 참조 비휘발성 메모리에 대한 참조 메모리 온도 정보만을 모니터링할 수 있다(단계 S221). 다시 말하면, 상기 복수의 비휘발성 메모리들 일부에 대한 온도 정보만을 모니터링할 수 있다.
도 17을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400), 상기 참조 메모리 온도 정보에 기초하여 상기 참조 비휘발성 메모리에 대한 구동 파라미터를 변경하고(단계 S480), 상기 참조 메모리 온도 정보 및 미리 정의된 테이블에 기초하여 상기 복수의 비휘발성 메모리들 중 상기 참조 비휘발성 메모리를 제외한 나머지 비휘발성 메모리들에 대한 구동 파라미터를 변경할 수 있다(단계 S481). 단계 S480 및 S481은 각각 도 15의 단계 S470 및 S471과 유사할 수 있다.
실시예에 따라서, 도 14 및 15를 참조하여 상술한 실시예와 도 16 및 17을 참조하여 상술한 실시예를 조합하여 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 구현할 수도 있다.
도 18은 본 발명의 실시예들에 따른 스토리지 장치의 구동 방법을 나타내는 순서도이다. 이하 도 1과 중복되는 설명은 생략한다.
도 18을 참조하면, 본 발명의 실시예들에 따른 스토리지 장치는 스토리지 컨트롤러 및 각각 온도 센서를 포함하는 복수의 비휘발성 메모리들을 포함하며, 상기 온도 센서와 구별되는 세트 온도 센서를 더 포함할 수 있다.
본 발명의 실시예들에 따른 스토리지 장치의 구동 방법에서, 단계 S100, S150, S200 및 S300은 도 1의 단계 S100, S150, S200 및 S300과 각각 실질적으로 동일할 수 있다.
상기 온도 체크 주기에 도달한 경우에(단계 S100: 예), 상기 세트 온도 센서를 이용하여 상기 스토리지 장치에 대한 세트 온도 정보를 내부적으로 모니터링한다(단계 S500). 상기 세트 온도 센서를 이용하는 점을 제외하면, 단계 S500은 단계 S200과 유사할 수 있다.
상기 모니터링된 온도 정보, 상기 모니터링된 세트 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경한다(단계 S400a). 상기 세트 온도 정보를 더 이용하는 점을 제외하면, 단계 S400a는 도 1의 단계 S400과 유사할 수 있다.
도 19는 본 발명의 실시예들에 따른 스토리지 장치에서 스토리지 컨트롤러 및 비휘발성 메모리들이 배치되는 다른 예를 나타내는 평면도이다. 이하 도 13과 중복되는 설명은 생략한다.
도 19를 참조하면, 세트 온도 센서(STS)를 더 포함하는 것을 제외하면 도 13의 실시예와 실질적으로 동일할 수 있다.
복수의 비휘발성 메모리들(732, 734, 743, 744, 752, 754) 각각에 포함되는 온도 센서(TS)와 다르게, 세트 온도 센서(STS)는 스토리지 컨트롤러(720) 또는 복수의 비휘발성 메모리들(732, 734, 743, 744, 752, 754)에 포함되지 않으며 별개로 형성되어 인쇄 회로 기판(710) 상에 실장될 수 있다. 예를 들어, 세트 온도 센서(STS)는 스토리지 컨트롤러(720)와 상대적으로 가깝게 배치될 수 있다.
세트 온도 센서(STS)와 복수의 메모리 패키지들(730, 740, 750) 사이의 거리는 서로 다를 수 있다. 도 19에 도시된 것처럼, 세트 온도 센서(STS)와 메모리 패키지(730) 사이의 거리는 제1 거리(d1)이고, 세트 온도 센서(STS)와 메모리 패키지(750) 사이의 거리는 제1 거리(d1)보다 긴 제2 거리(d2)일 수 있다. 예를 들어, 제1 거리(d1)는 기준 거리보다 짧고, 제2 거리(d2)는 상기 기준 거리보다 길 수 있다. 다른 예에서, 제1 거리(d1)는 제1 기준 거리보다 짧고, 제2 거리(d2)는 상기 제1 기준 거리보다 긴 제2 기준 거리보다 길 수 있다.
도 20, 21, 22 및 23은 도 18의 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계의 예를 나타내는 순서도들이다.
도 20을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400a), 상기 세트 온도 정보에 기초하여 상기 세트 온도 센서와의 거리가 기준 거리보다 가깝게 배치된 제1 비휘발성 메모리에 대한 구동 파라미터를 변경하고(단계 S490), 제1 온도 정보에 기초하여 상기 세트 온도 센서와의 거리가 상기 기준 거리보다 멀게 배치된 제2 비휘발성 메모리에 대한 구동 파라미터를 변경할 수 있다(단계 S491). 상기 제1 온도 정보는 상기 제2 비휘발성 메모리가 자체적으로 획득한 온도 정보일 수 있다. 다시 말하면, 상기 세트 온도 센서와 상대적으로 가까운 비휘발성 메모리의 온도 정보는 상기 세트 온도 센서의 온도 정보를 활용하여 대체하고, 상기 세트 온도 센서와 상대적으로 거리가 먼 비휘발성 메모리의 온도 정보는 자기 자신의 온도 정보를 확인하여 적용할 수 있다.
도 21을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400a), 단계 S490은 도 20의 단계 S490과 실질적으로 동일할 수 있다. 상기 세트 온도 정보 및 미리 정의된 테이블에 기초하여 상기 제2 비휘발성 메모리에 대한 구동 파라미터를 변경할 수 있다(단계 S492). 다시 말하면, 상기 세트 온도 센서와 상대적으로 거리가 먼 비휘발성 메모리의 온도 정보는 상기 세트 온도 센서의 온도에 따른 상기 미리 정의된 테이블을 참고하여 적용할 수 있다.
도 22를 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400a), 단계 S490은 도 20의 단계 S490과 실질적으로 동일할 수 있다. 상기 제1 온도 정보 및 미리 정의된 테이블에 기초하여 상기 제2 비휘발성 메모리에 대한 구동 파라미터를 변경할 수 있다(단계 S493).
도 23을 참조하면, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는데 있어서(단계 S400a), 상기 세트 온도 정보에 기초하여 상기 세트 온도 센서와의 거리가 제1 기준 거리보다 가깝게 배치된 제3 비휘발성 메모리에 대한 구동 파라미터를 변경하고(단계 S494), 참조 메모리 온도 정보에 기초하여 상기 세트 온도 센서와의 거리가 상기 제1 기준 거리보다 긴 제2 기준 거리보다 멀게 배치된 제4 비휘발성 메모리에 대한 구동 파라미터를 변경하며(단계 S495), 상기 세트 온도 정보, 상기 참조 메모리 온도 정보 및 미리 정의된 테이블에 기초하여 상기 제1 기준 거리와 상기 제2 기준 거리 사이에 배치된 제5 비휘발성 메모리에 대한 구동 파라미터를 변경할 수 있다(단계 S496). 상기 참조 메모리 온도 정보는 상기 제4 비휘발성 메모리가 자체적으로 획득한 온도 정보일 수 있다.
도 20, 21, 22 및 23의 단계 S490, S491, S492, S493, S494, S495 및 S496 각각은 도 5, 6, 7, 8, 9, 10, 11 및 12를 참조하여 상술한 실시예들 중 적어도 하나를 포함하여 구현될 수 있다.
한편, 비휘발성 메모리를 기준으로 하여 도 20, 21, 22 및 23의 실시예들을 설명하였으나, 본 발명은 이에 한정되지 않으며, 메모리 패키지를 기준으로 하여 도 20, 21, 22 및 23의 실시예들이 구현될 수도 있다.
한편, 본 발명의 실시예들은 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다. 예를 들어, 상기 컴퓨터로 판독 가능한 매체는 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, 비일시적은 저장 매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장 매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
도 24는 본 발명의 실시예들에 따른 스토리지 장치가 스토리지 서버에 응용된 예를 나타내는 도면이다.
도 24를 참조하면, 스토리지 서버(1100)는 서버(1110), 서버(1110)를 구동하는데 필요한 데이터를 저장하는 복수의 스토리지 장치들(1000) 및 복수의 스토리지 장치들(1000)을 제어하기 위한 RAID(Redundant Array of Independent Drives) 컨트롤러(1150)를 포함한다.
RAID는 상대적으로 중요한 데이터를 가지고 있는 서버에 주로 사용되며, 여러 개의 저장 장치가 있을 때 동일한 데이터를 서로 다른 위치에 중복해서 저장하는 방법이다. RAID 컨트롤러(1150)는 RAID 레벨 정보에 따라 다수의 RAID 레벨들 중에서 선택된 하나의 RAID 레벨을 인에이블시키고 인에이블된 RAID 레벨(또는 RAID 프로토콜)에 따라 서버(1110)와 복수의 스토리지 장치들(1000) 사이에서 주고받는 데이터를 인터페이싱할 수 있다.
복수의 스토리지 장치들(1000) 각각은 스토리지 컨트롤러(1010), 비휘발성 메모리들(1020) 및 버퍼 메모리(1030)를 포함하며, 본 발명의 실시예들에 따른 스토리지 장치(300)에 대응하며, 도 1 내지 23을 참조하여 상술한 본 발명의 실시예들에 따라 동작할 수 있다. 서버(1110)는 호스트(200)에 대응하며, 복수의 스토리지 장치들(1000)을 제어할 수 있다.
본 발명의 실시예들은 스토리지 장치 및 스토리지 시스템을 포함하는 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 컴퓨터(computer), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기 등과 같은 전자 기기에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (10)

  1. 각각 온도 센서를 구비하는 복수의 비휘발성 메모리들을 포함하는 스토리지 장치의 구동 방법으로서,
    상기 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인하는 단계;
    상기 온도 체크 주기에 도달한 경우에, 상기 온도 센서를 이용하여 상기 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링하는 단계;
    상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 상기 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득하는 단계; 및
    상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경하는 단계를 포함하는 스토리지 장치의 구동 방법.
  2. 제 1 항에 있어서,
    상기 스토리지 장치는 상기 복수의 비휘발성 메모리들의 동작을 제어하는 스토리지 컨트롤러를 더 포함하며,
    상기 온도 정보를 내부적으로 모니터링하는 단계는 외부의 호스트로부터 수신되는 커맨드 없이 상기 스토리지 컨트롤러에 의해 자체적으로 수행되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  3. 제 1 항에 있어서,
    상기 복수의 구동 파라미터들은 상기 복수의 비휘발성 메모리들의 방어 코드 중 예방(prevention) 코드 및 복구(recovery) 코드 중 적어도 하나와 관련되는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  4. 제 3 항에 있어서, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 순찰 독출(patrol read) 동작과 관련된 순찰 독출 주기, 리프레쉬(refresh) 동작과 관련된 리프레쉬 주기 및 독출 동작과 관련된 독출 전압의 레벨 중 적어도 하나를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  5. 제 3 항에 있어서, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 복수의 복구 알고리즘들의 적용 순서를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  6. 제 1 항에 있어서, 상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리에 대한 프로그램 동작과 관련된 프로그램 조건 및 소거 동작과 관련된 소거 조건 중 적어도 하나를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  7. 제 1 항에 있어서,
    상기 스토리지 장치는 복수의 메모리 패키지들을 포함하고, 상기 복수의 메모리 패키지들은 각각 상기 복수의 비휘발성 메모리들 중 적어도 하나를 포함하며,
    상기 온도 정보를 내부적으로 모니터링하는 단계는,
    상기 복수의 메모리 패키지들 중 제1 메모리 패키지를 참조 메모리 패키지로 선정하는 단계; 및
    상기 제1 메모리 패키지에 포함되는 적어도 하나의 비휘발성 메모리에 대한 제1 온도 정보만을 모니터링하는 단계를 포함하고,
    상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 제1 온도 정보에 기초하여 상기 제1 메모리 패키지에 대한 구동 파라미터를 변경하는 단계; 및
    상기 제1 온도 정보 및 미리 정의된 테이블에 기초하여 상기 제1 메모리 패키지를 제외한 나머지 메모리 패키지들에 대한 구동 파라미터를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  8. 제 1 항에 있어서,
    상기 온도 정보를 내부적으로 모니터링하는 단계는,
    상기 복수의 비휘발성 메모리들 중 제1 비휘발성 메모리를 참조 비휘발성 메모리로 선정하는 단계; 및
    상기 제1 비휘발성 메모리에 대한 제1 온도 정보만을 모니터링하는 단계를 포함하고,
    상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 제1 온도 정보에 기초하여 상기 제1 비휘발성 메모리에 대한 구동 파라미터를 변경하는 단계; 및
    상기 제1 온도 정보 및 미리 정의된 테이블에 기초하여 상기 제1 비휘발성 메모리를 제외한 나머지 비휘발성 메모리들에 대한 구동 파라미터를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  9. 제 1 항에 있어서,
    상기 스토리지 장치는 상기 복수의 비휘발성 메모리들 각각에 포함되는 상기 온도 센서와 구별되는 세트 온도 센서를 더 포함하며,
    상기 온도 체크 주기에 도달한 경우에, 상기 세트 온도 센서를 이용하여 상기 스토리지 장치에 대한 세트 온도 정보를 내부적으로 모니터링하는 단계를 더 포함하고,
    상기 복수의 구동 파라미터들 중 적어도 하나를 적응적으로 변경하는 단계는,
    상기 세트 온도 정보에 기초하여 상기 세트 온도 센서와의 거리가 기준 거리보다 가깝게 배치된 제1 비휘발성 메모리에 대한 구동 파라미터를 변경하는 단계를 포함하는 것을 특징으로 하는 스토리지 장치의 구동 방법.
  10. 각각 온도 센서를 구비하는 복수의 비휘발성 메모리들; 및
    상기 복수의 비휘발성 메모리들의 동작을 제어하고, 상기 복수의 비휘발성 메모리들에 대한 미리 정해진 온도 체크 주기에 도달하였는지 확인하고, 상기 온도 체크 주기에 도달한 경우에 상기 온도 센서를 이용하여 상기 복수의 비휘발성 메모리들 중 적어도 일부에 대한 온도 정보를 내부적으로 모니터링하고, 상기 모니터링된 온도 정보를 기초로 온도 가속 조건을 반영하여 상기 복수의 비휘발성 메모리들에 대한 방치 시간 정보를 획득하며, 상기 모니터링된 온도 정보 및 상기 획득된 방치 시간 정보 중 적어도 하나에 기초하여 상기 복수의 비휘발성 메모리들이 동작하는데 필요한 복수의 구동 파라미터들 중 적어도 하나를 비휘발성 메모리 별로 적응적으로 변경하는 스토리지 컨트롤러를 포함하는 스토리지 장치.
KR1020190070989A 2019-06-14 2019-06-14 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치 KR20200143107A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190070989A KR20200143107A (ko) 2019-06-14 2019-06-14 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
US16/729,743 US11232008B2 (en) 2019-06-14 2019-12-30 Method of operating storage device, storage device performing the same and storage system including the same
CN202010439690.6A CN112086112A (zh) 2019-06-14 2020-05-22 操作存储设备的方法、存储设备及包括其的存储系统
US17/563,662 US11748223B2 (en) 2019-06-14 2021-12-28 Method of operating storage device, storage device performing the same and storage system including the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190070989A KR20200143107A (ko) 2019-06-14 2019-06-14 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20200143107A true KR20200143107A (ko) 2020-12-23

Family

ID=73734931

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190070989A KR20200143107A (ko) 2019-06-14 2019-06-14 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치

Country Status (3)

Country Link
US (2) US11232008B2 (ko)
KR (1) KR20200143107A (ko)
CN (1) CN112086112A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102344380B1 (ko) * 2021-06-02 2021-12-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200143107A (ko) * 2019-06-14 2020-12-23 삼성전자주식회사 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
JP2021111427A (ja) * 2020-01-15 2021-08-02 キオクシア株式会社 記憶装置及びその制御方法
KR20220021992A (ko) 2020-08-14 2022-02-23 삼성전자주식회사 비휘발성 메모리 장치, 그것의 동작 방법, 그것을 제어하는 제어기, 및 그것을 포함하는 저장 장치
US11892928B2 (en) * 2020-12-28 2024-02-06 Western Digital Technologies, Inc. Delayed thermal throttling and associated data routing techniques
KR102440364B1 (ko) * 2021-08-27 2022-09-05 삼성전자주식회사 성능 조정 동작을 수행하는 메모리 시스템
US20230176788A1 (en) * 2021-12-03 2023-06-08 Samsung Electronics Co., Ltd. Storage device

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645177B2 (en) 2012-05-04 2017-05-09 Seagate Technology Llc Retention-drift-history-based non-volatile memory read threshold optimization
US9535614B2 (en) 2013-11-21 2017-01-03 Sandisk Technologies Llc Temperature based flash memory system maintenance
KR102210964B1 (ko) 2014-05-13 2021-02-03 삼성전자주식회사 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치를 액세스하는 액세스 방법
US9837146B2 (en) 2016-01-08 2017-12-05 Sandisk Technologies Llc Memory system temperature management
US10564900B2 (en) 2016-03-04 2020-02-18 Western Digital Technologies, Inc. Temperature variation compensation
US9760311B1 (en) 2016-06-23 2017-09-12 Sandisk Technologies Llc Storage system and method for adaptive thermal throttling
US10007311B2 (en) 2016-08-15 2018-06-26 Sandisk Technologies Llc Adaptive temperature and memory parameter throttling
US20180095802A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Hardware stress indicators based on accumulated stress values
US9934859B1 (en) 2016-12-27 2018-04-03 Intel Corporation Determining demarcation voltage via timestamps
US20180374547A1 (en) 2017-06-22 2018-12-27 Western Digital Technologies, Inc. Handling of the thermal disparity across multiple packages in high capacity ssd
JP2019046530A (ja) 2017-09-07 2019-03-22 東芝メモリ株式会社 メモリシステム
US10276252B2 (en) 2017-12-11 2019-04-30 Intel Corporation Data storage device with operation based on temperature difference
US10210941B1 (en) 2018-01-24 2019-02-19 Sandisk Technologies Llc Reducing injection type of read disturb in a cold read of a memory device
US10928870B2 (en) * 2018-05-29 2021-02-23 Marvell Asia Pte, Ltd. Apparatus and methods for temperature-based memory management
JP2020035501A (ja) * 2018-08-28 2020-03-05 キオクシア株式会社 メモリシステム及びストレージシステム
KR20200143107A (ko) * 2019-06-14 2020-12-23 삼성전자주식회사 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
CN112684973A (zh) * 2019-10-18 2021-04-20 建兴储存科技股份有限公司 具有固态储存器的服务器系统及其相关控制方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102344380B1 (ko) * 2021-06-02 2021-12-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법
US11735278B2 (en) 2021-06-02 2023-08-22 Samsung Electronics Co., Ltd. Non-volatile memory device, controller for controlling the same, storage device having the same, and method of operating the same

Also Published As

Publication number Publication date
US20220121544A1 (en) 2022-04-21
US20200394114A1 (en) 2020-12-17
CN112086112A (zh) 2020-12-15
US11748223B2 (en) 2023-09-05
US11232008B2 (en) 2022-01-25

Similar Documents

Publication Publication Date Title
KR20200143107A (ko) 스토리지 장치의 구동 방법 및 이를 수행하는 스토리지 장치
CN107799149B (zh) 数据存储装置及其操作方法
US10509602B2 (en) Data storage device and operating method thereof
TWI434286B (zh) 具擴充模式之固態儲存元件控制器及其運作方法
US10902928B2 (en) Memory system, operation method thereof, and nonvolatile memory device
US11163696B2 (en) Controller, memory system and operating method thereof for controlling a non-volatile memory device during a sync-up operation
KR102456104B1 (ko) 데이터 신뢰성에 따라 동작 조건을 변경하는 저장 장치의 동작 방법
KR20210020689A (ko) 추론에 기초하여 요청을 처리하는 메모리 시스템 및 이의 동작 방법
US11133068B2 (en) Memory device, memory controller, memory system and method for operating memory system
CN111752852A (zh) 数据存储装置及数据存储装置的操作方法
US11237976B2 (en) Memory system, memory controller and meta-information storage device
TW201928960A (zh) 記憶體系統及其操作方法
US10942678B2 (en) Method of accessing data in storage device, method of managing data in storage device and storage device performing the same
KR102634809B1 (ko) 전자 장치 및 그것의 동작 방법
CN110083305B (zh) 存储器系统及其操作方法
US9837166B2 (en) Data storage device and operating method thereof
KR102475688B1 (ko) 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그것의 동작 방법
US11586379B2 (en) Memory system and method of operating the same
US20210049086A1 (en) Method of operating storage device for improving reliability, storage device performing the same and method of operating storage using the same
CN112447234A (zh) 存储器控制器及其操作方法
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
US11923014B2 (en) Memory system compensating for performance deterioration of a memory device
US11915048B2 (en) Method of scheduling jobs in storage device using pre-defined time and method of operating storage system including the same
KR20190037659A (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 포함하는 데이터 저장 장치
US20240078023A1 (en) Storage device determining whether to apply thermal throttling mode to target operation

Legal Events

Date Code Title Description
A201 Request for examination