KR20180065075A - 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 - Google Patents

메모리 시스템 및 이를 이용한 웨어-레벨링 방법 Download PDF

Info

Publication number
KR20180065075A
KR20180065075A KR1020160165228A KR20160165228A KR20180065075A KR 20180065075 A KR20180065075 A KR 20180065075A KR 1020160165228 A KR1020160165228 A KR 1020160165228A KR 20160165228 A KR20160165228 A KR 20160165228A KR 20180065075 A KR20180065075 A KR 20180065075A
Authority
KR
South Korea
Prior art keywords
memory
memory block
block
hot
cold
Prior art date
Application number
KR1020160165228A
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 KR1020160165228A priority Critical patent/KR20180065075A/ko
Priority to US15/726,460 priority patent/US10445005B2/en
Priority to CN201711250890.1A priority patent/CN108182034B/zh
Publication of KR20180065075A publication Critical patent/KR20180065075A/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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06F2212/1036Life time enhancement
    • 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/1041Resource optimization
    • 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/7211Wear leveling

Abstract

본 기술은 메모리 시스템 및 그 동작방법에 관한 것으로서, 복수의 메모리 블록들 및 적어도 하나 이상의 여분의 메모리 블록들을 포함하는 메모리 장치, 상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 바탕으로 상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 웨어-레벨링 모듈, 상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 카운팅부, 상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하고, 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 제1 검출부, 및 상기 콜드 메모리 블록의 데이터를 상기 핫 메모리 블록으로 이동시키고, 상기 콜드 메모리 블록을 상기 여분의 메모리 블록으로 관리하는 관리부를 제공한다.

Description

메모리 시스템 및 이를 이용한 웨어-레벨링 방법{MEMORY SYSTEM AND METHOD OF WEAR-LEVELING FOR THE SAME}
본 발명은 비휘발성 메모리 장치를 포함하는 메모리 시스템에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리 장치를 웨어-레벨링(wear-leveling)하는 메모리 시스템 및 그 동작방법에 관한 것이다.
메모리 장치는 크게 휘발성 메모리 장치(volatile memory device)와 비휘발성 메모리 장치(nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 쓰기 및 읽기 속도가 빠르지만 전원 공급이 차단되면 저장된 데이터가 소실된다. 휘발성 메모리 장치에는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등이 있다. 반면, 비휘발성 메모리 장치는 쓰기 및 읽기 속도가 상대적으로 느리지만 전원 공급이 차단되더라도 저장된 데이터를 유지한다. 따라서 전원 공급 여부와 관계없이 유지되어야 할 데이터를 저장하기 위해 비휘발성 메모리 장치가 사용된다. 비휘발성 메모리 장치에는 ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리(Flash memory), PCRAM(Phase change Random Access Memory), MRAM(Magnetoresistive RAM), RRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등이 있다.
비휘발성 메모리 장치들 중 저항성 랜덤 엑세스 메모리(RRAM) 및 상-변화 랜덤 엑세스 메모리(PCRAM), 등은 제한된 쓰기 내구성(limited write endurance)을 갖는다. 쓰기 내구성은, 저장매체(storage media)가 신뢰성을 잃기 전에 메모리 블록에 가해질 수 있는 쓰기(라이트) 싸이클의 횟수로 정의될 수 있다. 이 쓰기 내구성은, 얼마나 자주 그리고 얼마나 전체적으로 메모리가 사용되는지를 추정함으로써 계산될 수 있다.
따라서, 특정 메모리 셀 영역에 대해서 쓰기 동작이 집중되는 경우에 메모리 장치의 수명이 급격히 감소할 수 있다. 이를 방지하게 위해 메모리 장치의 전체 메모리 셀 영역에서 쓰기 동작이 균등하게 수행될 수 있도록 웨어 레벨링(wear-leveling) 동작을 수행한다. 웨어-레벨링 동작은, 저장매체의 쓰기 내구성을 연장하기 위해 사용되는 기술이다. 이 기술은, 저장매체에 데이터를 기록할 때 각 메모리 셀에 분산 쓰기 작업이 수행되도록 하고, 이로 인해 저장매체의 특정 메모리 셀의 반복 사용을 줄이고, 모든 메모리 셀들이 균등하게 사용될 수 있도록 한다.
통상적으로 웨어-레벨링 동작은 메모리 컨트롤러에 의해 수행된다. 예컨대 메모리 컨트롤러는, 저장매체에 대한 쓰기 요청이 들어오는 경우 덮어쓰기(overwrite) 횟수를 참고하여 논리적 주소와 물리적 주소 사이의 적절한 맵핑을 수행 및 변경함으로써, 비어있는 메모리 셀들 중 아직 덜 사용된 메모리 셀 위주로 쓰기 작업이 수행되도록 제어한다.
본 발명은 메모리 장치에 포함되는 복수의 메모리 영역들 사이에 데이터의 접근 빈도에 따라 데이터를 이동하여 복수의 메모리 영역들이 균등하게 사용될 수 있도록 하는 메모리 시스템 및 그 동작방법을 제공하고자 한다.
본 발명의 일실시예에 따른 메모리 시스템은, 복수의 메모리 블록들 및 적어도 하나 이상의 여분의 메모리 블록들을 포함하는 메모리 장치; 상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 바탕으로 상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 웨어-레벨링 모듈; 상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 카운팅부; 상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하고, 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 제1 검출부; 및 상기 콜드 메모리 블록의 데이터를 상기 핫 메모리 블록으로 이동시키고, 상기 콜드 메모리 블록을 상기 여분의 메모리 블록으로 관리하는 관리부;를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 복수의 메모리 블록들 및 적어도 하나 이상의 여분의 메모리 블록들을 포함하는 메모리 장치를 포함하는 메모리 시스템의 동작방법은, 상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 바탕으로 상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 단계; 상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 단계; 상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하는 단계; 상기 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 단계; 및 상기 콜드 메모리 블록의 데이터를 상기 핫 메모리 블록으로 이동시키고, 상기 콜드 메모리 블록을 상기 여분의 메모리 블록으로 관리하는 단계;를 포함할 수 있다.
본 기술은 메모리 장치를 동일한 크기의 복수의 메모리 블록들로 나누고, 데이터 접근, 즉, 라이트 동작이 빈번히 이루어지는 핫 메모리 블록을 검출하여 해당 데이터를 다른 메모리 블록으로 이동시켜 준다. 따라서, 메모리 장치 전체에 대한 라이트 동작을 분산시키는 효과가 있다. 또한, 데이터 이동이 이뤄진 핫 메모리 블록에 라이트 동작이 상대적으로 잘 일어나지 않는 콜드 메모리 블록의 데이터를 이동시켜줌으로써, 한번 검출된 핫 메모리 블록이 다시 검출되는 것을 방지할 수 있다.
더 나아가, 콜드 메모리 블록을 검출함에 있어서, 라이트 동작의 횟수를 계속해서 카운트하는 것이 아니라, 임계 횟수 이상의 라이트 동작으로 인한 데이터의 이동 횟수를 카운트한다. 결국, 누적된 라이트 동작 만을 카운트하여 콜드 메모리 블록을 검출하기 때문에, 임계 값만큼 스케일링(scaling)하여 카운트 동작을 수행할 수 있다. 따라서, 콜드 메모리 블록을 검출하기 위한 메모리 시스템의 동작에 있어서의 로드(load)를 줄일 수 있다.
도 1은 웨어-레벨링을 수행하는 메모리 시스템을 도시한 블록도.
도 2는 도 1에 도시된 메모리 시스템에 의해 수행되는 웨어-레벨링 동작을 설명하기 위한 도면.
도 3은 본 발명의 실시예에 따른 메모리 시스템을 도시한 블록도.
도 4는 도 3에 도시된 메모리 시스템에 의해 수행되는 웨어-레벨링 동작을 설명하기 위한 도면.
도 5는 본 발명의 실시예에 따른 도 3의 메모리 시스템의 전반적인 동작을 설명하기 위한 순서도.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 웨어-레벨링을 수행하는 메모리 시스템을 도시한 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(110), 및 메모리 장치(130)를 포함하며, 메모리 컨트롤러(110)는 호스트(미도시)의 요청에 따라 커맨드(CMD), 및 어드레스(ADD), 등을 생성하여 메모리 장치(130)에 데이터(DATA)를 저장할 수 있다.
메모리 장치(130)는 복수의 메모리 셀들로 이루어진 메모리 블록(131)들을 포함할 수 있다. 또한, 메모리 장치(130)는 메모리 블록(131)들과 함께 적어도 하나 이상의 여분의 메모리 블록(132), 즉, 스페어 블록,들을 포함할 수 있다. 본 발명의 일 실시예에 따라 메모리 장치(130)는 PCRAM을 포함할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, MRAM, RRAM, FRAM, 등의 가변 저항 메모리 장치를 포함할 수 있다. 가변 저항 메모리 장치는 메모리 셀의 저항 크기에 의해 저장된 데이터를 구분할 수 있다. 그리고, 메모리 장치에 데이터를 쓰기(write) 전 소거(erase) 동작이 요구되지 않고 겹쳐 쓰기(overwrite)를 지원할 수 있다. 즉, 라이트 동작을 통해 메모리 셀에 저장된 '0' 데이터는 '1' 데이터로 변경되거나, '1' 데이터는 '0' 데이터로 변경될 수 있다.
따라서, 메모리 장치(130)는 라이트 동작이 이뤄지는 단위로 마모될 수 있으며, 웨어-레벨링 동작 역시 라이트 동작이 이뤄지는 단위로 수행될 수 있다. 하지만, 이 경우 라이트 동작이 이뤄지는 단위, 예를 들면, 페이지 별로 라이트 동작을 카운트하고, 라이트 동작이 분산되도록 하여야 한다. 이는 메모리 장치(120)를 제어하는 메모리 컨트롤러(110) 동작의 오버헤드(overhead)를 증가시킬 수 있다.
결국, 메모리 장치(130)를 동일한 크기의 메모리 블록(131)들로 나누고, 메모리 블록(131) 단위로 웨어-레벨링을 수행할 수 있다. 예를 들면, 메모리 블록(131) 기반의 맵핑 테이블(mapping table)을 이용하여, 논리 블록 어드레스(logical block address: LBA)와 물리 블록 어드레스(physical block address: PBA) 간의 맵핑 정보를 변경하면서 웨어-레벨링을 수행할 수 있다. 이 같은 동작에 대해서는 아래에서 좀더 자세히 설명하고자 한다.
메모리 장치(130)의 웨어-레벨링 동작을 위해, 메모리 컨트롤러(110)는 웨어-레벨링 모듈(120)을 포함할 수 있다. 도 1에 도시된 것과 같이, 웨어-레벨링 모듈(120)은 검출부(121) 및 웨어-레벨링부(122)를 포함할 수 있다.
검출부(121)는 카운터(미도시)을 포함하여, 호스트로부터 라이트 동작 요청 시, 메모리 장치(130)의 메모리 블록(131) 별로 라이트 동작 횟수를 카운트할 수 있다. 이를 위해, 라이트 동작 시, 검출부(121)는 호스트로부터 입력되는 논리 블록 어드레스(LBA)를 카운트할 수 있다. 또한, 검출부(121)는 카운트된 라이트 동작 횟수가 임계 값(threshold)를 초과할 경우 해당 메모리 블록에 대한 검출 신호(DET)를 생성할 수 있다. 즉, 검출부(141)는 메모리 블록(131)들 중 라이트 동작이 임계 값 이상 수행된 메모리 블록을 핫 메모리 블록으로 검출하여 검출 신호(DET)를 생성할 수 있다.
웨어-레벨링부(122)는 검출부(121)로부터 입력되는 검출 신호(DET)에 응답하여, 검출된 핫 메모리 블록에 대해 웨어-레벨링을 수행할 수 있다. 웨어-레벨링부(122)는 핫 메모리 블록에 저장된 데이터를 데이터가 저장되지 않은 여분의 메모리 블록(132)으로 이동할 수 있다. 웨어-레벨링부(122)는 맵핑 테이블(123)를 포함할 수 있으며, 핫 메모리 블록에 저장된 데이터를 여분의 메모리 블록(132)으로 이동하면서, 맵핑 테이블(123)을 업데이트할 수 있다. 즉, 기존에 핫 메모리 블록의 물리 어드레스에 맵핑되어 있던 데이터의 논리 어드레스가 여분의 메모리 블록(132)의 물리 어드레스로 맵핑될 수 있다.
도 2는 도 1에 도시된 메모리 시스템에 의해 수행되는 웨어-레벨링 동작을 설명하기 위한 도면이다.
도 2의 첫 번째 테이블(201)을 참조하면, 논리 블록 어드레스들(LBA0~LBA11)에 해당하는 데이터가 차례대로 물리 블록 어드레스들(PBA0~PBA11)에 해당하는 메모리 블록들에 저장된 것을 확인할 수 있다. 그리고, 물리 블록 어드레스들(PBA12~PBA15)에 해당하는 메모리 블록들은 여분의 영역(spare area)으로 데이터가 저장되지 않고 빈 공간으로 남겨져 있다.
이때, 여덟 번째 논리 블록 어드레스(LBA7)에 해당하는 데이터의 라이트 동작이 많이 수행되어 임계 값(write access threshold)을 초과하게 되면, 검출부(121)는 해당 데이터를 핫 데이터로 검출할 수 있다. 즉, 대응하는 메모리 블록, 즉, 여덟 번째 물리 블록 어드레스(PBA7)에 해당하는 메모리 블록이 그 만큼 마모되어 핫 메모리 블록(hot memory block)으로 검출될 수 있다.
도 2의 두 번째 테이블(202)을 참조하면, 웨어-레벨링부(122)는 검출된 핫 데이터를 여분의 영역, 즉, 열세 번째 물리 블록 어드레스(PBA12)에 해당하는 메모리 블록으로 이동(data move)하여 웨어-레벨링을 수행할 수 있다. 즉, 그 동안 사용되지 않은 메모리 블록에 핫 데이터를 저장하여, 메모리 블록들 간에 라이트 동작이 균등하게 수행되도록 할 수 있다. 이에 따라, 핫 메모리 블록, 즉, 여덟 번째 물리 블록 어드레스(PBA7)에 해당하는 메모리 블록은 여분의 영역으로 설정되어 다시 사용될 수 있다(세 번째 테이블(203)).
하지만, 여분의 영역으로 설정된 메모리 블록들, 특히, 여덟 번째 물리 블록 어드레스(PBA7)에 해당하는 메모리 블록은 메모리 장치(130)의 웨어-레벨링 동작에 의해 다시 핫 데이터가 저장될 수 있고, 다시 라이트 동작이 빈번히 수행될 수 있다. 따라서, 웨어-레벨링 동작의 효과를 높이기 위해서는 한번 검출된 핫 메모리 블록에 라이트 동작이 자주 수행되지 않는 데이터, 즉, 콜드 데이터를 저장해주는 것이 바람직하다.
메모리 컨트롤러(110)는 핫 메모리 블록의 검출뿐 아니라 콜드 데이터를 저장하고 있는 콜드 메모리 블록을 검출하여 웨어-레벨링을 수행할 수 있다. 하지만, 콜드 메모리 블록을 검출하고 관리하는 것이 핫 메모리 블록을 검출하는 것만큼 용이하지는 않다. 예를 들어, 검출부(121)에 포함되는 카운터의 경우 대응하는 메모리 블록에 수행되는 모든 라이트 동작을 카운트하게 되면, 그 값이 계속적으로 증가하여 실제 구현하기가 어렵다. 일반적으로, 메모리 블록이 마모로 인해 저장된 데이터에 에러가 발생하기 전의 임계 값만큼 카운트가 이루어지고, 웨어-레벨링, 즉, 데이터 이동이 이뤄지게 되면 카운트 값은 리셋된다. 따라서, 몇 차례 리셋되었거나 또는 그렇지 않은 카운트 값들을 가지고 콜드 메모리 블록을 검출할 수는 없다.
도 3은 본 발명의 실시예에 따른 메모리 시스템을 도시한 블록도이다. 도 3을 참조하면, 메모리 시스템(300)은 메모리 컨트롤러(310), 및 메모리 장치(330)를 포함할 수 있다.
메모리 컨트롤러(310)는 도 1의 웨어-레벨링 모듈(120)과 함께 콜드 메모리 블록 관리 모듈(320)을 포함할 수 있다. 도 1에서 설명한 바와 같이, 웨어-레벨링 모듈(120)은 메모리 장치(330)에 포함되는 복수의 메모리 블록(332)들에 수행되는 라이트 동작 횟수를 바탕으로 복수의 메모리 블록(332)들 중 핫 메모리 블록을 검출할 수 있다. 웨어-레벨링 모듈(120)은 메모리 장치(330)에 포함되는 여분의 메모리 블록(333), 즉, 스페어 블록,들로 검출된 핫 메모리 블록의 데이터를 이동시킬 수 있다. 도 1에서 웨어-레벨링 모듈(120)과 관련해 이미 설명된 동작이나 구성에 대해서는 생략하고자 한다.
본 발명의 실시예에 따라, 콜드 메모리 블록 관리 모듈(320)은 복수의 메모리 블록(332)들 중 콜드 메모리 블록을 검출할 수 있다. 콜드 메모리 블록 관리 모듈(320)은 콜드 메모리 블록의 데이터를 웨어-레벨링 모듈(120)에 의해 검출된 핫 메모리 블록으로 이동시키고, 콜드 메모리 블록을 여분의 메모리 블록(333)으로 관리할 수 있다.
도 3에 도시된 것과 같이, 콜드 메모리 블록 관리 모듈(320)은 카운팅부(321), 검출부(322), 및 관리부(323)을 포함할 수 있다. 카운팅부(321)는 카운터(미도시)를 포함하며, 복수의 메모리 블록(332)들이 그룹화된 메모리 영역(331)들에 대해 데이터의 이동 횟수를 카운트할 수 있다. 즉, 웨어-레벨링 모듈(120)에 의해 핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터가 이동되는 횟수를 카운트 할 수 있다.
핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터를 이동시킬 때, 웨어-레벨링 모듈(120)은 맵핑 테이블(123, 도1 참조)에 저장된 핫 메모리 블록의 물리 블록 어드레스(PBA)와 이동되는 데이터의 논리 블록 어드레스(LBA)의 맵핑 관계를 업데이트 할 수 있다. 카운팅부(321)는 메모리 영역(331)들 각각에 포함된 메모리 블록(332)들의 물리 블록 어드레스(PBA)가 웨어-레벨링 모듈(120)에 의해 업데이트되는 횟수를 카운트할 수 있다.
검출부(322)는 카운팅부(321)에 의해 카운트된 데이터의 이동 횟수를 바탕으로 복수의 메모리 영역(331)들 중 하나를 선택할 수 있다. 검출부(322)는 복수의 메모리 영역(331)들 중 카운트된 데이터의 이동 횟수가 가장 적은 메모리 영역을 선택할 수 있다. 검출부(322)는 선택된 메모리 영역에 포함된 메모리 블록들 중 랜덤으로 하나의 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다.
본 발명의 또 다른 실시예에 따르면, 콜드 메모리 블록 관리 모듈(320)은 업데이팅부(324)를 더 포함할 수 있다. 업데이팅부(324)는 복수의 메모리 블록(332)들에 대해 라이트 동작이 수행 여부를 일정한 주기로 체크할 수 있다. 업데이팅부(324)는 복수의 메모리 블록(332)들 각각 또는 그룹마다 플래그(flag) 정보를 할당하고, 복수의 메모리 블록(332)들에 라이트 동작이 수행되면 대응하는 플래그 정보를 설정할 수 있다. 업데이팅부(324)는 일정한 주기로 설정된 플래그 정보를 초기화하여, 현재 메모리 장치(330)에 수행되는 라이트 동작의 특성을 계속 확인할 수 있다. 이에 따라, 검출부(322)는 선택된 메모리 영역에 포함된 메모리 블록들 중 업데이팅부(324)에 의해 라이트 동작이 체크되지 않은 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다.
검출부(322)는 복수의 콜드 메모리 블록들을 검출하여 리스트로 저장할 수 있다. 리스트에 저장된 콜드 메모리 블록들의 개수가 임계 값 미만일 때, 검출부(322)는 복수의 메모리 영역(331)들 중 하나의 메모리 영역을 선택하여 콜드 메모리 블록을 검출할 수 있다. 또는, 검출부(322)는 메모리 시스템(300)에 의해 프로세스가 실행 중이 아닌 대기 상태, 예를 들면, 유휴 상태(idle state)일 때, 복수의 메모리 영역(331)들 중 하나의 메모리 영역을 선택하여 콜드 메모리 블록을 검출할 수 있다.
관리부(323)는 검출부(322)에 의해 검출된 콜드 메모리 블록의 데이터를 웨어-레벨링 모듈(120)에 의해 검출된 핫 메모리 블록으로 이동시킬 수 있다. 웨어-레벨링 모듈(120)에 의해 핫 메모리 블록이 검출되어 핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터 이동이 이뤄지면, 관리부(323)는 콜드 메모리 블록의 데이터를 핫 메모리 블록으로 이동시키고, 데이터가 이동된 콜드 메모리 블록을 여분의 메모리 블록(333)으로 관리할 수 있다. 관리부(323)는 검출부(322)의해 콜드 메모리 블록들이 저장된 리스트에서 하나의 콜드 메모리 블록을 선택할 수 있다.
도 4는 도 3에 도시된 메모리 시스템에 의해 수행되는 웨어-레벨링 동작을 설명하기 위한 도면이다.
도 4에 도시된 것과 같이, 메모리 장치(330)는 512개의 메모리 영역들(REGION1 내지 REGION512)을 포함할 수 있다. 또한, 각각의 영역들(REGION1 내지 REGION512)에 할당된 물리 블록 어드레스(PBA)를 참조하면, 4개의 메모리 블록들이 그룹화되어 하나의 메모리 영역을 형성할 수 있다. 하지만, 본 발명이 이에 한정되는 것은 아니다.
본 발명의 일 실시예에 따르면, 콜드 메모리 블록 관리 모듈(320)의 카운팅부(321)는 각각의 메모리 영역들(REGION1 내지 REGION512)에 할당된 메모리 블록들에서 여분의 메모리 블록들로 데이터의 이동 횟수(BMC)를 카운트할 수 있다. 예를 들면, 도 4를 참조하면, 제1 메모리 영역(REGION1)에 할당된 4개의 메모리 블록들에서 여분의 메모리 블록들로 데이터의 이동 횟수(BMC)가 카운팅부(321)에 의해 '10'으로 카운트된 것을 확인할 수 있다.
이때, 복수의 콜드 메모리 블록들이 저장된 리스트에서 콜드 메모리 블록들의 개수가 임계 값 미만이 되면, 검출부(322)는 복수의 메모리 영역들(REGION1 내지 REGION512) 중 하나의 메모리 영역을 선택할 수 있다. 검출부(322)는 복수의 메모리 영역들(REGION1 내지 REGION512) 중 카운팅부(321)에 의해 카운트된 데이터의 이동 횟수(BMC)가 가장 적은 메모리 영역을 선택할 수 있다. 도 4에서 복수의 메모리 영역들(REGION1 내지 REGION512)에 대한 데이터의 이동 횟수(BMC)를 참조하면, 가장 적은 값 '4'를 갖는 제3 메모리 영역(REGION3)이 선택될 수 있다. 검출부(322)는 제3 메모리 영역(REGION3)에 할당된 메모리 블록들, 즉, 제9 내지 제12 물리 블록 어드레스들(PBA8-PBA11)에 대응하는 메모리 블록들 중 램덤으로 하나의 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다.
본 발명의 또 다른 실시예에 따르면, 콜드 메모리 블록 관리 모듈(320)은 업데이팅부(324)를 포함하고, 업데이팅부(324)는 복수의 메모리 블록마다 플래그 정보(FLAG)를 할당할 수 있다. 그리고, 업데이팅부(324)는 메모리 블록들에 라이트 동작이 수행되면 대응하는 플래그 정보(FLAG)를 설정('1')할 수 있다. 일정한 주기로, 업데이팅부(324)는 설정된 플래그 정보(FLAG)를 초기화('0')할 수 있다.
앞서 설명한 바와 같이 제3 메모리 영역(REGION3)이 선택되면, 검출부(322)는 제3 메모리 영역(REGION3)에 할당된 메모리 블록들의 플래그 정보(FLAG)를 확인할 수 있다. 플래그 정보(FLAG)를 확인한 결과, 검출부(322)는 설정되지 않은 플래그 정보(FLAG)를 갖는 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다. 도 4를 참조하면, 제9 내지 제12 물리 블록 어드레스들(PBA8-PBA11)에 대응하는 메모리 블록들 중 플래그 정보(FLAG)가 '0'인 메모리 블록, 즉, 제11 물리 블록 어드레스(PBA10)에 대응하는 메모리 블록이 콜드 메모리 블록으로 검출될 수 있다. 플래그 정보(FLAG)가 '0'인 메모리 블록이 복수일 경우, 검출부(322)는 그 중에서 다시 랜덤으로 하나의 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다.
이후, 관리부(323)는 콜드 메모리 블록으로 검출된 제11 물리 블록 어드레스(PBA10)에 대응하는 메모리 블록의 데이터를 웨어-레벨링 모듈(120)에 의해 검출된 핫 메모리 블록으로 이동시킬 수 있다. 관리부(323)는 데이터가 이동된 제11 물리 블록 어드레스(PBA10)에 대응하는 메모리 블록을 여분의 메모리 블록(333)으로 관리할 수 있다.
도 5는 본 발명의 실시예에 따른 도 1의 메모리 시스템의 전반적인 동작을 설명하기 위한 순서도이다.
1) 핫 메모리 블록 검출(S510).
검출부(121, 도 1 참조)는 복수의 메모리 블록(332, 도 3 참조)들에 수행되는 라이트 동작 횟수를 바탕으로 핫 메모리 블록을 검출할 수 있다. 검출부(121)는 복수의 메모리 블록(332)들에 수행되는 라이트 동작 횟수를 카운트할 수 있다. 검출부(121)는 복수의 메모리 블록(332)들 중 카운트된 라이트 동작 횟수가 임계 값을 초과하는 메모리 블록을 핫 메모리 블록으로 검출할 수 있다.
2) 웨어-레벨링(S520)
검출부(121)에 의해 핫 메모리 블록이 검출되면, 웨어-레벨링부(122, 도 1 참조)는 검출된 핫 메모리 블록에 대해 웨어-레벨링 동작을 수행할 수 있다. 즉, 웨어-레벨링부(122)는 핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터를 이동시킬 수 있다. 핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터를 이동시키기 위해, 웨어-레벨링부(122)는 핫 메모리 블록의 물리 블록 어드레스(PBA)와 데이터의 논리 블록 어드레스(LBA)의 맵핑 관계를 업데이트할 수 있다.
3) 웨어-레벨링 카운트(S530)
카운팅부(321, 도 3 참조)는 웨어-레벨링부(122)에 의해 수행되는 웨어 레벨링 동작을 카운트할 수 있다. 카운팅부(321)는 메모리 블록(332)들이 그룹화된 메모리 영역(331)들에 대해 웨어-레벨링부(122)에 의한 데이터의 이동 횟수를 카운트할 수 있다. 즉, 카운팅부(321)는 웨어-레벨링부(122)에 의해 핫 메모리 블록에서 여분의 메모리 블록(333)으로 데이터가 이동되는 횟수를 카운트할 수 있다. 카운팅부(321)는 메모리 영역(331)들에 포함된 메모리 블록들의 물리 블록 어드레스(PBA)가 웨어-레벨링부(122)에 의해 업데이트되는 횟수를 카운트할 수 있다.
4) 콜드 메모리 영역 선택 및 데이터 이동 횟수 확인(S540/S550)
콜드 메모리 블록을 검출하기 위해, 검출부(322, 도 3 참조)는 카운팅부(321)에 의해 카운트된 데이터의 이동 횟수를 바탕으로, 복수의 메모리 영역(331)들 중 콜드 메모리 영역을 선택할 수 있다(S540). 검출부(322)는 복수의 콜드 메모리 블록들을 검출하여 리스트로 저장할 수 있다. 리스트에 저장된 콜드 메모리 블록들의 개수를 확인하여 임계 값 미만이면, 검출부(322)는 콜드 메모리 영역을 선택할 수 있다. 즉, 검출부(322)는 카운팅부(321)에 의해 카운트된 데이터의 이동 횟수를 확인할 수 있다. 메모리 영역(331)들 중 확인된 데이터의 이동 횟수가 가장 적은 메모리 영역(YES, S550)이 콜드 메모리 영역으로 검출될 수 있다.
5) 라이트 동작 체크(S560)
본 발명의 또 다른 실시예에 따라, 복수의 메모리 블록(332)들에 수행되는 라이트 동작이 체크될 수 있다. 콜드 메모리 블록 관리 모듈(320)은 업데이팅부(324)를 더 포함하여, 메모리 블록(332)들에 대해 라이트 동작의 수행 여부를 일정 주기로 체크할 수 있다. 업데이팅부(324)는 메모리 블록(332)들 각각 또는 그룹마다 플래그 정보를 할당하고, 메모리 블록(332)들에 라이트 동작이 수행되면 대응하는 플래그 정보를 설정할 수 있다. 업데이팅부(324)는 일정한 주기로 설정된 플래그 정보를 모두 초기화할 수 있다.
6) 콜드 메모리 블록 검출(S570)
검출부(322)는 콜드 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출할 수 있다. 본 발명의 일 실시예에 따르면, 검출부(322)는 콜드 메모리 영역에 포함된 메모리 블록들 중 랜덤으로 하나의 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다. 또한, 본 발명의 또 다른 실시예에 따르면, 검출부(322)는 콜드 메모리 영역에 포함된 메모리 블록들 중 업데이팅부(324)에 의해 라이트 동작의 수행 여부가 체크되지 않은 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다.
7) 여분 메모리 블록 관리(S580)
관리부(323)는 검출부(322)에 의해 검출된 콜드 메모리 블록의 데이터를 웨어-레벨링 모듈(120, 도 1 참조)에 의해 검출되어 데이터가 이동된 핫 메모리 블록으로 이동시킬 수 있다. 관리부(323)는 데이터가 이동된 콜드 메모리 블록을 여분의 메모리 블록(333)으로 처리하여 관리할 수 있다. 계속되는 동작으로 웨어-레벨링 모듈(120)에 의해 핫 메모리 블록이 검출되면 검출된 핫 메모리 블록의 데이터는 여분의 메모리 블록(333)으로 이동될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 이상에서 기술된 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 여러 가지 치환, 변형 및 변경으로 다양한 실시예가 가능함을 이해할 수 있을 것이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 복수의 메모리 블록들 및 적어도 하나 이상의 여분의 메모리 블록들을 포함하는 메모리 장치;
    상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 바탕으로 상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 웨어-레벨링 모듈;
    상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 카운팅부;
    상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하고, 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 제1 검출부; 및
    상기 콜드 메모리 블록의 데이터를 상기 핫 메모리 블록으로 이동시키고, 상기 콜드 메모리 블록을 상기 여분의 메모리 블록으로 관리하는 관리부;를 포함하는,
    메모리 시스템.
  2. 제1항에 있어서,
    상기 웨어-레벨링 모듈은,
    상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 카운트하여, 상기 복수의 메모리 블록들 중 카운트된 라이트 동작 횟수가 임계 값을 초과하는 메모리 블록을 상기 핫 메모리 블록으로 검출하는 제2 검출부; 및
    상기 제2 검출부에 의해 상기 핫 메모리 블록이 검출되면, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 웨어-레벨링부;를 포함하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시킬 때, 상기 웨어-레벨링 모듈은 상기 핫 메모리 블록의 물리 블록 어드레스와 상기 데이터의 논리 블록 어드레스의 맵핑 관계를 업데이트하는 메모리 시스템.
  4. 제3항에 있어서,
    상기 카운팅부는 상기 메모리 영역들 각각에 포함된 메모리 블록들의 물리 블록 어드레스가 상기 웨어-레벨링 모듈에 의해 업데이트되는 횟수를 카운트하는 메모리 시스템.
  5. 제1항에 있어서,
    상기 제1 검출부는 복수의 콜드 메모리 블록들을 검출하여 리스트로 저장하고, 리스트에 저장된 콜드 메모리 블록들의 개수가 임계 값 미만이면 상기 콜드 메모리 블록을 검출하는 메모리 시스템.
  6. 제1항에 있어서,
    상기 제1 검출부는 상기 복수의 메모리 영역들 중 상기 카운트된 데이터의 이동 횟수가 가장 적은 메모리 영역을 선택하는 메모리 시스템.
  7. 제1항에 있어서,
    상기 복수의 메모리 블록들에 대해 라이트 동작의 수행 여부를 일정한 주기로 체크하는 업데이팅부를 더 포함하는 메모리 시스템.
  8. 제7항에 있어서,
    상기 업데이팅부는 상기 복수의 메모리 블록들 각각 또는 그룹마다 플래그 정보를 할당하고, 상기 복수의 메모리 블록들에 라이트 동작의 수행되면 대응하는 플래그 정보를 설정하는 메모리 시스템.
  9. 제7항에 있어서,
    상기 제1 검출부는 상기 선택된 메모리 영역에 포함된 메모리 블록들 중 상기 업데이팅부에 의해 체크되지 않은 메모리 블록을 상기 콜드 메모리 블록으로 검출하는 메모리 시스템.
  10. 제1항에 있어서,
    상기 제1 검출부는 상기 선택된 메모리 영역에 포함된 메모리 블록들 중 랜덤으로 하나의 메모리 블록을 상기 콜드 메모리 블록으로 검출하는 메모리 시스템.
  11. 복수의 메모리 블록들 및 적어도 하나 이상의 여분의 메모리 블록들을 포함하는 메모리 장치를 포함하는 메모리 시스템의 동작방법에 있어,
    상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 바탕으로 상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 단계;
    상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 단계;
    상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하는 단계;
    상기 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 단계; 및
    상기 콜드 메모리 블록의 데이터를 상기 핫 메모리 블록으로 이동시키고, 상기 콜드 메모리 블록을 상기 여분의 메모리 블록으로 관리하는 단계;를 포함하는,
    메모리 시스템의 동작방법.
  12. 제11항에 있어서,
    상기 복수의 메모리 블록들 중 핫 메모리 블록을 검출하여, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 단계는,
    상기 복수의 메모리 블록들에 수행되는 라이트 동작 횟수를 카운트하여, 상기 복수의 메모리 블록들 중 카운트된 라이트 동작 횟수가 임계 값을 초과하는 메모리 블록을 상기 핫 메모리 블록으로 검출하는 단계; 및
    상기 핫 메모리 블록이 검출되면, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 단계;를 포함하는 메모리 시스템의 동작방법.
  13. 제12항에 있어서,
    상기 핫 메모리 블록이 검출되면, 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터를 이동시키는 단계는,
    상기 핫 메모리 블록의 물리 블록 어드레스와 상기 데이터의 논리 블록 어드레스의 맵핑 관계를 업데이트하는 단계를 포함하는 메모리 시스템의 동작방법.
  14. 제13항에 있어서,
    상기 복수의 메모리 블록들이 그룹화된 메모리 영역들에 대해 상기 핫 메모리 블록에서 상기 여분의 메모리 블록으로 데이터의 이동 횟수를 카운트하는 단계는,
    상기 메모리 영역들 각각에 포함된 메모리 블록들의 물리 블록 어드레스가 업데이트되는 횟수를 카운트하는 단계를 포함하는 메모리 시스템의 동작방법.
  15. 제11항에 있어서,
    상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하는 단계는,
    리스트에 저장된 복수의 콜드 메모리 블록들의 개수를 확인하는 단계; 및
    상기 확인된 콜드 메모리 블록들의 개수가 임계 값 미만일 때, 상기 카운트된 데이터의 이동 횟수를 확인하는 단계를 포함하는 메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 카운트된 데이터의 이동 횟수를 바탕으로 상기 복수의 메모리 영역들 중 하나의 메모리 영역을 선택하는 단계는,
    상기 복수의 메모리 영역들 중 상기 확인된 데이터의 이동 횟수가 가장 적은 메모리 영역을 선택하는 단계를 더 포함하는 메모리 시스템의 동작방법.
  17. 제11항에 있어서,
    상기 복수의 메모리 블록들에 대해 라이트 동작의 수행 여부를 일정한 주기로 체크하는 단계를 더 포함하는 메모리 시스템의 동작방법.
  18. 제17항에 있어서,
    상기 복수의 메모리 블록들에 대해 라이트 동작의 수행 여부를 일정한 주기로 체크하는 단계는,
    상기 복수의 메모리 블록들 각각 또는 그룹마다 플래그 정보를 할당하는 단계; 및
    상기 복수의 메모리 블록들에 라이트 동작의 수행되면 대응하는 플래그 정보를 설정하는 단계;를 포함하는 메모리 시스템의 동작방법.
  19. 제17항에 있어서,
    상기 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 단계는,
    상기 선택된 메모리 영역에 포함된 메모리 블록들 중 상기 라이트 동작의 수행 여부가 체크되지 않은 메모리 블록을 상기 콜드 메모리 블록으로 검출하는 단계;를 포함하는 메모리 시스템의 동작방법.
  20. 제11항에 있어서,
    상기 선택된 메모리 영역에 포함된 메모리 블록들 중 콜드 메모리 블록을 검출하는 단계는,
    상기 선택된 메모리 영역에 포함된 메모리 블록들 중 랜덤으로 하나의 메모리 블록을 상기 콜드 메모리 블록으로 검출하는 단계를 포함하는 메모리 시스템의 동작방법.
KR1020160165228A 2016-12-06 2016-12-06 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 KR20180065075A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160165228A KR20180065075A (ko) 2016-12-06 2016-12-06 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US15/726,460 US10445005B2 (en) 2016-12-06 2017-10-06 Memory system and operating method thereof
CN201711250890.1A CN108182034B (zh) 2016-12-06 2017-12-01 存储系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160165228A KR20180065075A (ko) 2016-12-06 2016-12-06 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Publications (1)

Publication Number Publication Date
KR20180065075A true KR20180065075A (ko) 2018-06-18

Family

ID=62243172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160165228A KR20180065075A (ko) 2016-12-06 2016-12-06 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Country Status (3)

Country Link
US (1) US10445005B2 (ko)
KR (1) KR20180065075A (ko)
CN (1) CN108182034B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449418B2 (en) 2020-01-09 2022-09-20 SK Hynix Inc. Controller and method for selecting victim block for wear leveling operation

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11056206B2 (en) * 2017-10-11 2021-07-06 Western Digital Technologies, Inc. Non-volatile memory with dynamic wear leveling group configuration
US10656844B2 (en) 2017-10-11 2020-05-19 Western Digital Technologies, Inc. Non-volatile memory with regional and inter-region wear leveling
KR102507646B1 (ko) * 2018-02-01 2023-03-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US10585795B2 (en) 2018-05-31 2020-03-10 Micron Technology, Inc. Data relocation in memory having two portions of data
US10795810B2 (en) * 2018-09-10 2020-10-06 Micron Technology, Inc. Wear-leveling scheme for memory subsystems
US11237742B2 (en) * 2018-12-06 2022-02-01 SK Hynix Inc. Apparatus and method for controlling data stored in memory system
KR20200076531A (ko) 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR20200099882A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN112306372A (zh) * 2019-07-31 2021-02-02 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和程序产品
TWI688958B (zh) * 2019-08-23 2020-03-21 群聯電子股份有限公司 冷區域判斷方法、記憶體控制電路單元與記憶體儲存裝置
KR20210043314A (ko) * 2019-10-11 2021-04-21 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US11366597B2 (en) * 2020-01-27 2022-06-21 Western Digital Technologies, Inc. Storage system and method for maintaining uniform hot count distribution using smart stream block exchange
US11640254B2 (en) * 2021-08-25 2023-05-02 Western Digital Technologies, Inc. Controlled imbalance in super block allocation in ZNS SSD
US20230342060A1 (en) * 2022-04-26 2023-10-26 Micron Technology, Inc. Techniques for data transfer operations

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100624973B1 (ko) 2005-06-29 2006-09-15 박상원 플래시 메모리의 효율적인 소거 횟수 평준화방법(k-평준화)
KR101437123B1 (ko) 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
JP5478855B2 (ja) 2008-08-08 2014-04-23 ルネサスエレクトロニクス株式会社 不揮発性メモリ制御方法及び半導体装置
US8601202B1 (en) * 2009-08-26 2013-12-03 Micron Technology, Inc. Full chip wear leveling in memory device
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
CN102981971B (zh) * 2012-12-25 2016-06-08 重庆大学 一种快速响应的相变存储器损耗均衡方法
US20140207998A1 (en) * 2013-01-21 2014-07-24 Skymedi Corporation System and method of wear leveling for a non-volatile memory
CN104156317A (zh) * 2014-08-08 2014-11-19 浪潮(北京)电子信息产业有限公司 一种非易失性闪存的擦写管理方法及系统
US9996297B2 (en) * 2014-11-14 2018-06-12 SK Hynix Inc. Hot-cold data separation method in flash translation layer
CN105183386A (zh) * 2015-09-14 2015-12-23 联想(北京)有限公司 一种信息处理方法及电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11449418B2 (en) 2020-01-09 2022-09-20 SK Hynix Inc. Controller and method for selecting victim block for wear leveling operation

Also Published As

Publication number Publication date
CN108182034A (zh) 2018-06-19
US20180157427A1 (en) 2018-06-07
CN108182034B (zh) 2021-03-09
US10445005B2 (en) 2019-10-15

Similar Documents

Publication Publication Date Title
KR20180065075A (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US20180373627A1 (en) Memory system having persistent garbage collection
US9952766B2 (en) Memory system, including memory device capable of overwrite operation, and method of operating the memory system
US9990153B2 (en) Memory system and wear-leveling method thereof
US8200904B2 (en) System and method for clearing data from a cache
US10656832B2 (en) Memory system and operation method thereof
JP6908789B2 (ja) マルチレベルアドレッシング
US20190179569A1 (en) Data storage device and data storage method
US20110078402A1 (en) Memory system
KR20090077538A (ko) 반도체 메모리 장치 및 그것의 마모도 관리 방법
EP3462320A1 (en) Dynamic page allocation in memory
US10170181B2 (en) Variable resistance memory device including bidirectional switch, memory system including the same, and operating method thereof
US10360157B2 (en) Memory system and method for wear-leveling by swapping memory cell groups
US20230393753A1 (en) Wear leveling in solid state drives
CN107958690B (zh) 数据存储装置及其操作方法
US11604727B2 (en) Apparatus and methods to prolong lifetime of memories
KR20170133574A (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
KR102634813B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20200073108A (ko) Pram 블록들 내 카피백 및 쓰기의 통합을 위한 방법