KR20200137664A - 메모리 시스템 및 메모리 시스템의 동작방법 - Google Patents

메모리 시스템 및 메모리 시스템의 동작방법 Download PDF

Info

Publication number
KR20200137664A
KR20200137664A KR1020190064392A KR20190064392A KR20200137664A KR 20200137664 A KR20200137664 A KR 20200137664A KR 1020190064392 A KR1020190064392 A KR 1020190064392A KR 20190064392 A KR20190064392 A KR 20190064392A KR 20200137664 A KR20200137664 A KR 20200137664A
Authority
KR
South Korea
Prior art keywords
time
elapsed
memory
hibernation
memory device
Prior art date
Application number
KR1020190064392A
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 KR1020190064392A priority Critical patent/KR20200137664A/ko
Priority to US16/721,703 priority patent/US11288157B2/en
Priority to CN201911362325.3A priority patent/CN112015332A/zh
Publication of KR20200137664A publication Critical patent/KR20200137664A/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • 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
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0625Power saving in 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/10Programming or data input circuits
    • 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
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Abstract

메모리 장치를 제어하는 컨트롤러는, 액티브(active) 상태 및 비 액티브 상태 간의 상태 변경 시마다 호스트로부터 절대시각을 수신하고, 제1 및 제2 절대시각 사이 경과시간의 평균 하이버네이션(hibernation) 경과시간을 산출하고, 제3 절대시각 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 산출하는 경과시간 계산부; 및 상기 시스템시각에 기초하여 모니터링 경과시간에 따른 상기 메모리 장치의 기대 사용량을 산출하고, 상기 모니터링 경과시간의 상기 메모리 장치의 실제 사용량과 상기 기대 사용량에 기초하여 잉여 사용량을 산출하고, 상기 잉여 사용량을 소모할 때까지 상기 메모리 장치가 싱글 레벨 셀 모드로 데이터를 프로그램하도록 제어하는 FTL(flash translation layer)을 포함한다.

Description

메모리 시스템 및 메모리 시스템의 동작방법 {MEMORY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 추측된 현재 시각에 기초하여 동작함으로써 신뢰성이 향상되는 메모리 시스템 및 그의 동작 방법을 제공하고자 한다.
본 발명의 일 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러는, 액티브(active) 상태 및 비 액티브 상태 간의 상태 변경 시마다 호스트로부터 절대시각을 수신하고, 제1 및 제2 절대시각 사이 경과시간의 평균 하이버네이션(hibernation) 경과시간을 산출하고, 제3 절대시각 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 산출하는 경과시간 계산부; 및 상기 시스템시각에 기초하여 모니터링 경과시간에 따른 상기 메모리 장치의 기대 사용량을 산출하고, 상기 모니터링 경과시간의 상기 메모리 장치의 실제 사용량과 상기 기대 사용량에 기초하여 잉여 사용량을 산출하고, 상기 잉여 사용량을 소모할 때까지 상기 메모리 장치가 싱글 레벨 셀 모드로 데이터를 프로그램하도록 제어하는 FTL(flash translation layer)을 포함한다.
본 발명의 일 실시예에 따르면, 메모리 장치를 제어하는 컨트롤러는, 액티브 상태 및 비 액티브 상태 간의 상태 변경 시마다 호스트로부터 절대시각을 수신하고, 제1 및 제2 절대시각 사이 경과시간의 평균 하이버네이션 경과시간을 산출하고, 제3 절대시각 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 지속적으로 산출하는 경과시간 계산부; 및 프리 블록 개수가 임계치 미만인지 여부에 따라 가비지 콜렉션 동작을 수행하되, 상기 시스템시각에 기초하여 모니터링 경과시간에 따른 상기 메모리 장치의 기대 사용량을 산출하고, 상기 모니터링 경과시간의 상기 메모리 장치의 실제 사용량과 상기 기대 사용량에 기초하여 잉여 사용량을 산출하고, 상기 잉여 사용량을 소모할 때까지 상기 임계치를 변경하는 FTL을 포함한다.
본 발명은 추측된 현재 시각에 기초하여 동작함으로써 신뢰성이 향상되는 메모리 시스템 및 그의 동작 방법을 제공하고자 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템의 구조를 나타낸 도면이다.
도 3은 경과시간 계산부가 메모리 시스템의 현재 시각을 추측하는 방법을 설명하기 위한 도면이다.
도 4는 메모리 시스템의 보증기간 및 메모리 장치의 사용량을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 설명하기 위한 도면이다.
도 6a 및 도 6b는 가비지 콜렉션 동작을 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 나타내는 흐름도이다.
도 8a 및 도 8b는 메모리 장치에 포함된 메모리 셀들의 문턱 전압 분포를 예시하는 도면이다.
도 9는 본 발명의 일 실시예에 따른 메모리 시스템의 동작을 나타내는 흐름도이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
이하, 도면들을 참조하여 본 발명의 실시 예들에 대해서 보다 구체적으로 설명하기로 한다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템(110)을 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)를 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
예컨대, 개인용 운영 시스템은 일반 사용자를 위한 서비스 제공 기능을 지원하도록 특성화된 시스템으로, 윈도우(windows) 및 크롬(chrome) 등을 포함하고, 기업용 운영 시스템은 고성능을 확보 및 지원하도록 특성화된 시스템으로, 윈도 서버(windows server), 리눅스(linux) 및 유닉스(unix) 등을 포함할 수 있다. 아울러, 운영 시스템에서의 모바일 운영 시스템은, 사용자들에게 이동성 서비스 제공 기능 및 시스템의 절전 기능을 지원하도록 특성화된 시스템으로, 안드로이드(android), iOS, 윈도 모바일(windows mobile) 등을 포함할 수 있다. 호스트(102)는 복수의 운영 시스템들을 포함할 수 있으며, 메모리 시스템(110)에 대한 사용자의 요청에 상응하는 동작을 수행하기 위해 운영 시스템을 실행할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예컨대, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Storage Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예컨대, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
한편, 호스트(102)는 현재시각을 알 수 있다. 도 1은 실시간 시계(Real Time Clock, 104)를 사용하여 현재시각을 알 수 있는 호스트(102)를 예시하고 있다. 메모리 시스템(110)은 호스트(102)로부터 시각 정보를 수신할 수 있다.
메모리 시스템(110)은 타이머(144)를 포함할 수 있다. 메모리 시스템(110)은 호스트(102)로부터 수신한 절대시각과 타이머(144)가 측정하는 경과시간에 기초하여 시스템시각을 산출할 수 있다.
메모리 시스템(110)은 복수의 전원 상태 중 어느 하나의 상태를 가질 수 있다. 예를 들어, 메모리 시스템(110)은 액티브(active) 상태, 슬립(sleep) 상태 및 파워 오프(power off) 상태 중 어느 하나의 상태를 가질 수 있다.
액티브 상태에서 메모리 시스템(110)은 호스트(102)로부터 모든 종류의 요청을 수신할 수 있다. 액티브 상태는 비지(busy) 상태 및 하이버네이션(hibernation) 상태로 나뉠 수 있다.
비지 상태에서 메모리 시스템(110)은 호스트(102)의 요청에 응하여 동작하거나 백그라운드 동작(background operation)을 수행할 수 있다. 비지 상태에서 메모리 시스템(110)은 지원되는 모든 종류의 커맨드를 사용할 수 있다. 메모리 시스템(110)은 비지 상태에서 소정 경과시간 이상, 예를 들어 1ms 이상 동작하지 않을 때 하이버네이션 상태로 변경될 수 있다. 하이버네이션 상태는 메모리 시스템(110)이 호스트(102)의 요청에 대응하는 동작 및 백그라운드 동작을 수행하지 않는 상태이다. 메모리 시스템(110)은 하이버네이션 상태에서 전력 소모량을 줄이기 위해 타이머(144)의 동작을 중단시킬 수 있다. 메모리 시스템(110)은 하이버네이션 상태에서도 호스트(102)로부터 모든 종류의 요청을 수신할 수 있다. 메모리 시스템(110)은 동작을 재개할 필요가 있을 때 하이버네이션 상태에서 비지 상태로 변경될 수 있다.
메모리 시스템(110)은 액티브 상태에서 호스트(102)의 요청에 응하여 슬립 상태로 변경될 수 있다. 예를 들어, 호스트(102)는 파워 온 상태이지만 사용자가 호스트(102)를 사용하지 않을 때 메모리 시스템(110)으로 슬립 요청을 제공할 수 있다. 슬립 상태에서 메모리 시스템(110)의 일부 전력 공급이 중단될 수 있다. 슬립 상태에서 메모리 시스템(110)은 호스트(102)로부터 수신되는 요청 중 일부 종류의 요청에 응하여서만 동작할 수 있다. 일 예로, 슬립 상태에서 메모리 시스템(110)은 전원 상태를 변경하기 위한 요청에 응하여 전원 상태를 변경할 수 있다. 일 예로, 슬립 상태에서 메모리 시스템(110)은 센스 데이터 요청에 응하여 호스트(102)로 메모리 시스템(110)의 현재 상태를 나타내는 센스 데이터(sense data)를 제공할 수 있다. 슬립 상태에서 메모리 시스템(110)의 전력 소모량은 하이버네이션 상태의 전력 소모량보다 더욱 적다. 메모리 시스템(110)은 호스트(102)의 슬립 해제 요청에 응하여 액티브 상태로 변경될 수 있다.
메모리 시스템(110)은 액티브 상태 또는 슬립 상태에서 호스트(102)의 요청에 응하여 파워 오프 상태로 변경될 수 있다. 예를 들어, 호스트(102)는 자신이 파워 오프를 수행할 때 메모리 시스템(110)으로 파워 오프 요청을 제공할 수 있다. 파워 오프 상태에서 메모리 시스템(110)의 모든 전력 공급이 중단되며, 내부 메모리에 저장된 휘발성 데이터도 모두 상실된다. 파워 오프 상태에서 메모리 시스템(110)은 호스트(102)로부터 수신되는 일부 종류의 요청에 응하여서만 동작할 수 있다. 예를 들어, 파워 오프 상태에서 메모리 시스템(110)은 전원 상태를 변경하기 위한 요청 및 센스 데이터 요청에 응하여서만 동작할 수 있다. 메모리 시스템(110)은 호스트(102)의 파워 온 요청에 응하여 액티브 상태로 변경될 수 있다.
타이머(144)는 슬립 상태 및 파워 오프 상태에서 동작하지 않으며, 하이버네이션 상태에서도 동작하지 않을 수 있다. 메모리 시스템(110)은 타이머(144)를 통해 비지 상태의 경과시간만을 측정할 수 있으므로 호스트(102)로부터 시각 정보를 수신한 이후 하이버네이션 상태로 변경된 적이 있다면 정확한 시스템시각을 산출할 수 없다.
그러나, 메모리 시스템(110)이 정확한 시스템시각을 산출할 수 있도록 호스트(102)가 메모리 시스템(110)이 하이버네이션 상태에서 비지 상태로 변경될 때마다 절대시각을 제공한다면 호스트(102) 및 메모리 시스템(110)의 처리 부담이 증가할 수 있다. 메모리 시스템(110)이 하이버네이션 상태에서 비지 상태로 변경되는 경우는 메모리 시스템(110)의 동작 중 자주 발생할 수 있기 때문이다.
본 발명의 일 실시예에 따르면, 메모리 시스템(110)은 액티브 상태와 비 액티브 상태 간에 전원 상태가 변경될 때 호스트(102)로부터 절대시각을 수신할 수 있다. 메모리 시스템(110)은 비지 상태에서는 타이머(144)를 사용하여 비지 경과시간을 계산하고, 메모리 시스템(110)이 비지 상태에서 하이버네이션 상태로 변경되는 횟수를 카운트할 수 있다. 메모리 시스템(110)은 호스트(102)로부터 수신한 두 시점 이상의 시각 정보, 상기 비지 경과시간 및 하이버네이션 횟수에 기초하여 평균 하이버네이션 경과시간을 계산할 수 있다. 메모리 시스템(110)은 호스트(102)로부터 수신한 절대시각, 상기 절대시각 이후의 비지 경과시간 및 하이버네이션 횟수 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 보다 정확히 산출할 수 있다.
한편, 메모리 시스템(110)의 요구사항(Requirement)은 품질 보증기간을 규정할 수 있다. 메모리 시스템(110)의 비휘발성 메모리 장치는 프로그램 동작과 이레이즈 동작을 반복함에 따라 수명을 다할 수 있다. 호스트(102)가 메모리 시스템(110)을 빈번하게 사용하지 않는 경우 프로그램 동작 및 이레이즈 동작의 반복 횟수가 크게 증가하지 않을 것이다. 따라서 호스트(102)가 메모리 시스템(110)을 빈번하게 사용하지 않으면 메모리 시스템(110)의 사용을 개시한 후 상기 보증기간이 경과하더라도 상기 비휘발성 메모리 장치의 수명이 남아있을 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템(110)은 상기 산출된 시스템시각에 기초하여 주기적으로 상기 비휘발성 메모리 장치의 사용량을 모니터링할 수 있다. 메모리 시스템(110)은 직전 모니터링 시각 이후 현재 모니터링 시각까지의 모니터링 경과시간의 상기 비휘발성 메모리 장치의 사용량이 임계치 이하인지 여부에 따라 메모리 시스템(110)의 성능 향상을 위한 동작을 수행할 수 있다.
상기 임계치는 모니터링 경과시간, 상기 품질 보증기간 및 메모리 장치(150)의 수명에 따라 결정될 수 있다. 상기 성능 향상을 위한 동작은 상기 비휘발성 메모리 장치의 프로그램 동작 및 이레이즈 동작을 수반할 수 있다. 예를 들어, 메모리 시스템(110)은 가비지 콜렉션 동작을 수행함으로써 여유 메모리 공간을 확보할 수 있다. 메모리 시스템(110)은 호스트(102)가 메모리 시스템(110)을 빈번하게 사용하지 않는 경우 상기 보증기간을 보장할 수 있는 한도에서 메모리 시스템(110)의 성능을 향상시키기 위한 프로그램 동작 및 이레이즈 동작을 더 수행할 수 있다. 따라서, 메모리 시스템(110)은 상기 보증기간 내에서 사용자에게 향상된 성능을 제공할 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 구조를 나타낸 도면이다.
메모리 시스템(110)은 메모리 장치(150), 및 컨트롤러(130)를 포함할 수 있다. 메모리 장치(150)는 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 메모리 장치(150)로의 데이터 저장을 제어할 수 있다.
여기서, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 메모리 장치(150)는 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 메모리 장치(150)는, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예컨대, 컨트롤러(130) 및 메모리 장치(150)는 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
메모리 장치(150)는 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메모리 장치(150)는 라이트 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 메모리 장치(150)에 저장된 데이터를 제공할 수 있다. 메모리 장치(150)는 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 메모리 장치(150)는 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 메모리 장치(150)를 제어할 수 있다. 예컨대, 컨트롤러(130)는 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 메모리 장치(150)의 리드, 프로그램, 이레이즈 등의 동작을 제어할 수 있다.
컨트롤러(130)는 내부 버스를 통해 서로 동작 가능하게 연결된 호스트 인터페이스(132), FTL(134), 전력 관리부(136), 메모리 인터페이스(138), 경과시간 계산부(140), 카운터(142), 타이머(144) 및 메모리(146)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 호스트(102)로부터 시각 정보를 수신할 수 있다. 일 실시예에서, 호스트 인터페이스(132)는 메모리 시스템(110)의 전원 상태가 액티브 상태 및 슬립 상태 간에 변경되거나, 액티브 상태 및 파워 오프 상태 간에 변경될 때 시각 정보를 수신할 수 있다.
플래시 변환 계층(Flash Translation Layer: FTL)(134)은 메모리 시스템(110)의 전체적인 동작을 제어할 수 있다. FTL(134)은 메모리(146)에 로드되어 컨트롤러(130) 내부의 프로세서(미도시)에서 구동될 수 있다.
FTL(134)은 호스트(102)로부터의 요청에 따른 포그라운드 동작(foreground operation)을 수행할 수 있다. FTL(134)은 호스트 인터페이스(132)로부터 수신된 요청의 논리 주소와 메모리 장치(150)의 물리 주소를 매핑할 수 있다. FTL(134)은 라이트 요청, 리드 요청 및 이레이즈 요청을 메모리 장치(150)를 위한 프로그램 커맨드, 리드 커맨드 및 이레이즈 커맨드로 각각 변환할 수 있다. 구현에 따라, FTL(134)은 라이트 커맨드들의 순서를 정렬하여 메모리 인터페이스(142)로 제공함으로써 메모리 인터페이스(142)의 원 샷 프로그램, 원 샷 리드 성능 또는 병렬처리 성능을 극대화할 수 있다.
FTL(134)은 백그라운드 동작을 수행할 수도 있다. 예를 들어, FTL(134)은 메모리 장치(150)가 충분한 빈 블록을 가질 수 있도록 가비지 콜렉션을 수행하여 유효 데이터를 모아 빈 블록으로 이동시키고, 이동된 유효 데이터를 포함하고 있었던 블록들을 이레이즈할 수 있다.
전력 관리부(136)는 메모리 시스템(110)의 전원 상태에 따라 메모리 시스템(110)의 전력 공급을 제어할 수 있다.
메모리 인터페이스(138)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 메모리 장치(150)가 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(138)는 메모리 장치(150)를 위한 제어 신호를 생성하고 메모리 장치(150)로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(138)는 컨트롤러(130)와 메모리 장치(150) 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예컨대 NAND 플래시 인터페이스로서 동작할 수 있다.
구현에 따라, 메모리 인터페이스(138)는 메모리 장치(150)로부터 독출되는 데이터에 포함된 에러를 검출 및 정정할 수 있는 ECC를 포함할 수 있다. ECC는 ECC 인코딩 프로세스에서 사용된 ECC 코드를 통해 메모리 장치(150)로부터 독출된 데이터에 에러 정정 디코딩 프로세스를 수행할 수 있다. 에러 정정 디코딩 프로세스의 결과에 따라, ECC는 예컨대 에러 정정 성공/실패 신호와 같은 신호를 출력할 수 있다. 에러 비트의 수가 정정 가능한 에러 비트의 임계치를 초과하면, ECC는 에러 비트를 정정하지 못하고, 에러 정정 실패 신호를 출력할 수 있다.
메모리(146)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 메모리 장치(150)가 리드, 라이트, 이레이즈 동작을 수행하도록 메모리 장치(150)를 제어할 수 있다. 컨트롤러(130)는 메모리 장치(150)로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 메모리 장치(150)에 저장할 수 있다. 메모리(146)는 컨트롤러(130)와 메모리 장치(150)가 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(146)는 호스트(102)로부터 수신한 절대시각, 카운터(142)에 의해 카운트된 하이버네이션 횟수 및 타이머(144)에 의해 계산된 비지 경과시간을 저장할 수 있다.
메모리(146)는 휘발성 메모리로 구현될 수 있다. 예컨대, 메모리(146)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(146)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 메모리(146)를 예시한다. 일 실시예에서, 메모리(146)는 메모리(146)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
타이머(144)는 메모리 시스템(110)의 비지 상태에서 동작하여 비지 경과시간을 측정할 수 있다.
카운터(142)는 메모리 시스템(110)의 하이버네이션 횟수를 카운트할 수 있다.
경과시간 계산부(140)는 호스트(102)로부터 수신한 둘 이상의 절대시각 사이의 평균 하이버네이션 경과시간을 계산하고, 호스트(102)로부터의 절대시각 이후 메모리 시스템(110)의 비지 경과시간, 하이버네이션 횟수에 기초하여 메모리 시스템(110)의 시스템시각을 산출할 수 있다.
도 3은 경과시간 계산부(140)가 메모리 시스템(110)의 시스템시각을 산출하는 방법을 설명하기 위한 도면이다.
도 3의 그래프의 가로축은 경과시간(TIME), 세로축은 전력(POWER)을 나타낸다. 도 3에 도시된 실선은 경과시간에 따른 메모리 시스템(110)의 전력 공급을 나타낸다.
도 3의 그래프의 세로축에 비지(BUSY) 상태, 하이버네이션(HIBERNATION) 상태 및 비 액티브 상태의 예로서 슬립(SLEEP) 상태의 전력이 도시된다.
도 3의 그래프의 가로축에 제1 내지 제3 시각(T1 내지 T3) 및 현재 시각(NOW)이 도시된다. 제1 내지 제3 시각은 호스트 인터페이스(132)가 호스트(102)로부터 수신한 절대시각을 나타낸다. 도 3의 그래프에 제1 내지 제7 비지 경과시간(B1 내지 B7), 제1 내지 제5 하이버네이션 경과시간(H1 내지 H5) 및 제1 내지 제2 슬립 경과시간(S1 내지 S2)이 도시된다.
도 3을 참조하면, 호스트 인터페이스(132)는 메모리 시스템(110)이 액티브 상태에서 비 액티브 상태로 변경되거나, 비 액티브 상태에서 액티브 상태로 변경될 때 호스트(102)로부터 절대시각을 수신할 수 있다.
구현에 따라, 호스트 인터페이스(132)는 호스트(102)가 슬립 요청, 슬립 해제 요청, 파워 오프 요청 또는 파워 온 요청과 함께 제공하는 시각 정보를 수신할 수 있다. 구현에 따라, 호스트 인터페이스(132)는 호스트(102)의 슬립 요청, 슬립 해제 요청, 파워 오프 요청 또는 파워 온 요청에 응하여 응답을 제공하면서, 시각 정보 요청 신호를 함께 제공할 수 있다. 호스트 인터페이스(132)는 호스트(102)가 상기 시각 정보 요청 신호에 응하여 제공하는 시각 정보를 수신할 수 있다.
도 3의 예에서, 제1 시점(T1)에서 메모리 시스템(110)이 슬립 상태에서 액티브 상태로 변경될 수 있다. 호스트 인터페이스(132)는 호스트(102)로부터 제1 시점(T1)의 시각 정보를 획득할 수 있다. 메모리(146)는 상기 시각 정보를 저장할 수 있다.
제1 내지 제4 비지 경과시간(B1 내지 B4)에 타이머(144)가 동작하면서 비지 경과시간을 측정할 수 있다. 제1 내지 제3 하이버네이션 경과시간(H1 내지 H3)에 타이머(144)는 동작하지 않을 수 있다. 카운터(142)는 메모리 시스템(110)이 비지 상태에서 하이버네이션 상태로 변경되는 하이버네이션 횟수를 카운트할 수 있다.
메모리(146)는 상기 비지 경과시간 및 하이버네이션 횟수 정보를 저장할 수 있다.
제2 시점(T2)에서 메모리 시스템(110)이 액티브 상태에서 슬립 상태로 변경될 수 있다. 호스트 인터페이스(132)는 호스트(102)로부터 제2 시점의 시각 정보를 획득할 수 있다. 구현에 따라, FTL(134)은 메모리 인터페이스(138)를 통해 메모리(146)에 저장된 비지 경과시간 정보(B1 내지 B4) 및 하이버네이션 횟수 정보 및 호스트(102)로부터 수신한 제1 및 제2 시각(T1 및 T2)을 프로그램하도록 메모리 장치(150)를 제어할 수 있다.
제3 시각(T3)에서 메모리 시스템(110)이 슬립 상태에서 액티브 상태로 변경될 수 있다. 호스트 인터페이스(132)는 호스트(102)로부터 절대시각인 제3 시각(T3)을 획득할 수 있다. 메모리(146)는 상기 절대시각을 저장할 수 있다.
구현에 따라, FTL(134)은 메모리 인터페이스(138)를 통해 메모리 장치(150)에 프로그램된 제1 및 제2 시각(T1 및 T2), 비지 경과시간 및 하이버네이션 횟수를 메모리(146)로 로드할 수 있다.
경과시간 계산부(140)는 상기 제1 및 제2 시각(T1 및 T2), 비지 경과시간 및 하이버네이션 횟수에 기초하여 평균 하이버네이션 경과시간을 계산할 수 있다.
도 3의 예에서, 경과시간 계산부(140)는 제1 및 제2 시각(T1 내지 T2) 사이의 경과시간에서, 제1 내지 제4 비지 경과시간(B1 내지 B4)을 빼서 제1 내지 제3 하이버네이션 경과시간(H1 내지 H3)의 합을 계산할 수 있다. 즉, 하이버네이션 상태에서 타이머(144)가 동작하지 않아서 제1 내지 제3 하이버네이션 경과시간(H1 내지 H3) 각각을 측정할 수 없더라도, 경과시간 계산부(140)는 제1 및 제2 시각(T1 내지 T2) 사이의 총 하이버네이션 경과시간을 계산할 수 있다. 도 3의 예에서, 제1 및 제2 시각(T1 내지 T2) 사이에 발생한 하이버네이션 횟수는 총 3회이다. 경과시간 계산부(140)는 제1 및 제2 시각 (T1 내지 T2) 사이의 하이버네이션 경과시간을 하이버네이션 횟수로 나눔으로써 평균 하이버네이션 경과시간을 계산할 수 있다.
경과시간 계산부(140)는 호스트(102)로부터 수신한 절대시각, 상기 절대시각 이후의 비지 경과시간 및 하이버네이션 횟수 및 상기 제1 및 제2 시각(T1 및 T2) 사이의 평균 하이버네이션 경과시간 정보에 기초하여 시스템시각을 계산할 수 있다.
도 3을 참조하여 경과시간 계산부(140)가 현재(NOW)의 시스템시각을 계산하는 방법이 설명된다. 타이머(144)는 제3 시각(T3) 이후 현재(NOW)까지 제5 내지 제7 비지 경과시간(B5 내지 B7)에 동작하여 비지 경과시간을 측정할 수 있다. 타이머(144)는 제4 및 제5 하이버네이션 경과시간(H4 및 H5)에 동작하지 않을 수 있다. 카운터(142)는 제3 시각(T3) 이후 현재(NOW)까지의 하이버네이션 횟수를 측정할 수 있다. 도 3의 예에서는 제3 시각(T3) 이후 하이버네이션 횟수는 2회이다.
현재(NOW)의 시스템시각은 제3 시각(T3), 제5 내지 제6 비지 경과시간(B5 내지 B6), 제4 내지 제5 하이버네이션 경과시간(H4 내지 H5)의 합으로 계산될 수 있다. 경과시간 계산부(140)는 제1 내지 제2 시각(T1 내지 T2) 사이의 평균 하이버네이션 경과시간을 각각 제4 및 제5 하이버네이션 경과시간(H4 및 H5)으로 간주하고, 현재(NOW)의 시스템시각을 산출할 수 있다.
즉, 시스템시각은 호스트(102)로부터의 절대시각에 상기 절대시각 이후의 총 비지 경과시간 및 총 하이버네이션 경과시간을 더함으로써 산출될 수 있되, 상기 총 하이버네이션 경과시간은 상기 절대시각 이후의 하이버네이션 횟수 및 제1 및 제2 시각(T1 및 T2) 사이의 평균 하이버네이션 경과시간의 곱으로 산출될 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템(110)은 하이버네이션 상태일 때 타이머(144)가 동작하지 않고, 액티브 상태 및 하이버네이션 상태 사이의 상태 변경 시에 호스트(102)로부터 절대시각을 수신하지 않더라도 평균 하이버네이션 경과시간 및 하이버네이션 횟수에 기초하여 시스템시각을 산출할 수 있다. 메모리 시스템(110)은 상기 시스템시각에 기초하여 소정 주기로 메모리 장치(150) 사용량을 모니터링할 수 있다. 메모리 시스템(110)은 상기 모니터링된 메모리 장치(150) 사용량에 기초하여 메모리 시스템(110)의 보증기간을 보장하는 한도에서 메모리 시스템(110)의 성능 향상을 위해 추가적인 프로그램 및 이레이즈 동작을 수행할 수 있다.
도 4는 메모리 시스템(110)의 보증기간 및 메모리 장치(150)의 사용량을 설명하기 위한 도면이다.
도 4의 그래프의 가로축은 시각, 세로축은 메모리 장치(150)의 사용량을 나타낸다. 상기 그래프의 가로축에 메모리 시스템(110)의 사용 개시 시각 및 보증기간이 종료되는 시각이 도시된다. 상기 사용 개시 시각은 메모리 시스템(110)이 최초로 호스트(102)와 같은 컴퓨팅 시스템에 연결되어 사용된 시각을 나타낼 수 있다. 보증기간이 종료되는 시각은 상기 사용 개시 시각 이후의 경과시간이 보증기간에 도달한 시각을 나타낼 수 있다. 상기 그래프의 세로축에 메모리 장치(150)의 최대 사용량이 도시된다.
메모리 장치(150)에 포함된 메모리 셀 소자 특성상 메모리 장치(150)의 프로그램 동작 및 이레이즈 동작의 반복(이하, P/E 사이클) 횟수가 제한될 수 있다. 메모리 장치(150)의 메모리 블록 수와 상기 최대 P/E 사이클 횟수에 기초하여 해당 메모리 장치(150)의 최대 메모리 블록 사용량이 결정될 수 있다. 구체적으로, 상기 메모리 장치(150)의 용량과 상기 최대 P/E 사이클 횟수를 곱함으로써 메모리 장치(150)의 최대 사용량이 산출될 수 있다. 예를 들어, 메모리 장치(150)의 최대 P/E 사이클 횟수가 1천 회이고, 메모리 장치(150)의 용량이 128GB인 경우, 메모리 장치(150)는 최대 약 128TB의 데이터가 라이트된 후 수명을 다할 수 있다.
호스트(102)의 사용자는 메모리 시스템(110)의 보증기간 내에 메모리 시스템(110)에 상기 최대 사용량에 해당하는 만큼 많은 양의 데이터를 저장하지는 않을 수 있다. 도 4의 그래프의 실선은 메모리 시스템(110)의 실제 사용량을 나타낸다. 도 4는 보증기간 내 메모리 시스템(110)의 실제 사용량이 최대 사용량에 미치지 않는 경우를 예시한다.
본 발명의 일 실시예에 따르면, 메모리 시스템(110)은 메모리 장치(150)의 최대 사용량과 실제 사용량의 차에 해당하는 잉여 사용량을 메모리 시스템(110)의 성능을 향상시키기 위해 사용할 수 있다.
도 5는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작을 설명하기 위한 도면이다.
도 5의 그래프의 가로축은 시각, 세로축은 메모리 장치(150)의 사용량을 나타낸다. 상기 그래프의 가로축에 메모리 시스템(110)의 사용 개시 시각 및 보증기간이 종료되는 시각이 도시된다. 상기 그래프의 세로축에 메모리 장치(150)의 최대 사용량이 예시된다. 상기 그래프에 기대 사용량, 모니터링 경과시간의 실제 사용량, 모니터링 경과시간의 잉여 사용량 및 총 사용량이 예시된다.
도 4를 참조하여 설명된 최대 사용량 및 보증기간에 기초하여 경과시간에 따른 메모리 장치(150)의 기대 사용량이 결정될 수 있다. 상기 기대 사용량은 상기 최대 사용량을 보증기간으로 나눈 값에 경과시간을 곱함으로써 결정될 수 있다. 예를 들어, 메모리 장치(150)의 최대 사용량이 128TB이고 보증기간이 5년인 경우, 해당 메모리 장치(150)에 1년 동안에는 25.6TB 이하의 데이터가 프로그램되어야 보증기간이 만족될 것으로 기대할 수 있다. 최대 사용량인 128TB를 보증기간인 5년으로 나누고, 경과시간 1년을 곱함으로써 1년 동안의 기대 사용량이 결정될 수 있다.
메모리 시스템(110)은 소정 주기로 메모리 장치(150)의 실제 사용량을 모니터링할 수 있다. 메모리 시스템(110)은 직전 모니터링 시각부터 현재 모니터링 시각까지의 모니터링 경과시간의 실제 사용량이 상기 모니터링 경과시간의 기대 사용량에 미치지 못하는 경우 메모리 장치(150)의 총 사용량이 기대 사용량에 도달할 때까지 메모리 시스템(110)의 성능을 향상시키기 위한 동작을 수행할 수 있다.
예를 들어, 메모리 시스템(110)은 호스트(102)에 연결되어 사용되기 시작한 이래로 1일 주기로 메모리 장치(150)의 최근 1일의 실제 사용량을 모니터링할 수 있다. 메모리 시스템(110)은 메모리 장치(150)의 1일 동안의 실제 사용량이 1일 동안의 기대 사용량에 미치지 못하는 경우 메모리 시스템(110)의 성능을 향상시키기 위한 추가적인 프로그램 및 이레이즈 동작을 수행할 수 있다.
도 5의 그래프의 가로축에 메모리 시스템(110)이 상기 실제 사용량을 모니터링하는 제1 내지 제3 모니터링 시각(M1 내지 M3)이 예시된다.
도 5를 참조하면, 메모리 시스템(110)은 제1 모니터링 시각(M1)에, 메모리 시스템(110)의 사용 개시 시각부터 제1 모니터링 시각(M1)까지의 제1 모니터링 경과시간의 실제 사용량을 산출할 수 있다.
일 실시예에서, 메모리 시스템(110)은 메모리 장치(150)의 블록별 P/E사이클 횟수를 저장할 수 있다. 메모리 시스템(110)은 제1 모니터링 경과시간 동안의 총 P/E사이클 횟수 변화량에 기초하여 메모리 장치(150)의 실제 사용량을 산출할 수 있다.
일 실시예에서, 메모리 시스템(110)은 제1 모니터링 경과시간 동안에 호스트(102)로부터 수신되는 데이터의 양에 기초하여 메모리 장치(150)의 실제 사용량을 산출할 수 있다.
제1 모니터링 시각(M1)에서 실제 사용량이 기대 사용량에 미치지 못할 수 있다. 메모리 시스템(110)은 제1 모니터링 시각(M1)에서의 기대 사용량과 실제 사용량의 차를 잉여 사용량으로 결정하고, 성능을 향상시키기 위한 동작을 수행하면서 상기 잉여 사용량을 소모할 수 있다. 메모리 시스템(110)은 제1 모니터링 시각(M1) 이후 상기 잉여 사용량을 모두 소모할 때까지 성능 향상을 위한 추가적인 동작을 수행할 수 있다. 상기 잉여 사용량을 모두 소모하면 메모리 시스템(110)은 상기 추가적인 동작을 수행하지 않을 수 있다.
메모리 시스템(110)은 제2 모니터링 시각(M2)에, 제1 모니터링 시각(M1)부터 제2 모니터링 시각(M2)까지의 제2 모니터링 경과시간의 실제 사용량을 산출할 수 있다. 일 실시예에서, 메모리 시스템(110)은 제2 모니터링 경과시간 동안의 사용량에서 제1 모니터링 시각(M1)에 결정된 잉여 사용량을 제외하여 실제 사용량을 산출할 수 있다. 상기 제2 모니터링 경과시간 동안의 사용량은 메모리 장치(150)의 P/E사이클 횟수 변화량 또는 호스트(102)로부터 수신된 데이터 양에 기초하여 산출될 수 있다. 메모리 시스템(110)은 제2 모니터링 경과시간의 기대 사용량을 산출하고, 상기 제2 모니터링 경과시간의 실제 사용량과 기대 사용량에 기초하여 잉여 사용량을 결정하고, 상기 잉여 사용량을 모두 소모할 때까지 추가적인 동작을 수행할 수 있다.
메모리 시스템(110)은 제3 모니터링 시각(M3)에서도 마찬가지로, 제2 모니터링 시각(M2)부터 제3 모니터링 시각(M3)까지의 제3 모니터링 경과시간의 실제 사용량을 산출하고, 상기 실제 사용량을 제3 모니터링 경과시간의 기대 사용량과 비교하여 잉여 사용량을 결정하고, 상기 잉여 사용량을 모두 소모할 때까지 추가적인 동작을 수행할 수 있다.
메모리 시스템(110)은 도 1 내지 3을 참조하여 설명한 경과시간 계산부(140)를 사용하여 산출한 시스템경과시간에 기초하여 소정 주기로 실제 사용량을 모니터링할 수 있다. 메모리 시스템(110)은 하이버네이션 상태에서 호스트(102)로부터 절대시각을 수신하지 않더라도 시스템시각을 산출함으로써 정확한 주기로 실제 사용량을 모니터링하고, 잉여 사용량을 결정하고, 성능을 향상시키기 위한 추가적인 동작을 수행할 수 있다.
일 실시예에서, 메모리 시스템(110)은 메모리 장치(150)의 잉여 사용량이 있는 경우 상기 잉여 사용량을 모두 소모할 때까지 추가적인 가비지 콜렉션 동작을 수행함으로써 메모리 장치(150)의 프리 블록을 충분히 확보할 수 있다.
일 실시예에서, 메모리 시스템(110)은 잉여 사용량이 있는 경우 상기 잉여 사용량을 모두 소모할 때까지 메모리 장치(150)에 데이터를 싱글 레벨 셀 모드로 프로그램하고, 소정 경과시간 이후 상기 싱글 레벨 셀 모드로 프로그램된 데이터를 멀티 레벨 셀 모드로 프로그램할 수 있다. 메모리 시스템(110)은 데이터를 싱글 레벨 셀 모드로 프로그램함으로써 프로그램 성능을 향상시킬 수 있으며, 상기 데이터가 멀티 레벨 셀 모드로 다시 프로그램되기 전까지는 리드 성능 또한 향상시킬 수 있다.
도 5를 참조하면, 메모리 시스템(110)은 소정 주기로 잉여 사용량이 있는지 판단하고, 잉여 사용량이 있는 경우 잉여 사용량을 모두 소모할 때까지 추가적인 동작을 수행함으로써 보증기간 종료시각까지 메모리 장치(150)의 기대 사용량에 가까운 총 사용량을 소모할 수 있다. 메모리 시스템(110)은 메모리 시스템 사용 개시 시각으로부터 소정의 보증기간을 만족하면서 잉여 사용량을 소모함으로써 사용자에게 메모리 시스템(110)의 높은 성능을 제공할 수 있다.
도 6a 및 도 6b는 가비지 콜렉션 동작을 설명하기 위한 도면이다.
도 6a 및 도 6b는 각각 다섯 개의 메모리 블록들을 포함하는 메모리 장치(150)를 예시한다.
각 메모리 블록은 복수의 워드라인들에 접속된 메모리 셀들을 포함할 수 있다. 하나의 워드라인에 접속된 메모리 셀들을 페이지라 하면, 각 메모리 블록은 복수의 페이지들을 포함할 수 있다. 도 6a 및 도 6b에 도시된 메모리 블록들은 각각 열 개의 페이지들을 포함할 수 있다.
메모리 장치(150)는 라이트 동작을 수행하기 위해 워드라인에 전압을 인가한다. 즉, 메모리 장치(150)의 라이트 동작의 최소 단위는 하나의 워드라인에 접속된 메모리 셀들, 즉 하나의 페이지 단위일 수 있다.
메모리 장치(150)는 이레이즈 동작을 수행하기 위해 메모리 블록에 포함된 모든 워드라인에 전압을 인가함으로써 메모리 블록에 포함된 메모리 셀들에 트랩된 전하를 제거할 수 있다. 즉, 메모리 장치(150)의 이레이즈 동작의 최소 단위는 하나의 메모리 블록 단위일 수 있다.
메모리 장치(150)의 라이트 동작의 단위와 이레이즈 동작의 단위가 서로 다를 수 있으며, 메모리 장치(150)는 덮어쓰기 연산을 지원하지 않는다. 따라서, 메모리 장치(150)를 제어하는 컨트롤러는 어떤 페이지에 저장된 데이터를 갱신하기 위해 갱신할 데이터를 다른 페이지에 라이트하도록 메모리 장치를 제어하고, 기존 페이지의 데이터를 무효화한다.
도 6a 및 도 6b에서 유효 데이터를 저장하는 유효 페이지는 "VALID", 무효 데이터를 저장하는 무효 페이지는 "INVALID", 이레이즈 페이지는 "ERASE"로 도시되어 있다. 모든 페이지가 이레이즈 페이지인 제5 메모리 블록(BLOCK5)은 프리 블록이다. 메모리 장치(150) 내에 무효 페이지가 증가하면 데이터를 저장할 수 있는 메모리 공간이 부족해질 수 있다. 도 6a의 예에서, 메모리 장치(150)의 메모리 영역의 22%만이 유효 데이터를 포함하고 있으나, 데이터를 저장할 수 있는 메모리 영역은 20%에 불과하다.
메모리 블록의 무효 데이터를 제거하기 위해, 상기 컨트롤러가 희생 블록(VICTIM_BLOCK)의 유효 데이터를 타겟 블록(TARGET_BLOCK)에 프로그램하도록 메모리 장치(150)를 제어하고, 상기 희생 블록의 이레이즈 동작을 수행하도록 메모리 장치(150)를 제어하는 일련의 동작을 가비지 콜렉션(GC: Garbage Collection) 동작이라 한다. 도 6a에서, 유효 페이지의 개수가 적은 제2 내지 제4 메모리 블록(BLOCK2 내지 BLOCK4)이 희생 블록(VICTIM_BLOCK)으로 결정되고, 프리 블록인 제5 메모리 블록(BLOCK5)이 타겟 블록(TARGET_BLOCK)으로 결정될 수 있다.
도 6b는 도 6a의 메모리 장치(150)가 가비지 콜렉션 동작이 수행된 경우를 예시한다. 희생 블록(VICTIM_BLOCK)의 유효한 데이터를 타겟 블록(TARGET_BLOCK)에 복사하고, 희생 블록(VICTIM_BLOCK)을 이레이즈하면 세 개의 프리 블록이 생성될 수 있다. 메모리 시스템(110)은 가비지 콜렉션 동작을 수행함으로써 메모리 장치(150)에서 데이터를 저장할 수 있는 메모리 공간을 확보할 수 있다.
가비지 콜렉션 동작은 메모리 장치(150)의 메모리 공간 확보를 위해 필수적인 동작이다. 그러나 가비지 콜렉션 동작은 메모리 블록의 프로그램 동작 및 이레이즈 동작을 포함하므로 가비지 콜렉션 동작이 자주 수행되면 메모리 장치(150)의 수명이 감소할 수 있다. 메모리 시스템(110)은 메모리 장치(150)의 프리 블록 수가 임계치 미만인 경우에 가비지 콜렉션 동작을 수행할 수 있다.
일 실시예에서, FTL(134)은 메모리 장치(150)의 잉여 사용량이 있는 경우 상기 잉여 사용량을 모두 소모할 때까지 가비지 콜렉션 동작을 수행하기 위한 프리 블록 수 임계치를 증가시킬 수 있다.
도 7은 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작을 나타내는 흐름도이다.
단계 S702에서, FTL(134)은 소정 주기로 메모리 장치(150)의 실제 사용량을 모니터링할 수 있다.
예를 들어, FTL(134)은 경과시간 계산부(140)로부터 시스템시각을 획득할 수 있다. FTL(134)은 상기 시스템시각에 기초하여 메모리 시스템(110)의 모니터링 경과시간이 소정 주기에 도달하면 상기 실제 사용량을 모니터링할 수 있다. 예를 들어, 상기 소정 주기는 1일 주기일 수 있다.
예를 들어, FTL(134)은 메모리 장치(150)의 각 메모리 블록의 P/E 사이클 횟수들로부터 메모리 장치(150)의 실제 사용량을 산출할 수 있다. 상기 각 메모리 블록의 P/E 사이클 횟수들은 각 메모리 블록이 이레이즈될 때마다 업데이트되어 메모리(146) 또는 메모리 장치(150)에 저장될 수 있다.
단계 S704에서, FTL(134)은 메모리 시스템(110)의 보증 수명, 메모리 장치(150)의 최대 사용량 및 메모리 시스템(110) 모니터링 경과시간에 기초하여 결정된 기대 사용량과 상기 모니터링된 실제 사용량을 비교할 수 있다.
실제 사용량이 기대 사용량 이상인 경우(단계 S704에서, "NO"), FTL(134)은 동작을 종료한다.
실제 사용량이 기대 사용량보다 적은 경우(단계 S704에서, "YES"), FTL(134)은 단계 S706에서 잉여 사용량을 산출할 수 있다. 상기 잉여 사용량은 기대 사용량과 실제 사용량의 차에 의해 산출될 수 있다.
단계 S708에서, FTL(134)은 상기 잉여 사용량을 모두 소모할 때까지 추가적인 가비지 콜렉션 동작을 수행할 수 있다. 예를 들어, FTL(134)은 메모리 장치(150)의 가비지 콜렉션 동작을 수행하기 위한 프리 블록 수 임계치를 증가시킬 수 있다. 상기 프리 블록 수 임계치가 증가하면 프리 블록 수가 부족하지 않은 경우에도 추가적인 가비지 콜렉션 동작이 수행될 수 있다. FTL(134)은 상기 프리 블록 수 임계치를 증가시킴으로써 상기 잉여 사용량을 소모하면서 상기 추가적인 가비지 콜렉션 동작을 수행할 수 있다. FTL(134)은 상기 추가적인 가비지 콜렉션 동작을 수행함으로써 메모리 장치(150)의 여유 공간을 충분히 확보할 수 있다. FTL(134)은 메모리 장치(150)의 실제 사용량을 모니터링하여 잉여 사용량을 모두 소모한 경우 상기 프리 블록 수 임계치를 감소시킬 수 있다.
도 8a 및 도 8b는 메모리 장치(150)에 포함된 메모리 셀들의 문턱 전압 분포를 예시하는 도면이다.
구현에 따라, 메모리 장치(150)는 플래시 메모리, 예컨대 NAND 플래시 메모리와 같은 비휘발성 메모리일 수 있다. 그러나, 메모리 장치(150)는 상변환 메모리(PCRAM: Phase Change Random Access Memory), 저항 메모리(RRAM(ReRAM): Resistive Random Access Memory), 강유전체 메모리(FRAM: Ferroelectrics Random Access Memory), 및 스핀 주입 자기 메모리(STT-RAM(STT-MRAM): Spin Transfer Torque Magnetic Random Access Memory) 등과 같은 메모리들 중 어느 하나의 메모리로 구현될 수도 있다. 메모리 장치(150)는 하나의 메모리 셀에 두 비트 이상의 데이터를 저장할 수 있는 멀티 레벨 셀 메모리 블록을 포함하는 복수의 메모리 블록들을 포함할 수 있다. 멀티 레벨 셀 모드로 프로그램된 멀티 레벨 셀은 두 비트 이상의 데이터를 저장할 수 있다. 싱글 레벨 셀 모드로 프로그램된 멀티 레벨 셀은 한 비트의 데이터를 저장할 수 있다.
도 8a는 멀티 레벨 셀 모드로 프로그램된 메모리 셀들의 문턱 전압 분포를 예시하는 그래프이다.
도 8a의 그래프의 가로축은 문턱 전압을 나타내고, 세로 축은 해당 문턱 전압을 갖는 메모리 셀들의 수를 나타낸다.
도 8a의 예에서, 메모리 셀들은 문턱 전압 분포에 따라 네 개의 상태(11, 01, 10, 00) 중 어느 하나를 갖도록 멀티 레벨 셀 모드로 프로그램될 수 있다. 예를 들어, 이레이즈 상태인 '11'상태를 갖는 메모리 셀들은 '11'상태 또는 '10'상태를 갖도록 제1 프로그램될 수 있다. 제1 프로그램된 메모리 셀들 중 '11'상태를 갖는 메모리 셀들은 '11'상태 또는 '01'상태를 갖도록 제2 프로그램되고, '10'상태를 갖는 메모리 셀들은 '10'상태 또는 '00'상태를 갖도록 제3 프로그램될 수 있다. 도 8a에 실선으로 도시된 문턱 전압 분포는 메모리 셀들이 이상적으로 프로그램된 경우의 문턱 전압 분포를 나타낸다.
도 8b는 싱글 레벨 셀 모드로 프로그램된 메모리 셀들의 문턱 전압 분포를 나타내는 그래프이다.
도 8b의 그래프의 가로축은 문턱 전압을 나타내고, 세로 축은 해당 문턱 전압을 갖는 메모리 셀들의 수를 나타낸다.
도 8b를 참조하면, 메모리 셀들은 문턱 전압 분포에 따라 두 개의 상태(1, 0) 중 어느 하나를 갖도록 싱글 레벨 셀 모드로 프로그램될 수 있다. 예를 들어, 이레이즈 상태인 '1'상태를 갖는 메모리 셀들은 '1'상태 또는 '0'상태를 갖도록 프로그램될 수 있다. 도 8a에 실선으로 도시된 문턱 전압 분포는 메모리 셀들이 이상적으로 프로그램된 경우의 문턱 전압 분포를 나타낸다.
메모리 장치(150)가 메모리 셀들을 멀티 레벨 셀 모드로 프로그램하면 메모리 칩의 면적당 저장 용량이 증가할 수 있다. 그러나, 메모리 장치(150)가 메모리 셀들을 멀티 레벨 셀 모드로 프로그램하면 싱글 레벨 셀 모드로 프로그램하는 경우보다 정교한 프로그램을 위해 워드라인에 더 많은 횟수의 프로그램 전압을 인가해야 할 수 있다. 메모리 장치(150)는 멀티 레벨 셀 모드로 프로그램된 데이터의 리드 동작을 수행할 때도 싱글 레벨 셀 모드로 프로그램된 데이터의 리드 동작을 수행할 때보다 많은 문턱 전압 상태를 구분하기 위해 워드라인에 더 많은 횟수의 리드 전압을 인가해야 한다. 따라서 메모리 장치(150)가 메모리 셀들을 싱글 레벨 셀 모드로 프로그램하는 경우 메모리 장치(150)의 액세스 성능은 증가할 수 있다.
일 실시예에서, FTL(134)은 메모리 장치(150)의 잉여 사용량이 있는 경우 상기 잉여 사용량을 모두 소모할 때까지 데이터를 싱글 레벨 셀 모드로 프로그램할 수 있다. FTL(134)은 상기 데이터가 프로그램된 지 소정 경과시간 후에 상기 데이터를 멀티 레벨 셀 모드로 프로그램하고, 상기 싱글 레벨 셀 모드로 프로그램된 데이터를 이레이즈할 수 있다.
도 9는 본 발명의 일 실시예에 따른 메모리 시스템(110)의 동작을 나타내는 흐름도이다.
단계 S902에서, FTL(134)은 소정 주기로 메모리 장치(150)의 실제 사용량을 모니터링할 수 있다. 단계 S902의 동작은 단계 S702의 동작과 대응한다.
단계 S904에서, FTL(134)은 메모리 시스템(110)의 보증 수명, 메모리 장치(150)의 최대 사용량 및 메모리 시스템(110)의 모니터링 경과시간에 기초하여 결정된 기대 사용량과 상기 모니터링된 실제 사용량을 비교할 수 있다.
실제 사용량이 기대 사용량 이상인 경우(단계 S904에서, "NO"), 단계 S906에서 FTL(134)은 라이트 요청에 응하여 데이터를 멀티 레벨 셀 모드로 프로그램하도록 메모리 장치(150)를 제어할 수 있다.
실제 사용량이 기대 사용량보다 적은 경우(단계 S904에서, "YES"), FTL(134)은 단계 S908에서 잉여 사용량을 산출할 수 있다.
단계 S910에서, FTL(134)은 상기 잉여 사용량을 모두 소모할 때까지 라이트 요청에 응하여 데이터를 싱글 레벨 셀 모드로 프로그램하도록 메모리 장치(150)를 제어할 수 있다. 상기 라이트 요청은 호스트(102)로부터 수신한 유저 데이터 라이트 요청을 포함할 수 있다. 구현에 따라, FTL(134)은 경과시간 계산부(140)로부터의 시스템시각에 기초하여 상기 데이터의 프로그램 동작 수행 시각을 메모리(146)에 저장할 수 있다.
메모리 장치(150)가 같은 양의 데이터를 싱글 레벨 셀 모드로 프로그램하면 멀티 레벨 셀 모드로 프로그램하는 경우보다 메모리 사용량이 몇 배 증가할 수 있다. 그러나 메모리 장치(150)가 데이터를 싱글 레벨 셀 모드로 프로그램하면 프로그램 동작의 성능이 향상될 수 있다. 그리고 메모리 장치(150)가 싱글 레벨 셀 모드로 프로그램된 데이터를 리드하는 경우 리드 동작의 성능이 향상될 수 있다. FTL(134)은 잉여 사용량을 소모할 때까지 데이터를 싱글 레벨 셀 모드로 프로그램하도록 메모리 장치(150)를 제어함으로써 메모리 시스템(110)의 보증 기간을 보장하면서 메모리 장치(150)의 액세스 성능을 향상시킬 수 있다.
상기 데이터가 프로그램된 지 소정 경과시간 후에, 단계 S912에서 FTL(134)은 상기 데이터를 멀티 레벨 셀 모드로 프로그램하고, 상기 싱글 레벨 셀 모드로 프로그램된 데이터를 이레이즈하도록 메모리 장치(150)를 제어할 수 있다. 단계 S912는 백그라운드 동작으로 수행될 수 있다. FTL(134)은 경과시간 계산부(140)로부터의 시스템 시각 및 메모리(146)에 저장된 프로그램 동작 수행 시각을 참조하여 상기 데이터가 프로그램 후 경과시간이 지났는지를 판단할 수 있다.
본 발명의 일 실시예에 따르면, 메모리 시스템(110)의 경과시간 계산부(140)는 하이버네이션 상태에서 타이머(144)가 동작하지 않고, 하이버네이션 상태에서 비지 상태로 변경될 때 호스트(102)로부터 절대시각을 수신하지 않더라도 시스템시각을 산출할 수 있다. 경과시간 계산부(140)는 평균 하이버네이션 경과시간, 최근 수신한 절대시각 이후의 비지 경과시간 및 상기 최근 수신한 절대시각 이후 하이버네이션 횟수에 기초하여 시스템시각을 계산할 수 있다.
FTL(134)은 상기 시스템시각에 기초하여 소정 주기로 메모리 장치(150)의 잉여 사용량을 산출할 수 있다. 상기 잉여 사용량만큼 메모리 장치(150)의 프로그램 동작 및 이레이즈 동작이 더 수행되더라도 메모리 장치(150)의 수명은 메모리 시스템(110)의 보증 기간까지는 보장될 수 있다. FTL(134)은 상기 잉여 사용량을 소모할 때까지 추가적인 프로그램 동작 및 이레이즈 동작을 수행함으로써 메모리 장치(150)의 성능을 향상시킬 수 있다. 상기 추가적인 프로그램 동작의 예는 추가적인 가비지 콜렉션 동작 또는 데이터를 싱글 레벨 셀 모드로 프로그램하는 동작 등이 있다. 본 발명의 일 실시예에 따르면 메모리 시스템(110)은 보증 기간을 보장하면서도 사용자에게 향상된 성능을 제공할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
102: 호스트
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치

Claims (20)

  1. 메모리 장치를 제어하는 컨트롤러에 있어서,
    액티브(active) 상태 및 비 액티브 상태 간의 상태 변경 시마다 호스트로부터 절대시각을 수신하고, 제1 및 제2 절대시각 사이 경과시간의 평균 하이버네이션(hibernation) 경과시간을 산출하고, 제3 절대시각 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 산출하는 경과시간 계산부; 및
    상기 시스템시각에 기초하여 모니터링 경과시간에 따른 상기 메모리 장치의 기대 사용량을 산출하고, 상기 모니터링 경과시간의 상기 메모리 장치의 실제 사용량과 상기 기대 사용량에 기초하여 잉여 사용량을 산출하고, 상기 잉여 사용량을 소모할 때까지 상기 메모리 장치가 싱글 레벨 셀 모드로 데이터를 프로그램하도록 제어하는 FTL(flash translation layer)
    을 포함하는 컨트롤러.
  2. 제1항에 있어서,
    상기 시스템시각에 기초하여 상기 데이터의 프로그램 동작 시각을 저장하는 메모리
    를 더 포함하는 컨트롤러.
  3. 제2항에 있어서,
    상기 FTL은
    상기 데이터의 프로그램 동작 시각으로부터 소정 경과시간 후 상기 데이터를 멀티 레벨 셀 모드로 프로그램하는
    컨트롤러.
  4. 제1항에 있어서,
    상기 FTL은
    상기 잉여 사용량을 소모한 이후 상기 메모리 장치가 멀티 레벨 셀 모드로 데이터를 프로그램하도록 제어하는
    컨트롤러.
  5. 제1항에 있어서,
    상기 경과시간 계산부는
    상기 제1 및 제2 절대시각 사이 경과시간 및 상기 제1 및 제2 절대시각 사이의 비지 경과시간에 기초하여 상기 제1 및 제2 절대시각 사이의 총 하이버네이션 경과시간을 산출하고, 상기 총 하이버네이션 경과시간 및 상기 제1 및 제2 절대시각 사이의 하이버네이션 횟수에 기초하여 상기 평균 하이버네이션 경과시간을 산출하는
    컨트롤러.
  6. 제1항에 있어서,
    상기 경과시간 계산부는
    상기 제3 절대시각 이후의 하이버네이션 횟수 및 상기 평균 하이버네이션 경과시간에 기초하여 상기 제3 절대시각 이후의 총 하이버네이션 경과시간을 산출하고, 상기 제3 절대시각 이후의 비지 경과시간 및 상기 제3 절대시각 이후의 총 하이버네이션 경과시간에 기초하여 시스템시각을 산출하는
    컨트롤러.
  7. 제1항에 있어서,
    상기 FTL은
    메모리 장치에 포함된 메모리 블록들의 이레이즈 동작이 수행될 때마다 상기 메모리 블록들의 P/E 사이클들을 업데이트하고, 상기 P/E 사이클들에 기초하여 상기 실제 사용량을 산출하는
    컨트롤러.
  8. 제1항에 있어서,
    상기 FTL은 상기 메모리 장치의 용량 및 수명에 따라 결정되는 최대 사용량, 상기 메모리 시스템의 보증 기간 및 상기 모니터링 경과시간에 기초하여 상기 기대 사용량을 산출하는
    컨트롤러.
  9. 제1항에 있어서,
    상기 비 액티브 상태는 슬립 상태 및 파워 오프 상태를 포함하는
    컨트롤러.
  10. 제5항에 있어서,
    상기 비지 경과시간을 측정하는 타이머; 및
    상기 하이버네이션 횟수를 카운트하는 카운터
    를 더 포함하는 컨트롤러.
  11. 메모리 장치를 제어하는 컨트롤러에 있어서,
    액티브 상태 및 비 액티브 상태 간의 상태 변경 시마다 호스트로부터 절대시각을 수신하고, 제1 및 제2 절대시각 사이 경과시간의 평균 하이버네이션 경과시간을 산출하고, 제3 절대시각 및 상기 평균 하이버네이션 경과시간에 기초하여 시스템시각을 지속적으로 산출하는 경과시간 계산부; 및
    프리 블록 개수가 임계치 미만인지 여부에 따라 가비지 콜렉션 동작을 수행하되, 상기 시스템시각에 기초하여 모니터링 경과시간에 따른 상기 메모리 장치의 기대 사용량을 산출하고, 상기 모니터링 경과시간의 상기 메모리 장치의 실제 사용량과 상기 기대 사용량에 기초하여 잉여 사용량을 산출하고, 상기 잉여 사용량을 소모할 때까지 상기 임계치를 변경하는 FTL
    을 포함하는 컨트롤러.
  12. 제11항에 있어서,
    상기 FTL은
    상기 잉여 사용량을 소모할 때까지 상기 임계치를 증가시키는
    컨트롤러.
  13. 제11항에 있어서,
    상기 FTL은
    상기 메모리 시스템의 사용 개시 시각 및 시스템시각에 기초하여 상기 경과시간을 산출하는
    컨트롤러.
  14. 제11항에 있어서,
    상기 FTL은
    희생 블록의 유효 데이터를 타겟 블록에 프로그램하고, 상기 희생 블록의 이레이즈 동작을 수행하도록 상기 메모리 장치를 제어함으로써 가비지 콜렉션 동작을 수행하는
    컨트롤러.
  15. 제11항에 있어서,
    상기 경과시간 계산부는
    상기 제1 및 제2 절대시각 사이 경과시간 및 상기 제1 및 제2 절대시각 사이의 비지 경과시간에 기초하여 상기 제1 및 제2 절대시각 사이의 총 하이버네이션 경과시간을 산출하고, 상기 총 하이버네이션 경과시간 및 상기 제1 및 제2 절대시각 사이의 하이버네이션 횟수에 기초하여 상기 평균 하이버네이션 경과시간을 산출하는
    컨트롤러.
  16. 제11항에 있어서,
    상기 경과시간 계산부는
    상기 제3 절대시각 이후의 하이버네이션 횟수 및 상기 평균 하이버네이션 경과시간에 기초하여 상기 제3 절대시각 이후의 총 하이버네이션 경과시간을 산출하고, 상기 제3 절대시각 이후의 비지 경과시간 및 상기 제3 절대시각 이후의 총 하이버네이션 경과시간에 기초하여 시스템시각을 산출하는
    컨트롤러.
  17. 제11항에 있어서,
    상기 FTL은
    메모리 장치에 포함된 메모리 블록들의 이레이즈 동작이 수행될 때마다 상기 메모리 블록들의 P/E 사이클들을 업데이트하고, 상기 P/E 사이클들에 기초하여 상기 실제 사용량을 산출하는
    컨트롤러.
  18. 제11항에 있어서,
    상기 FTL은 상기 메모리 장치의 용량 및 수명에 따라 결정되는 최대 사용량, 상기 메모리 시스템의 보증 기간 및 상기 모니터링 경과시간에 기초하여 상기 기대 사용량을 산출하는
    컨트롤러.
  19. 제11항에 있어서,
    상기 비 액티브 상태는 슬립 상태 및 파워 오프 상태를 포함하는
    컨트롤러.
  20. 제15항에 있어서,
    상기 비지 경과시간을 측정하는 타이머; 및
    상기 하이버네이션 횟수를 카운트하는 카운터
    를 더 포함하는 컨트롤러.

KR1020190064392A 2019-05-31 2019-05-31 메모리 시스템 및 메모리 시스템의 동작방법 KR20200137664A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190064392A KR20200137664A (ko) 2019-05-31 2019-05-31 메모리 시스템 및 메모리 시스템의 동작방법
US16/721,703 US11288157B2 (en) 2019-05-31 2019-12-19 Controller and operation method thereof
CN201911362325.3A CN112015332A (zh) 2019-05-31 2019-12-26 控制器及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190064392A KR20200137664A (ko) 2019-05-31 2019-05-31 메모리 시스템 및 메모리 시스템의 동작방법

Publications (1)

Publication Number Publication Date
KR20200137664A true KR20200137664A (ko) 2020-12-09

Family

ID=73506993

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190064392A KR20200137664A (ko) 2019-05-31 2019-05-31 메모리 시스템 및 메모리 시스템의 동작방법

Country Status (3)

Country Link
US (1) US11288157B2 (ko)
KR (1) KR20200137664A (ko)
CN (1) CN112015332A (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210050635A (ko) * 2019-10-28 2021-05-10 삼성전자주식회사 메모리 장치, 및 이를 포함하는 컴퓨터 시스템
US11237955B2 (en) * 2019-10-28 2022-02-01 Samsung Electronics Co., Ltd. Memory device, method of operating memory device, and computer system including memory device
US11709617B2 (en) * 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification
CN112665124A (zh) * 2020-12-11 2021-04-16 珠海格力电器股份有限公司 一种空调控制方法、装置及空调设备
US11580018B2 (en) * 2021-04-25 2023-02-14 Silicon Motion, Inc. Method and apparatus for page validity management and related storage system
CN113220227B (zh) * 2021-04-27 2022-10-14 锐捷网络股份有限公司 信息存取任务的睡眠时长动态调整方法及装置
US11886266B2 (en) * 2021-06-09 2024-01-30 Micron Technology, Inc. Dynamic power control

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090004846U (ko) 2007-11-16 2009-05-20 캐리 테크놀로지 컴퍼니 리미티드 잉여 수명 정보 표시 가능한 휴대식 플래시 메모리스토리지 장치
JP4991605B2 (ja) * 2008-03-19 2012-08-01 株式会社東芝 データ記憶装置およびその制御方法
US8578143B2 (en) * 2011-05-17 2013-11-05 Apple Inc. Modifying operating parameters based on device use
US10877530B2 (en) * 2014-12-23 2020-12-29 Intel Corporation Apparatus and method to provide a thermal parameter report for a multi-chip package
KR102291806B1 (ko) 2015-04-20 2021-08-24 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102488673B1 (ko) 2015-10-12 2023-01-16 삼성전자주식회사 저전력 모드로의 진입 시간을 예측할 수 있는 제어 회로와 이를 포함하는 장치
KR102480017B1 (ko) * 2017-08-11 2022-12-21 삼성전자 주식회사 입출력 장치의 성능 및 전력소모를 조절하는 메모리 컨트롤러, 어플리케이션 프로세서 및 메모리 컨트롤러의 동작방법
KR20200137682A (ko) 2019-05-31 2020-12-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법

Also Published As

Publication number Publication date
US20200379861A1 (en) 2020-12-03
US11288157B2 (en) 2022-03-29
CN112015332A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
KR20200137664A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US9778878B2 (en) Method and system for limiting write command execution
US9916087B2 (en) Method and system for throttling bandwidth based on temperature
US9507711B1 (en) Hierarchical FTL mapping optimized for workload
US9880605B2 (en) Method and system for throttling power consumption
CN108369818B (zh) 一种闪存设备的刷新方法和装置
WO2015057458A1 (en) Biasing for wear leveling in storage systems
CN110058797A (zh) 存储器系统及其操作方法
US20210157723A1 (en) Memory system and operation method thereof
US10957411B2 (en) Apparatus and method for managing valid data in memory system
US11069398B2 (en) Controller and operating method thereof
KR20200126533A (ko) 메모리 시스템 및 그의 온도 조절 방법
US11061815B2 (en) Memory system, memory controller and operating method
CN107045484B (zh) 数据存储装置
US11748013B2 (en) Grouping blocks based on power cycle and power on time
US10769061B2 (en) Memory system with read reclaim during safety period
US11977480B2 (en) Scaling factors for media management operations at a memory device
KR20210006121A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20200019342A1 (en) Determination of data integrity based on sentinel cells
KR20210024722A (ko) 수행가능성을 예측하여 내부동작을 수행하는 메모리 시스템 및 메모리 시스템을 포함하는 데이터 처리 시스템
US11789862B2 (en) Power-on-time based data relocation
US20240071440A1 (en) Determining read voltage offset in memory devices
WO2023028758A1 (en) Write performance optimization for erase on demand
US20240036741A1 (en) Memory system, memory controller and method for operating memory system, capable of determining target meta memory block on the basis of detected target state
KR20200006829A (ko) 메모리 시스템 및 그것의 동작방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right