KR20210089853A - 컨트롤러 및 컨트롤러의 동작방법 - Google Patents
컨트롤러 및 컨트롤러의 동작방법 Download PDFInfo
- Publication number
- KR20210089853A KR20210089853A KR1020200002903A KR20200002903A KR20210089853A KR 20210089853 A KR20210089853 A KR 20210089853A KR 1020200002903 A KR1020200002903 A KR 1020200002903A KR 20200002903 A KR20200002903 A KR 20200002903A KR 20210089853 A KR20210089853 A KR 20210089853A
- Authority
- KR
- South Korea
- Prior art keywords
- logical address
- memory
- block
- determining
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
- G11C16/3495—Circuits 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
- G06F2212/1036—Life time enhancement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
메모리 블록들을 포함하는 메모리 장치를 제어하는 컨트롤러의 동작 방법은 상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하는 단계; 상기 후보 블록들 각각에 포함된 복수의 페이지들과 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록(victim block)을 결정하는 단계; 및 상기 희생 블록의 데이터를 목적지 블록(destination block)으로 이동시키는 단계를 포함한다.
Description
본 발명은 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
메모리 장치를 이용한 데이터 저장 장치는 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 효율적인 웨어 레벨링 동작을 수행할 수 있는 컨트롤러 및 그의 동작 방법을 제공하고자 한다.
본 발명의 실시 예에 따르면, 메모리 블록들을 포함하는 메모리 장치를 제어하는 컨트롤러의 동작 방법은 상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하는 단계; 상기 후보 블록들 각각에 포함된 복수의 페이지들과 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록(victim block)을 결정하는 단계; 및 상기 희생 블록의 데이터를 목적지 블록(destination block)으로 이동시키는 단계를 포함한다.
본 발명의 실시 예에 따르면, 메모리 블록들을 포함하는 메모리 장치를 제어하는 컨트롤러는 메모리 장치에 저장되는 데이터의 업데이트 카운트를 논리 주소별로 저장하고, 메모리 블록별 이레이즈 카운트를 저장하는 메모리; 및 상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하고, 상기 후보 블록들 각각에 포함된 복수의 페이지들과 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록을 결정하고, 상기 희생 블록의 데이터를 목적지 블록으로 이동시키는 FTL(Flash Translation Layer)을 포함한다.
본 발명은 효율적인 웨어 레벨링 동작을 수행함으로써 메모리 시스템의 성능과 수명을 향상시킬 수 있는 컨트롤러 및 그의 동작 방법을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 컨트롤러를 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 본 발명의 실시 예에 따른 컨트롤러의 동작을 나타내는 흐름도이다.
도 3 내지 도 5는 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 컨트롤러의 동작을 나타내는 흐름도이다.
도 3 내지 도 5는 본 발명의 실시 예에 따른 컨트롤러의 동작을 설명하기 위한 도면이다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 실시 예에 따른 컨트롤러(130)를 포함하는 데이터 처리 시스템(100)의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은, 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예컨대 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(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차원 스택 구조를 가질 수 있다.
메모리 시스템(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) 등과 같은 메모리 카드를 구성할 수 있다.
다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
메모리 장치(150)는 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 메모리 장치(150)는 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 메모리 장치(150)에 저장된 데이터를 제공할 수 있다. 메모리 장치(150)는 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 메모리 장치(150)는 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
메모리 장치(150)의 프로그램 동적은 페이지 단위로 수행될 수 있으며, 이레이즈 동적은 메모리 블록 단위로 수행될 수 있다. 즉, 메모리 장치(150)의 프로그램 동작과 이레이즈 동작의 단위가 서로 다를 수 있다. 그리고 메모리 장치(150)는 덮어쓰기(overwrite)를 지원하지 않는다. 따라서, 컨트롤러(130)는 메모리 장치(150)의 어떤 페이지에 저장된 데이터를 업데이트하기 위해 업데이트될 데이터를 다른 페이지에 프로그램하도록 메모리 장치(150)를 제어하고, 기존 데이터가 프로그램된 페이지를 무효화할 수 있다. 메모리 장치(150)에 무효화된 페이지들이 증가하면 컨트롤러(130)는 가비지 콜렉션(garbage collection) 동작을 수행하여 저장 공간을 확보할 수 있다. 호스트(102)에서 데이터가 업데이트될 때마다 상기 데이터가 저장되는 메모리 장치(150)의 물리적 위치는 변경될 수 있다. 컨트롤러(130)는 호스트(102)가 상기 데이터에 액세스할 수 있도록 호스트(102)에서 사용되는 논리 주소(logical address)와 메모리 장치(150)에서 사용되는 물리 주소(physical address) 간 매핑 정보를 유지할 수 있다.
메모리 장치(150)는 제한된 내구성을 가질 수 있다. 내구성은, 메모리 장치(150)가 신뢰성을 잃기 전에 메모리 블록에 가해질 수 있는 이레이즈 동작의 횟수, 즉 이레이즈 카운트로 정의될 수 있다.
어떤 메모리 블록에 프로그램 동작 및 그에 따른 이레이즈 동작이 집중되는 경우 메모리 장치(150)의 수명이 급격하게 감소할 수 있다. 메모리 장치(150)의 급격한 수명 감소를 방지하기 위해, 메모리 장치(150)의 모든 메모리 블록들에 이레이즈 동작이 균등하게 수행될 수 있도록 웨어 레벨링(wear-leveling) 동작이 수행될 수 있다. 웨어 레벨링 동적은 메모리 블록들 중에서 선택된 희생 블록(victim block)의 데이터를 목적지 블록(destination block)으로 이동시키는 동작을 포함할 수 있다. 웨어 레벨링 동적은 후술되는 컨트롤러(130)에 의해 수행될 수 있다. 컨트롤러(130)가 웨어 레벨링 동작을 수행하면 수명이 적게 남은 메모리 블록들에는 이레이즈 동작이 적게 수행되고, 수명이 많이 남은 메모리 블록들에는 이레이즈 동작이 많이 수행되면서 메모리 블록들의 수명이 균등해질 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 메모리 장치(150)를 제어할 수 있다. 예컨대, 컨트롤러(130)는 메모리 장치(150)로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 메모리 장치(150)의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), 프로세서(134), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스(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)와 데이터를 주고 받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer, 이하 'HIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리 인터페이스(142)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 메모리 장치(150) 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 메모리 장치(150)가 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(142)는 메모리 장치(150)를 위한 제어 신호를 생성하고, 프로세서(134)의 제어 하에 메모리 장치(150)로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(142)는 컨트롤러(130)와 메모리 장치(150) 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예컨대 NAND 플래시 인터페이스로서 동작할 수 있다.
메모리 인터페이스(142)는 플래시 인터페이스 계층(FIL: Flash Interface Layer, 이하 'FIL'이라 칭하기로 함)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
프로세서(134)는 메모리 시스템(110)의 전체적인 동작을 제어할 수 있다. 프로세서(134)는 메모리 시스템(110)의 전반적인 동작을 제어하기 위해 펌웨어를 구동할 수 있다. 상기 펌웨어는 FTL(Flash Translation Layer, 136)로 불릴 수 있다. 그리고, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다.
예컨대, 컨트롤러(130)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해 호스트(102)가 요청한 동작을 수행할 수 있다. 즉, 컨트롤러(130)는 호스트(102)로부터 수신된 커맨드에 대응하는 커맨드 동작을 수행할 수 있다. 컨트롤러(130)는 호스트(102)로부터 수신된 커맨드에 대응하는 커맨드 동작으로서 포그라운드 동작(foreground operation)을 수행할 수 있다. 예컨대, 컨트롤러(130)는 라이트 커맨드에 대응하는 라이트 동작, 리드 커맨드에 대응하는 리드 동작, 이레이즈 커맨드에 대응하는 이레이즈 동작 및 셋 파라미터 커맨드 또는 셋 피쳐 커맨드에 대응하는 파라미터 셋 동작 등을 수행할 수 있다.
또한, 컨트롤러(130)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현된 프로세서(134)를 통해 메모리 장치(150)에 대한 백그라운드(background) 동작을 수행할 수도 있다. 예컨대, 메모리 장치(150)에 대한 백그라운드 동적은 가비지 콜렉션 동작, 웨어 레벨링 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
FTL(136)은 상기 웨어 레벨링 동작을 수행하기 위한 희생 블록을 메모리 블록들의 수명, 즉 이레이즈 카운트에 기초하여 결정할 수 있다. 그러나, FTL(136)이 이레이즈 카운트만을 기초로 하여 희생 블록을 결정하는 경우 웨어 레벨링 동작의 목적을 달성하기 어렵다.
어떤 메모리 블록에 저장된 데이터가 업데이트되면 기존 데이터는 무효화될 수 있다. 무효화된 데이터를 저장하는 페이지가 많은 메모리 블록은 우선적으로 이레이즈될 수 있다. 이레이즈 카운트가 높은 메모리 블록에는 드물게 업데이트되는 데이터가 많이 저장되도록 하면 해당 메모리 블록에 이레이즈 동작이 수행되는 것을 억제할 수 있다.
메모리 블록의 이레이즈 카운트만으로는 해당 메모리 블록에 저장된 데이터가 자주 업데이트되는지 아닌지를 판단하기 어렵다. FTL(136)이 이레이즈 카운트가 적은 메모리 블록을 희생 블록으로 결정하고, 상기 희생 블록의 데이터를 이레이즈 카운트가 많은 메모리 블록으로 이동시키는 경우 해당 메모리 블록의 이레이즈가 충분히 억제되지 않을 수 있다.
본 발명의 실시 예에 따르면, FTL(136)은 희생 블록을 메모리 블록들의 이레이즈 카운트뿐만 아니라 메모리 블록들에 저장된 데이터의 업데이트 카운트에 기초하여 결정할 수 있다. 본 발명의 실시 예가 도 2 내지 도 5를 참조하여 후술된다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 메모리 장치(150)가 리드, 프로그램, 이레이즈 동작을 수행하도록 메모리 장치(150)를 제어할 수 있다. 컨트롤러(130)는 메모리 장치(150)로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 메모리 장치(150)에 저장할 수 있다. 메모리(144)는 컨트롤러(130)와 메모리 장치(150)가 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(144)는 휘발성 메모리로 구현될 수 있다. 예컨대, 메모리(144)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(144)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 메모리(144)를 예시한다. 일 실시예에서, 메모리(144)는 메모리(144)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
메모리(144)는 호스트(102)와 메모리 장치(150) 간의 라이트, 리드 등의 동작을 수행하기 위한 데이터를 저장하기 위해 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
그리고, 메모리(144)는 논리 주소 관리 테이블, 어드레스 맵핑 테이블 및 블록 관리 테이블을 저장할 수 있다. 논리 주소 관리 테이블은 메모리 블록들에 저장된 데이터의 업데이트 카운트를 논리 주소별로 저장하고, 상기 업데이트 카운트에 기초하여 결정되는 논리 주소별 데이터의 속성을 저장할 수 있다. 어드레스 맵핑 테이블은 논리 주소와 물리 주소 간의 매핑 관계를 저장할 수 있다. 블록 관리 테이블은 메모리 장치(150)의 메모리 블록별로 이레이즈 카운트를 저장하고, 메모리 블록별로 자주 업데이트되는 데이터가 얼마나 많이 저장되었는지를 나타내는 핫 페이지 카운트를 저장할 수 있다. 논리 주소 관리 테이블, 어드레스 매핑 테이블 및 블록 관리 테이블은 도 3 내지 도 5를 참조하여 자세히 설명된다.
도 2는 본 발명의 실시 예에 따른 컨트롤러(130)의 동작을 나타내는 흐름도이다.
단계 S202에서, FTL(136)은 메모리 장치(150)에 포함된 메모리 블록들의 이레이즈 카운트에 기초하여 희생 블록의 후보 블록들을 결정할 수 있다.
예를 들어, FTL(136)은 이레이즈 카운트가 적은 순서대로 하나 이상의 메모리 블록들을 희생 블록의 후보 블록들로 결정할 수 있다.
단계 S204에서, FTL(136)은 상기 후보 블록들에 저장된 데이터의 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록을 결정할 수 있다.
예를 들어, FTL(136)은 논리 주소별로 데이터의 업데이트 카운트를 판단하고, 상기 업데이트 카운트에 기초하여 각 논리 주소가 핫 데이터와 연관되는지 콜드 데이터와 연관되는지를 결정할 수 있다. 핫 데이터는 상대적으로 자주 업데이트되는 데이터를 지칭하며, 콜드 데이터는 상대적으로 드물게 업데이트되는 데이터를 지칭할 수 있다. 이하에서, 핫 데이터와 연관된 논리 주소는 핫 논리 주소, 콜드 데이터와 연관된 논리 주소는 콜드 논리 주소로 지칭한다.
FTL(136)은 메모리 블록별로 핫 논리 주소와 연관된 페이지의 개수 또는 콜드 논리 주소와 연관된 페이지의 개수에 기초하여 희생 블록을 결정할 수 있다. 이하에서, 핫 논리 주소와 연관된 페이지는 핫 페이지, 콜드 논리 주소와 연관된 페이지는 콜드 페이지로 지칭한다. 예를 들어, FTL(136)은 상기 후보 블록들 중 핫 데이터가 가장 적게 저장된 메모리 블록, 즉 핫 페이지 카운트가 가장 적은 블록을 희생 블록으로 결정할 수 있다.
단계 S206에서, FTL(136)은 상기 희생 블록의 데이터를 목적지 블록으로 이동시킬 수 있다.
예를 들어, FTL(136)은 가장 이레이즈 카운트가 높은 블록에 상기 희생 블록의 데이터를 프로그램하도록 메모리 장치(150)를 제어할 수 있다.
본 발명의 실시 예에 따르면, FTL(136)은 이레이즈 카운트가 많은 메모리 블록에 드물게 업데이트되는 데이터를 저장함으로써 해당 메모리 블록의 이레이즈 카운트가 증가하는 것을 효율적으로 억제할 수 있다. 즉, FTL(136)의 웨어 레벨링 성능이 향상되어 이레이즈 카운트가 많은 메모리 블록과 적은 메모리 블록 간 수명이 더욱 빠르게 균등화될 수 있다. 따라서, 메모리 시스템(110)의 성능 및 수명이 더욱 향상될 수 있다.
도 3은 본 발명의 실시 예에 따른 컨트롤러(130)의 동작을 설명하기 위한 도면이다. 구체적으로, 도 3은 FTL(136)이 논리 주소 관리 테이블에 기초하여 메모리 장치(150)의 각 논리 주소를 핫 논리 주소 또는 콜드 논리 주소로 구분하는 방법을 설명하기 위한 도면이다.
도 3은 메모리(144)에 저장되고, 논리 주소(LBA)별 데이터 업데이트 카운트(UPDATE) 및 플래그(FLAG)를 저장하는 논리 주소 관리 테이블을 나타낸다. 상기 플래그는 각 논리 주소가 핫 논리 주소인지 콜드 논리 주소인지를 나타낼 수 있다. 도 3의 예에서, 플래그 '0'은 해당 논리 주소가 콜드 논리 주소인 것을 나타내며, 플래그 '1'은 해당 논리 주소가 핫 논리 주소인 것을 나타낸다.
상기 블록 관리 테이블에 포함되는 데이터 업데이트 카운트 및 플래그는 호스트로부터 수신되는 커맨드에 따라 변경될 수 있다. 도 3의 제1 내지 제4 테이블은 시간의 흐름에 따라 변경되는 논리 주소 관리 테이블의 데이터 업데이트 카운트 및 플래그를 나타낸다.
FTL(136)은 호스트(102)로부터의 라이트 커맨드 및 상기 라이트 커맨드와 연관된 논리 주소에 기초하여 각 논리 주소의 데이터 업데이트 카운트를 카운트할 수 있다. 호스트(102)에서 어떤 논리 주소에 해당하는 데이터가 업데이트되면 호스트(102)는 상기 논리 주소에 상기 업데이트된 데이터를 라이트하라는 커맨드를 메모리 시스템(110)으로 제공할 수 있다. 도 3의 예에서, FTL(136)은 호스트(102)로부터 어떤 논리 주소와 연관된 라이트 커맨드가 수신되면 해당 논리 주소의 데이터 업데이트 카운트를 '1'씩 증가시킬 수 있다.
실시 예에서, FTL(136)은 주기적으로 모든 논리 주소들의 데이터 업데이트 카운트를 정해진 만큼 감소시킬 수 있다. 도 3의 예에서, FTL(136)은 호스트의 커맨드 수신 횟수가 '5'의 배수가 될 때마다 모든 논리 주소들의 데이터 업데이트 카운트를 '1'씩 감소시킬 수 있다. 상기 커맨드 수신 횟수는 라이트 커맨드 수신 횟수 및 리드 커맨드 수신 횟수를 포함할 수 있다. FTL(136)이 주기적으로 모든 논리 주소들의 데이터 업데이트 카운트를 감소시키면, 논리 주소별 핫 논리 주소 또는 콜드 논리 주소를 구분하는 데 과거의 데이터 업데이트 카운트가 미치는 영향을 줄일 수 있다.
실시 예에서, FTL(136)은 논리 주소의 데이터 업데이트 카운트에 기초하여 해당 논리 주소를 콜드 논리 주소 또는 핫 논리 주소로 구분할 수 있다. 도 3의 예에서, FTL(136)은 콜드 논리 주소의 데이터 업데이트 카운트가 '10' 이상으로 증가하면 해당 논리 주소를 핫 논리 주소로 변경하고 플래그 '1'로 표시할 수 있다. FTL(136)은 핫 논리 주소의 데이터 업데이트 카운트가 '8' 이하로 감소하면 콜드 논리 주소로 변경하고 플래그 '0'으로 표시할 수 있다.
제1 테이블은 제1 시점에서의 논리 주소 관리 테이블을 나타낸다. 제1 시점에서 제1 내지 제4 논리 주소의 데이터 업데이트 카운트는 각각 '2', '9', '3', '9'일 수 있다. 제1 내지 제4 논리 주소의 플래그는 각각 '0', '0', '0', '0'으로서 제1 내지 제4 논리 주소가 모두 콜드 논리 주소라는 점을 나타낼 수 있다.
제2 테이블은 제1 시점 이후 제2 시점에서의 논리 주소 관리 테이블을 나타낸다. 도 3은 제1 시점 이후 제2 시점까지 제2 논리 주소에 대한 라이트 커맨드가 하나 수신되고, 두 개의 리드 커맨드가 더 수신된 상태를 나타낸다. 제2 시점에서 제2 논리 주소의 데이터 업데이트 카운트는 '10'이 될 수 있다. FTL(136)은 콜드 논리 주소였던 제2 논리 주소의 데이터 업데이트 카운트가 '10'이상이 되었으므로 제2 논리 주소를 핫 논리 주소로 변경할 수 있다. 제2 테이블은 제2 논리 주소와 연관된 플래그가 '1'로 변경된 상태를 예시한다.
제3 테이블은 제2 시점 이후 제3 시점에서의 논리 주소 관리 테이블을 나타낸다. 도 3은 제2 시점 이후 제3 시점까지 제4 논리 주소에 대한 라이트 커맨드가 두 개 수신된 상태를 나타낸다. FTL(136)은 제4 논리 주소의 데이터 업데이트 카운트를 '2'만큼 증가시킬 수 있다. 제1 시점 이후 제3 시점까지 호스트(102)로부터 수신된 커맨드의 개수가 5개가 되었으므로, FTL(136)은 제1 내지 제4 논리 주소의 데이터 업데이트 카운트를 '1'씩 감소시킬 수 있다. 제3 시점에서 제1 내지 제4 논리 주소의 데이터 업데이트 카운트는 각각 '1', '9', '2', '10'으로 변경될 수 있다. FTL(136)은 콜드 논리 주소였던 제4 논리 주소의 데이터 업데이트 카운트가 '10' 이상이 되었으므로 제4 논리 주소에 연관된 플래그를 '1'로 변경할 수 있다.
제4 테이블은 제3 시점 이후 제4 시점에서의 논리 주소 관리 테이블을 나타낸다. 도 3은 제3 시점 이후 제4 시점까지 다섯 개의 리드 커맨드가 수신된 상태를 나타낸다. 제3 시점 이후 제4 시점까지 호스트(102)로부터 수신된 커맨드의 개수가 5개가 되었으므로, FTL(136)은 제1 내지 제4 논리 주소의 데이터 업데이트 카운트를 '1'씩 감소시킬 수 있다. 제4 시점에서 제1 내지 제4 논리 주소의 데이터 업데이트 카운트는 각각 '0', '8', '1', '9'로 변경될 수 있다. FTL(136)은 핫 논리 주소였던 제2 논리 주소의 데이터 업데이트 카운트가 '8' 이하가 되었으므로 제2 논리 주소에 연관된 플래그를 '0'으로 변경할 수 있다.
도 4는 본 발명의 실시 예에 따른 컨트롤러(130)의 동작을 설명하기 위한 도면이다. 구체적으로, 도 4는 FTL(136)이 논리 주소 관리 테이블 및 주소 매핑 테이블에 기초하여 메모리 블록별로 핫 페이지 카운트를 수행하는 방법을 설명하기 위한 도면이다.
도 4는 메모리(144)에 저장되는 논리 주소 관리 테이블과 주소 매핑 테이블을 나타낸다.
도 4의 왼쪽 테이블은 논리 주소 관리 테이블의 일부를 나타낸다. 구체적으로, 도 4에 도시된 논리 주소 관리 테이블은 논리 주소별 플래그를 나타내며, 데이터 업데이트 카운트는 생략되었다. 상기 플래그는 도 3에서와 마찬가지로 '1'인 경우 핫 논리 주소를 나타내고, '0'인 경우 콜드 논리 주소를 나타낸다.
도 4의 오른쪽 테이블은 주소 매핑 테이블을 나타낸다. 구체적으로, 도 4에 도시된 주소 매핑 테이블은 제1 메모리 블록의 제1 내지 제5 페이지 각각과 연관된 논리 주소들을 나타낸다.
메모리 블록은 페이지들을 포함할 수 있으며, 페이지들은 각각 논리 주소와 연관될 수 있다. 도 4의 예에서 제1 메모리 블록의 제1 페이지는 제1 논리 주소에 해당하는 데이터를 저장할 수 있다. FTL(136)은 메모리 블록에 포함된 페이지들이 얼마나 많은 핫 논리 주소 또는 콜드 논리 주소와 연관되었는지에 따라 해당 메모리 블록에 얼마나 콜드 데이터가 많이 저장되었는지 판단할 수 있다. 이하에서, 핫 논리 주소와 연관된 페이지는 핫 페이지로, 콜드 논리 주소와 연관된 페이지는 콜드 페이지로 지칭한다.
FTL(136)은 논리 주소 관리 테이블 및 주소 매핑 테이블을 참조하여 메모리 블록이 몇 개의 핫 페이지를 포함하는지 카운트할 수 있다. 도 4의 주소 매핑 테이블을 참조하면 제1 메모리 블록의 제1 내지 제5 페이지는 각각 제1, 제2, 제7, 제8 및 제9 논리 주소와 연관될 수 있다. 도 4의 논리 주소 관리 테이블을 참조하면 제1, 제2, 제7, 제8 및 제9 논리 주소의 플래그는 각각 '0', '0', '1', '0', '1'이다. 따라서, 제1 메모리 블록의 제1, 제2 및 제4 페이지는 콜드 논리 주소와 연관된 콜드 페이지이고 제3 및 제5 페이지는 핫 논리 주소와 연관된 핫 논리 페이지일 수 있다. FTL(136)은 제1 메모리 블록의 핫 페이지 카운트를 '2'로 결정할 수 있다.
도 5는 본 발명의 실시 예에 따른 컨트롤러(130)의 동작을 설명하기 위한 도면이다. 구체적으로, 도 5는 FTL(136)이 블록 관리 테이블을 참조하여 후보 블록들을 결정하고, 상기 후보 블록들 중 희생 블록을 결정하는 방법을 설명하기 위한 도면이다.
도 5는 메모리(144)에 저장되는 블록 관리 테이블을 나타낸다. 도 5는 메모리 블록별 이레이즈 카운트 및 핫 페이지 카운트를 포함하는 블록 관리 테이블을 예시한다. 예를 들어, 제1 메모리 블록은 이레이즈 카운트가 15회이며 현재 핫 페이지를 50개 포함할 수 있다.
도 2를 참조하여 설명된 바와 같이, FTL(136)은 상기 블록 관리 테이블을 참조하여 이레이즈 카운트가 낮은 순서대로 하나 이상의 메모리 블록들을 후보 블록들로 결정할 수 있다. 도 5의 예에서, FTL(136)은 이레이즈 카운트가 가장 낮은 블록들인 제2 및 제3 메모리 블록을 후보 블록들로 결정할 수 있다. 도 5에 도시된 파선은 후보 블록들을 나타낸다.
FTL(136)은 상기 블록 관리 테이블을 참조하여 상기 후보 블록들 중 콜드 데이터를 가장 많이 저장하는 메모리 블록을 희생 블록으로 선택할 수 있다. 도 5의 예에서, FTL(136)은 핫 페이지 카운트가 가장 적은 메모리 블록을 콜드 데이터를 가장 많이 저장하는 메모리 블록으로 판단할 수 있다. FTL(136)은 제2 및 제3 메모리 블록 중 핫 페이지 카운트가 적은 제2 메모리 블록을 희생 블록으로 판단할 수 있다.
FTL(136)은 상기 희생 블록의 데이터를 목적지 블록으로 이동시킬 수 있다. FTL(136)은 상기 블록 관리 테이블을 참조하여 이레이즈 카운트가 가장 낮은 메모리 블록을 목적지 블록으로 결정할 수 있다.
본 발명은 도 3 내지 도 5를 참조하여 설명된 실시 예로 제한되지 않는다. 예를 들어, 논리 주소 관리 테이블은 콜드 논리 주소를 플래그 '1'로 나타내고, 핫 논리 주소를 플래그 '0'으로 나타낼 수 있다. 그리고, 블록 관리 테이블은 메모리 블록별 핫 페이지 카운트를 저장하는 대신 콜드 페이지 카운트를 저장할 수도 있다.
본 발명의 실시 예에 따르면, FTL(136)은 이레이즈 카운트가 높은 메모리 블록에 이레이즈 카운트가 낮으면서도 콜드 데이터가 많이 저장된 메모리 블록의 데이터가 저장되도록 메모리 장치(150)를 제어할 수 있다. FTL(136)은 이레이즈 카운트가 높은 메모리 블록과 낮은 메모리 블록의 데이터를 스왑(swap)하면서 이레이즈 카운트가 높은 메모리 블록에 저장되는 데이터가 적게 업데이트되도록 할 수 있다. FTL(136)은 이레이즈 카운트가 높은 메모리 블록에서 이레이즈가 발생하는 것을 저지함으로써 메모리 블록들의 이레이즈 카운트를 더욱 빠르게 균등화할 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
110: 메모리 시스템
130: 컨트롤러
150: 메모리 장치
130: 컨트롤러
150: 메모리 장치
Claims (20)
- 메모리 블록들을 포함하는 메모리 장치를 제어하는 컨트롤러의 동작 방법에 있어서,
상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하는 단계;
상기 후보 블록들 각각에 포함된 복수의 페이지들과 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록(victim block)을 결정하는 단계; 및
상기 희생 블록의 데이터를 목적지 블록(destination block)으로 이동시키는 단계
를 포함하는 동작 방법.
- 제1항에 있어서,
상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하는 단계는
상기 메모리 블록들 중 이레이즈 카운트가 적은 순서대로 하나 이상의 메모리 블록들을 후보 블록들로 결정하는 단계
를 포함하는 동작 방법.
- 제1항에 있어서,
상기 메모리 블록들 중 이레이즈 카운트가 적은 순서대로 하나 이상의 메모리 블록들을 후보 블록들로 결정하는 단계는
이레이즈 카운트가 가장 적은 하나 이상의 메모리 블록들을 후보 블록들로 결정하는 단계
를 포함하는 동작 방법.
- 제2항에 있어서,
상기 후보 블록들에 각각에 포함된 복수의 페이지와 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록을 결정하는 단계는
논리 주소별 데이터 업데이트 카운트에 기초하여 상기 논리 주소들 각각이 핫 논리 주소인지 콜드 논리 주소인지 결정하는 단계; 및
상기 복수의 페이지와 연관된 논리 주소들 중 핫 논리 주소 또는 콜드 논리 주소의 개수에 기초하여 상기 후보 블록들 중 희생 블록을 결정하는 단계
를 포함하는 동작 방법.
- 제4항에 있어서,
상기 복수의 페이지와 연관된 논리 주소들 중 핫 논리 주소 또는 콜드 논리 주소의 개수에 기초하여 상기 후보 블록들 중 희생 블록을 결정하는 단계는
상기 콜드 논리 주소 개수가 가장 많은 후보 블록을 희생 블록으로 결정하는 단계
를 포함하는 동작 방법.
- 제4항에 있어서,
상기 복수의 페이지와 연관된 논리 주소들 중 핫 논리 주소 또는 콜드 논리 주소의 개수에 기초하여 상기 후보 블록들 중 희생 블록을 결정하는 단계는
상기 핫 논리 주소가 가장 적은 후보 블록을 희생 블록으로 결정하는 단계
를 포함하는 동작 방법.
- 제2항에 있어서,
상기 메모리 블록들 중 이레이즈 카운트가 가장 많은 블록을 상기 목적지 블록으로 결정하는 단계
를 더 포함하는 동작 방법.
- 제4항에 있어서,
호스트로부터 어떤 논리 주소와 연관된 라이트 커맨드를 수신하면 해당 논리 주소의 데이터 업데이트 카운트를 증가시키는 단계
를 더 포함하는 동작 방법.
- 제8항에 있어서,
상기 호스트로부터 수신한 커맨드의 개수가 정해진 수에 도달할 때마다 상기 메모리 장치에 저장된 데이터와 연관된 모든 논리 주소들의 데이터 업데이트 카운트를 감소시키는 단계
를 더 포함하는 동작 방법.
- 제8항에 있어서,
논리 주소별 데이터 업데이트 카운트에 기초하여 상기 논리 주소들 각각이 핫 논리 주소인지 콜드 논리 주소인지 결정하는 단계는
콜드 논리 주소의 데이터 업데이트 카운트가 제1 임계치 이상이면 상기 콜드 논리 주소를 핫 논리 주소로 변경하는 단계; 및
핫 논리 주소의 데이터 업데이트 카운트가 제2 임계치 이상이면 상기 핫 논리 주소를 콜드 논리 주소로 변경하는 단계
를 포함하는 동작 방법.
- 메모리 블록들을 포함하는 메모리 장치를 제어하는 컨트롤러에 있어서,
메모리 장치에 저장되는 데이터의 업데이트 카운트를 논리 주소별로 저장하고, 메모리 블록별 이레이즈 카운트를 저장하는 메모리; 및
상기 메모리 블록들의 이레이즈 카운트에 기초하여 하나 이상의 후보 블록들을 결정하고, 상기 후보 블록들 각각에 포함된 복수의 페이지들과 연관된 논리 주소들의 데이터 업데이트 카운트에 기초하여 상기 후보 블록들 중에서 희생 블록을 결정하고, 상기 희생 블록의 데이터를 목적지 블록으로 이동시키는 FTL(Flash Translation Layer)
을 포함하는 컨트롤러.
- 제11항에 있어서,
상기 FTL은
상기 메모리 블록들 중 이레이즈 카운트가 적은 순서대로 하나 이상의 메모리 블록들을 후보 블록들로 결정하는
컨트롤러.
- 제12항에 있어서,
상기 FTL은
이레이즈 카운트가 가장 적은 하나 이상의 메모리 블록들을 후보 블록들로 결정하는
컨트롤러.
- 제12항에 있어서,
상기 FTL은
논리 주소별 데이터 업데이트 카운트에 기초하여 상기 논리 주소들 각각이 핫 논리 주소인지 콜드 논리 주소인지 결정하고, 상기 복수의 페이지와 연관된 논리 주소들 중 핫 논리 주소 또는 콜드 논리 주소의 개수에 기초하여 상기 후보 블록들 중 희생 블록을 결정하는
컨트롤러.
- 제14항에 있어서,
상기 FTL은
상기 콜드 논리 주소 개수가 가장 많은 후보 블록을 희생 블록으로 결정하는
컨트롤러.
- 제14항에 있어서,
상기 FTL은
상기 핫 논리 주소가 가장 적은 후보 블록을 희생 블록으로 결정하는
컨트롤러.
- 제12항에 있어서,
상기 FTL은
상기 메모리 블록들 중 이레이즈 카운트가 가장 많은 블록을 상기 목적지 블록으로 결정하는
컨트롤러.
- 제14항에 있어서,
상기 FTL은
호스트로부터 어떤 논리 주소와 연관된 라이트 커맨드를 수신하면 해당 논리 주소의 데이터 업데이트 카운트를 증가시키는
컨트롤러.
- 제18항에 있어서,
상기 FTL은
상기 호스트로부터 수신한 커맨드의 개수가 정해진 수에 도달할 때마다 상기 메모리 장치에 저장된 데이터와 연관된 모든 논리 주소들의 데이터 업데이트 카운트를 감소시키는
컨트롤러.
- 제18항에 있어서,
상기 FTL은
콜드 논리 주소의 데이터 업데이트 카운트가 제1 임계치 이상이면 상기 콜드 논리 주소를 핫 논리 주소로 변경하고, 핫 논리 주소의 데이터 업데이트 카운트가 제2 임계치 이상이면 상기 핫 논리 주소를 콜드 논리 주소로 변경하는
컨트롤러.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200002903A KR20210089853A (ko) | 2020-01-09 | 2020-01-09 | 컨트롤러 및 컨트롤러의 동작방법 |
US17/002,243 US11449418B2 (en) | 2020-01-09 | 2020-08-25 | Controller and method for selecting victim block for wear leveling operation |
CN202011035427.7A CN113110799A (zh) | 2020-01-09 | 2020-09-27 | 用于针对损耗均衡操作选择牺牲块的控制器和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200002903A KR20210089853A (ko) | 2020-01-09 | 2020-01-09 | 컨트롤러 및 컨트롤러의 동작방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20210089853A true KR20210089853A (ko) | 2021-07-19 |
Family
ID=76709023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200002903A KR20210089853A (ko) | 2020-01-09 | 2020-01-09 | 컨트롤러 및 컨트롤러의 동작방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11449418B2 (ko) |
KR (1) | KR20210089853A (ko) |
CN (1) | CN113110799A (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11698732B2 (en) * | 2021-02-19 | 2023-07-11 | Micron Technology, Inc. | Storage provisioning in a data storage device |
US20230017824A1 (en) * | 2021-07-15 | 2023-01-19 | Samsung Electronics Co., Ltd. | Systems and methods for load balancing in a heterogeneous memory system |
US11790998B2 (en) | 2021-08-25 | 2023-10-17 | Micron Technology, Inc. | Eliminating write disturb for system metadata in a memory sub-system |
US11960753B2 (en) * | 2021-08-25 | 2024-04-16 | Western Digital Technologies, Inc. | Solution for super device imbalance in ZNS SSD |
US11966618B2 (en) | 2021-08-25 | 2024-04-23 | Western Digital Technologies, Inc. | Purposeful super device imbalance for ZNS SSD efficiency |
US11922034B2 (en) | 2021-09-02 | 2024-03-05 | Samsung Electronics Co., Ltd. | Dual mode storage device |
CN116107491A (zh) * | 2021-11-10 | 2023-05-12 | 三星电子株式会社 | 存储器控制器、存储装置和存储装置的操作方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120317337A1 (en) | 2011-06-09 | 2012-12-13 | Microsoft Corporation | Managing data placement on flash-based storage by use |
KR102639670B1 (ko) | 2016-06-30 | 2024-02-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
KR20180064198A (ko) * | 2016-12-05 | 2018-06-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20180065075A (ko) | 2016-12-06 | 2018-06-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 |
US10445230B2 (en) * | 2017-12-08 | 2019-10-15 | Macronix International Co., Ltd. | Managing block arrangement of super blocks |
-
2020
- 2020-01-09 KR KR1020200002903A patent/KR20210089853A/ko unknown
- 2020-08-25 US US17/002,243 patent/US11449418B2/en active Active
- 2020-09-27 CN CN202011035427.7A patent/CN113110799A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20210216446A1 (en) | 2021-07-15 |
US11449418B2 (en) | 2022-09-20 |
CN113110799A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
US11449418B2 (en) | Controller and method for selecting victim block for wear leveling operation | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US20210294739A1 (en) | Controller and memory system | |
US20200320012A1 (en) | Memory system and method for operating the same | |
US11392309B2 (en) | Memory system for performing migration operation and operating method thereof | |
US11334272B2 (en) | Memory system and operating method thereof | |
KR20210111993A (ko) | 컨트롤러 및 컨트롤러의 동작 방법 | |
KR20200059936A (ko) | 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20210051873A (ko) | 컨트롤러 및 메모리 시스템 | |
CN114371812A (zh) | 控制器及其操作方法 | |
US11409444B2 (en) | Memory system and operation method thereof | |
US20200042459A1 (en) | Storage device providing a virtual memory region, electronic system including the same, and method of operating the same | |
CN115080457A (zh) | 控制器及其操作方法 | |
US11775209B2 (en) | Controller and operation method thereof | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US20210132848A1 (en) | Memory system and controller | |
US11656996B2 (en) | Controller for managing order information of data, operation method thereof, and memory system including the same | |
US20220156003A1 (en) | Controller and operation method thereof | |
KR20220096013A (ko) | 컨트롤러 및 이를 포함하는 메모리 시스템 | |
KR20220072357A (ko) | 컨트롤러, 및 이를 포함하는 메모리 시스템 및 데이터 처리 시스템 | |
KR20220036169A (ko) | 메모리 시스템 및 데이터 처리 시스템 | |
CN115509950A (zh) | 存储器系统、包括存储器系统的数据处理系统及操作方法 |