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

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

Info

Publication number
KR20180045091A
KR20180045091A KR1020160138385A KR20160138385A KR20180045091A KR 20180045091 A KR20180045091 A KR 20180045091A KR 1020160138385 A KR1020160138385 A KR 1020160138385A KR 20160138385 A KR20160138385 A KR 20160138385A KR 20180045091 A KR20180045091 A KR 20180045091A
Authority
KR
South Korea
Prior art keywords
memory block
memory
cold
distribution
hot
Prior art date
Application number
KR1020160138385A
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 KR1020160138385A priority Critical patent/KR20180045091A/ko
Priority to US15/617,109 priority patent/US10656832B2/en
Priority to CN201710595571.8A priority patent/CN107977319B/zh
Publication of KR20180045091A publication Critical patent/KR20180045091A/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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
    • 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/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
    • 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • 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

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 기술은 메모리 시스템 및 그 동작방법에 관한 것으로서, 복수의 메모리 블록들을 포함하는 메모리 장치; 상기 복수의 메모리 블록들에 수행되는 라이트 동작의 횟수를 카운트하는 라이트 동작 확인부; 상기 카운트된 횟수를 바탕으로 상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 분포도 관리 모듈; 및 상기 카운트된 횟수와 상기 분포도를 바탕으로 상기 복수의 메모리 블록들 중 핫 및 콜드 메모리 블록들을 검출하는 웨어-레벨링 모듈;을 포함하고, 상기 웨어-레벨링 모듈은 상기 핫 메모리 블록의 이력을 관리하고, 관리되는 이력에 따라 상기 핫 메모리 블록을 상기 콜드 메모리 블록과 스왑한다.

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) 동작을 수행한다. 웨어-레벨링(wear-leveling)은, 저장매체의 쓰기 내구성을 연장하기 위해 사용되는 기술이다. 이 기술은, 저장매체에 데이터를 기록할 때 각 메모리 셀에 분산 쓰기 작업이 수행되도록 하고, 이로 인해 저장매체의 특정 메모리 셀의 반복 사용을 줄이고, 모든 메모리 셀들이 균등하게 사용될 수 있도록 한다. 통상적으로 웨어-레벨링 동작은 메모리 컨트롤러에 의해 수행된다. 예컨대 메모리 컨트롤러는, 저장매체에 대한 쓰기 요청이 들어오는 경우 덮어쓰기(overwrite) 횟수를 참고하여 논리적 주소와 물리적 주소 사이의 적절한 맵핑을 수행 및 변경함으로써, 비어있는 메모리 셀들 중 아직 덜 사용된 메모리 셀 위주로 쓰기 작업이 수행되도록 제어한다.
본 발명은 라이트 동작 횟수에 따라 복수의 메모리 블록들을 웨어-레벨링 하면서, 각각의 메모리 블록들에 수행된 웨어-레벨링 이력을 관리하는 메모리 시스템 및 그 동작방법을 제공하고자 한다.
본 발명의 일실시예에 따른 메모리 시스템은, 복수의 메모리 블록들을 포함하는 메모리 장치; 상기 복수의 메모리 블록들에 수행되는 라이트 동작의 횟수를 카운트하는 라이트 동작 확인부; 상기 카운트된 횟수를 바탕으로 상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 분포도 관리 모듈; 및 상기 카운트된 횟수와 상기 분포도를 바탕으로 상기 복수의 메모리 블록들 중 핫 및 콜드 메모리 블록들을 검출하는 웨어-레벨링 모듈;을 포함하고, 상기 웨어-레벨링 모듈은 상기 핫 메모리 블록의 이력을 관리하고, 관리되는 이력에 따라 상기 핫 메모리 블록을 상기 콜드 메모리 블록과 스왑할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 단계; 상기 분포도를 바탕으로 핫 메모리 블록을 검출하는 단계; 상기 검출된 핫 메모리 블록의 이력을 확인하는 단계; 상기 검출된 핫 메모리 블록의 이력이 제1 상태이면, 상기 검출된 핫 메모리 블록을 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑하는 단계; 및 상기 스왑된 핫 메모리 블록의 이력을 제2 상태로 변경하는 단계;를 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 메모리 시스템의 동작방법은, 복수의 메모리 블록들 중 라이트 동작이 수행되는 메모리 블록의 라이트 동작 횟수를 확인하는 단계; 상기 확인된 라이트 동작 횟수를 바탕으로 상기 메모리 블록이 상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도의 상위 제1 퍼센트에 포함되면, 상기 메모리 블록을 핫 메모리 블록으로 검출하는 단계; 상기 검출된 핫 메모리 블록의 이력을 확인하는 단계; 상기 검출된 핫 메모리 블록의 확인된 이력이 제1 상태이면, 상기 검출된 핫 메모리 블록을 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑하는 단계; 및 상기 스왑된 핫 메모리 블록의 이력을 제2 상태로 변경하는 단계;를 포함할 수 있다.
본 기술은 복수의 메모리 블록들 중 라이트 동작이 상대적으로 많이 수행된 핫 메모리 블록을 라이트 동작이 상대적으로 적게 수행된 콜드 메모리 블록과 스왑하면서, 스왑된 핫 메모리 블록의 이력을 따로 관리할 수 있다. 이 같은 스왑 이력을 바탕으로, 한번 스왑된 메모리 블록이 핫 메모리 블록으로 검출되더라도 다시 스왑되는 것을 방지하고, 마모도가 무분별하게 증가하는 것을 줄일 수 있다.
또한, 라이트 동작 횟수에 따른 메모리 블록들의 분포를 바탕으로, 핫 메모리 블록 또는 콜드 메모리 블록을 검출하는 영역을 세분화할 수 있다. 따라서, 핫 메모리 블록의 경우 조건이 강화된 영역을 추가하여, 스왑 이력에 무관하게 웨어-레벨링을 수행해야 하는 핫(레드-핫) 메모리 블록을 검출할 수 있고, 콜드 메모리 블록의 경우 조건이 완화된 영역을 추가하여, 콜드 메모리 블록이 잘 검출되지 않더라도 예비(마일드-콜드) 메모리 블록을 검출하여 리스트로 보관할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 도시한 블록도.
도 2는 도 1에 도시된 분포도 관리 모듈의 동작을 설명하기 위한 도면.
도 3은 도 1에 도시된 웨어-레빌링 모듈의 동작을 설명하기 위한 도면.
도 4 및 도 5는 본 발명의 실시예에 따른 메모리 시스템의 웨어-레벨링 동작을 설명하기 위한 순서도.
이하, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 가장 바람직한 실시예를 첨부 도면을 참조하여 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 흩뜨리지 않도록 생략될 것이라는 것을 유의하여야 한다.
도 1은 본 발명의 실시예에 따른 메모리 시스템을 도시한 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 메모리 컨트롤러(200), 및 메모리 장치(300)를 포함하며, 메모리 컨트롤러(200)는 호스트(미도시)의 요청에 따라 커맨드(CMD), 및 어드레스(ADD), 등을 생성하여 메모리 장치(300)에 데이터(DATA)를 저장할 수 있다.
도 1에 도시된 것과 같이 메모리 장치(300)는 복수의 메모리 블록들(310, 320, 330)을 포함한다. 본 발명의 일 실시예에 따라 메모리 장치(300)는 PCRAM을 포함할 수 있다. 그러나, 본 발명이 이에 한정되는 것은 아니며, MRAM, RRAM, FRAM, 등의 가변 저항 메모리 장치를 포함할 수 있다. 가변 저항 메모리 장치는 메모리 셀의 저항 크기에 의해 저장된 데이터를 구분할 수 있다. 그리고, 메모리 장치에 데이터를 쓰기(write) 전 소거(erase) 동작이 요구되지 않고 겹쳐 쓰기(overwrite)를 지원할 수 있다. 즉, 라이트 동작을 통해 메모리 셀에 저장된 '0' 데이터는 '1' 데이터로 변경되거나, '1' 데이터는 '0' 데이터로 변경될 수 있다. 따라서, 메모리 장치(300)에 포함되는 복수의 메모리 블록들(310, 320, 330)은 각각에 수행된 라이트 동작 횟수를 바탕으로 마모도를 측정할 수 있다.
이를 위해, 메모리 컨트롤러(200)은 라이트 동작 확인부(210)를 포함할 수 있다. 라이트 동작 확인부(210)는 카운트 유닛(미도시)를 구비하고, 호스트의 요청에 따른 각각의 메모리 블록들(310, 320, 330)에 수행되는 라이트 동작의 횟수를 카운트할 수 있다. 라이트 동작 확인부(210)는 호스트로부터 라이트 동작이 요청되는 데이터의 ID, 즉, 데이터의 논리 어드레스(logical address)를 확인하고, 반복되어 입력되는 어드레스를 카운트하여 데이터가 저장된 영역, 즉, 메모리 블록들(310, 320, 330)의 마모도를 측정할 수 있다.
도 1을 참조하면, 메모리 컨트롤러(200)는 분포도 관리 모듈(220), 및 웨어-레벨링 모듈(230)을 더 포함할 수 있다. 분포도 관리 모듈(220)은 라이트 동작 확인부(210)에 의해 측정되는 마모도, 즉, 메모리 블록들(310, 320, 330)의 라이트 동작 횟수를 바탕으로 메모리 블록들(310, 320, 330)의 분포도, 즉, 분포 테이블을 저장할 수 있다. 분포도 관리 모듈(220)에 의해 라이트 동작 횟수가 여러 구간으로 세분화되어 각각의 구간에 포함되는 메모리 블록들(310, 320, 330)의 개수가 카운트될 수 있다. 메모리 블록들(310, 320, 330)에 라이트 동작이 계속 수행될수록, 라이트 동작 횟수에 따른 메모리 블록들(310, 320, 300)의 분포도가 달라질 수 있으며, 이에 따라, 분포도 관리 모듈(220)에 저장되는 분포 테이블 역시 업데이트 될 수 있다. 이 같은 분포도 관리 모듈(220)의 동작은 도 2를 통해 보다 더 구체적으로 설명하고자 한다.
웨어-레벨링 모듈(230)은 라이트 동작 확인부(210)에 의해 측정되는 메모리 블록들(310, 320, 330)의 마모도, 즉, 라이트 동작 횟수와 분포도 관리 모듈(220)의 분포 테이블을 바탕으로, 메모리 블록들(310, 320, 330) 중 핫 메모리 블록과 콜드 메모리 블록을 검출할 수 있다. 즉, 상대적으로 라이트 동작이 많이 수행된 핫 메모리 블록과 상대적으로 라이트 동작이 적게 수행된 콜드 메모리 블록을 검출할 수 있다. 검출된 메모리 블록들의 데이터를 서로 교환함으로써 핫 메모리 블록과 콜드 메모리 블록을 스왑(swapping)할 수 있다. 웨어-레벨링 모듈(230)은 메모리 장치(300)의 핫 메모리 블록과 콜드 메모리 블록을 스왑하여 모든 메모리 블록들이 균등하게 마모될 수 있도록 한다.
본 발명의 실시예에 따른 웨어-레벨링 모듈(230)은 분포도 관리 모듈(220)의 분포 테이블을 바탕으로 메모리 블록들(310, 320, 330)을 세분화된 영역들로 구분할 수 있다. 즉, 라이트 동작 횟수에 따른 복수의 메모리 블록들(310, 320, 330)의 분포도를 이용해서 메모리 블록들(310, 320, 330)을 핫 영역 또는 콜드 영역뿐 아니라 더 세분화된 영역으로 구분할 수 있다. 이를 통해 웨어-레벨링 모듈(230)은 스왑하기 위한 메모리 블록들을 용이하게 검출하거나, 스왑된 메모리 블록들을 추가로 관리해 불필요한 동작을 방지할 수 있다. 본 발명의 실시예에 따른 웨어-레벨링 모듈(230)의 동작은 도 3을 통해 보다 더 구체적으로 설명하고자 한다.
도 2는 도 1의 분포도 관리 모듈(220)의 동작을 설명하기 위한 도면이다. 도 2를 참조하면, 분포도 관리 모듈(220)에 저장되는 분포 테이블(A)과 그에 따른 메모리 블록들의 분포 그래프(B)를 나타낸다.
분포도 관리 모듈(220)은 라이트 동작 횟수를 여러 구간으로 나눌 수 있다. 도 2의 분포 테이블(A)을 참조하면 라이트 동작 횟수가 '1000' 단위로 세분화되어 있지만, 본 발명이 이에 한정되는 것은 아니다. 라이트 동작 확인부(210)에 의해 복수의 메모리 블록들의 라이트 동작 횟수가 카운트되고, 분포도 관리 모듈(220)은 카운트된 동작 횟수를 바탕으로, 각각의 구간에 포함되는 메모리 블록들의 개수를 확인할 수 있다.
메모리 블록에 라이트 동작이 계속 수행될수록 대응하는 라이트 동작 횟수는 증가할 수 있다. 이에 따라, 라이트 동작 횟수 구간에 대응하는 메모리 블록 개수도 달라질 수 있다. 예를 들어, 라이트 동작 횟수가 4000에서 5000 사이인 메모리 블록에 라이트 동작이 계속 수행되어 라이트 동작 횟수가 5000 이상으로 증가하게 되면, 분포도 관리 모듈(220)은 분포 테이블의 4000~5000 구간에 대응하는 메모리 블록 개수를 하나 감소시키고, 5000~6000에 대응하는 메모리 블록 개수를 하나 증가시킬 수 있다. 복수의 메모리 블록들에 라이트 동작이 계속 수행될수록 라이트 동작 횟수는 전반적으로 증가해서, 분포 그래프(B)에 보이듯이 분포도가 오른쪽으로 이동할 수 있다.
분포도 관리 모듈(220)에 의해 복수의 메모리 블록들의 분포도를 바탕으로 복수의 메모리 블록들을 구분하는 다양한 영역이 설정될 수 있다. 즉, 분포 테이블(A)에 저장된 라이트 동작 횟수 구간에 따른 메모리 블록들의 개수를 바탕으로 전체 메모리 블록들 중에서 일정 범위의 메모리 블록들을 포함하는 영역을 설정할 수 있다. 분포도 관리 모듈(220)은 전체 메모리 블록들의 개수와 동작 횟수 구간에 대응하는 메모리 블록 개수를 비교해서 각각의 영역들을 설정할 수 있다. 라이트 동작에 따라 동작 횟수 구간에 대응하는 메모리 블록 개수가 변하면, 설정된 영역 역시 달라질 수 있다.
우선, 전체 메모리 블록들 중 라이트 동작 횟수가 상위 일정한 범위에 포함되는 메모리 블록들을 검출하기 위해 핫(hot) 영역을 설정할 수 있다. 도 2 의 분포 테이블(A)을 참조하면, 예를 들어, 전체 메모리 블록들 중 라이트 동작 횟수가 상위 3%인 메모리 블록들을 핫 메모리 블록으로 검출한다면, 대략 상위 300((1+80+50+950+8000+950+50)*0.03)개 또는 그 이내의 메모리 블록들이 핫 메모리 블록으로 검출될 수 있다. 이를 위해, 도 2의 분포 테이블(A)에선 동작 횟수가 5000 이상인 구간이 핫(hot) 영역으로 설정될 수 있다. 전체 메모리 블록들 중 라이트 동작 횟수가 하위 일정한 범위에 포함되는 메모리 블록들에 대해서는 콜드(cold) 영역을 설정할 수 있다. 콜드(cold) 영역도 핫(hot) 영역과 같은 비율로 설정될 때, 콜드(cold) 영역은 동작 횟수가 2000 미만인 구간이 설정될 수 있다.
더 나아가, 분포도 관리 모듈(220)은 도 2에 도시된 것과 같이 핫(hot) 영역을 좀 더 세분화할 수 있다. 분포도 관리 모듈(220)은 핫(hot) 영역에서 라이트 동작 횟수가 더 상위인 레드-핫(red-hot) 영역을 설정하고 그 이하를 어닐링(annealing) 영역으로 설정할 수 있다. 또한 콜드(cold) 영역 외에 콜드(cold) 영역 보다는 라이트 동작 횟수가 어느 정도 높은 마일드-콜드(mild-cod) 영역을 설정하고 함께 관리할 수 있다. 핫(hot) 영역 및 콜드(cold) 영역에 해당하는 메모리 블록들을 스왑(swqpping)하는 동작이나 각각의 영역에 따른 웨어-레벨링 동작은 도 3 내지 도 5를 참조하여 보다 더 구체적으로 설명하고자 한다. ,
도 3은 도 1의 웨어-레빌링 모듈(230)의 동작을 설명하기 위한 도면이다. 호스트에 의해 라이트 동작이 요청되면, 라이트 동작 확인부(210)는 요청된 메모리 블록의 라이트 동작 횟수를 업데이트하고 업데이트된 라이트 동작 회수를 웨어-레벨링 모듈(230)로 통지할 수 있다. 웨어-레벨링 모듈(230)은 통지된 라이트 동작 횟수를 바탕으로 분포도 관리 모듈(220)의 분포도를 이용해, 해당 메모리 블록이 상위 설정된 퍼센트 내에 포함되면 핫 메모리 블록으로 검출할 수 있다. 도 3을 참조하면, ID가 '1234'인 데이터의 라이트 동작이 수행되고, 해당 메모리 블록의 라이트 동작 횟수(WCNT)가 '5001'로 확인된 것을 볼 수 있다. 예를 들어, 도 2의 분포 테이블(A)을 참조했을 때, 웨어-레벨링 모듈(230)은 해당 메모리 블록이 핫 영역에 포함된 것을 확인하고 핫 메모리 블록(hot memory block)으로 검출할 수 잇다.
이때, 웨어-레빌링 모듈(230)은 콜드 메모리 블록 리스트를 따로 관리할 수 있다. 여유 구간에서 복수의 메모리 블록들 중 콜드 메모리 블록을 검출해서 콜드 메모리 블록 리스트에 추가하거나, 콜드 메모리 블록 리스트의 콜드 메모리 블록 개수가 기준치 이하로 내려가면 콜드 메모리 블록을 검출할 수 있다. 웨어-레벨링 모듈(230)은 복수의 메모리 블록들 중 순차적으로 또는 랜덤하게 하나의 메모리 블록을 정하고, 라이트 동작 확인부(210)로부터 해당 메모리 블록의 라이트 동작 횟수(WCNT)를 확인할 수 있다. 웨어-레벨링 모듈(230)은 확인된 라이트 동작 횟수(WCNT)를 바탕으로 분포도 관리 모듈(220)의 분포 테이블을 이용해 해당 메모리 블록이 콜드 메모리 블록인지를 검출한다.
도 3을 참조하면, 콜드 메모리 블록 리스트로부터 ID가 '50'인 데이터에 해당하는 메모리 블록이 콜드 메모리 블록(cold memory block)으로 확인된 것을 볼 수 있다. 따라서, 웨어-레벨링 모듈(230)은 ID '1234'인 데이터와 ID가 '50'인 데이터를 스왑할 수 있다. 결국, ID '1234'인 데이터가 물리 어드레스(PA: physical address) '1234'에 해당하는 메모리 블록에서 물리 어드레스(PA) '4096'에 해당하는 메모리 블록으로 이동하고, ID '50'인 데이터가 물리 어드레스(PA: physical address) '4096'에 해당하는 메모리 블록에서 물리 어드레스(PA) '1024'에 해당하는 메모리 블록으로 이동할 수 있다.
ID '1234'인 데이터는 그 동안 라이트 동작이 많이 수행된 핫 데이터일 수 있지만, 라이트 동작이 많이 수행되지 않은 콜드 메모리 블록(PA '4096')으로 옮겨져서 메모리 블록들이 균등하게 관리될 수 있다. 하지만, ID '50'인 데이터는 콜드 데이터라 할지라도, 그 동안 라이트 동작이 많이 수행된 핫 메모리 블록(PA '1024')으로 옮겨져서, 라이트 동작이 한번이라도 수행되면 바로 핫 메모리 블록으로 검출되어 스왑이 이뤄질 수 있다.
웨어-레빌링 모듈(230)은 이같이 빈번히 발생되는 스왑을 방지하기 위해, 플래그 정보(FLAG)를 생성하여 핫 메모리 블록들의 스왑 이력을 관리할 수 있다. 즉, 핫 메모리 블록의 이전 스왑 여부에 따라 플래그 정보(FLAG)를 활성화 또는 비활성화하여, 이후 콜드 메모리 블록과의 스왑을 제어할 수 있다. 도 3에 보이듯이, 스왑 직후 스왑된 핫 메모리 블록(just swapped hot memory block)의 플래그 정보(FLAG)를 '1'로 변경하여, 핫 메모리 블록이 스왑을 했는지 안 했는지 여부를 나타낼 수 있다. 또한, 핫 메모리 블록을 검출할 때에도, 플래그 정보(FLAG)를 확인하고 그 상태에 따라 콜드 메모리 블록과 스왑을 할지 안 할지 여부를 결정할 수 있다. 이 같은 추가 정보를 이용하여, 웨어-레벨링 모듈(230)은 도 2의 핫(hot) 영역으로 검출되는 메모리 블록들을 어닐링(annealing) 영역으로 추가 구분하여 관리할 수 있다. 또한, 라이트 동작이 일정 횟수를 초과하면 어닐링(annealing) 영역의 메모리 블록들도 레드-핫(red-hot) 영역으로 구분하여 스왑 이력에 상관없이 관리할 수도 있다.
도 4 및 도 5는 본 발명의 실시예에 따른 메모리 시스템의 웨어-레벨링 동작을 설명하기 위한 순서도이다. 도 4는 메모리 시스템의 웨어-레벨링 동작에 따라 핫 메모리 블록을 검출하는 동작을 나타내고, 도 5는 메모리 시스템의 웨어-레벨링 동작에 따라 콜드 메모리 블록을 검출하는 동작을 나타낸다.
우선, 도 4를 참조하면, 호스트에 요청에 의해 복수의 메모리 블록들 중 하나에 라이트 동작이 수행되면(S410), 라이트 동작 확인부(210, 도1 참조)는 해당 메모리 블록의 라이트 동작 횟수를 업데이트하고 업데이트된 라이트 동작 횟수를 웨어-레벨링 모듈(230, 도1 참조)로 통지할 수 있다. 웨어-레벨링 모듈(230)은 통지된 라이트 동작 횟수를 확인하고(S420), 분포 테이블에 저장된 복수의 메모리 블록들의 분포도를 바탕으로 다른 메모리 블록들의 라이트 동작 횟수들과 비교할 수 있다(S430).
이때, 라이트 동작이 수행된 메모리 블록의 라이트 동작 횟수가 분포도 상위 제1 퍼센트인 메모리 블록들의 라이트 동작 횟수들에 대응하면(YES, S430), 해당 메모리 블록을 핫 메모리 블록으로 검출할 수 있다(S440). 즉, 라이트 동작 횟수를 기준으로, 라이트 동작이 수행된 메모리 블록이 분포도의 상위 제1 퍼센트에 포함되면, 핫 메모리 블록으로 검출될 수 있다.
웨어-레벨링 모듈(230)은 검출된 핫 메모리 블록의 스왑 이력(history)을 확인할 수 있다(S450). 복수의 메모리 블록들은 제1 또는 제2 상태인 스왑 이력을 가질 수 있다. 제1 상태인 스왑 이력은 대응하는 메모리 블록이 스왑된 적이 있음을 나타낼 수 있고, 제2 상태인 스왑 이력은 대응하는 메모리 블록이 스왑된 적이 없음을 나타낼 수 있다. 웨어-레벨링 모듈(230)은 검출된 핫 메모리 블록에 대응하는 플래그 정보(FLAG)를 확인하여, 검출된 핫 메모리 블록의 스왑 여부를 확인할 수 있다.
검출된 핫 메모리 블록의 스왑 이력이 제1 상태이면(제1 상태, S450), 웨어-레벨링 모듈(230)은 검출된 핫 메모리 블록을 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑할 수 있다(S460). 검출된 핫 메모리 블록과 콜드 메모리 블록을 스왑함으로써, 웨어-레벨링 모듈(230)은 스왑된 핫 메모리 블록의 스왑 이력을 제2 상태로 변경할 수 있다(S470).
검출된 핫 메모리 블록의 스왑 이력이 제2 상태이면(제2 상태, S450), 웨어-레벨링 모듈(230)은 검출된 핫 메모리 블록의 라이트 동작 횟수를 다시 다른 메모리 블록들의 라이트 동작 횟수들과 비교할 수 있다(S480). 분포 테이블에 저장된 복수의 메모리 블록들의 분포도를 바탕으로, 검출된 핫 메모리 블록의 라이트 동작 횟수가 상위 제2 퍼센트인 메모리 블록들의 라이트 동작 횟수들에 대응하면(YES, S480), 검출된 핫 메모리 블록은 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑할 수 있다(S490).
즉, 라이트 동작 횟수를 기준으로, 검출된 핫 메모리 블록이 분포도의 상위 제2 퍼센트에 포함되면, 콜드 메모리 블록과 스왑될 수 있다. 이때, 제2 퍼센트는 제1 퍼센트보다 적은 값을 가질 수 있다. 도 2를 참조하면, 분포도의 상위 제2 퍼센트는 레드-핫 영역을 나타낼 수 있다. 따라서, 검출된 핫 메모리 블록은 레드-핫 영역에 포함되며, 스왑 이력에 상관없이 콜드 메모리 블록과 스왑될 수 있다.
도 5를 참조하면, 웨어-레벨링 모듈(230)에 의해 핫 메모리 블록과 스왑하기 위한 콜드 메모리 블록을 검출하고, 콜드 메모리 블록 리스트를 관리하는 동작이 나타난다.
웨어-레빌링 모듈(230)은 여유 구간에서 복수의 메모리 블록들 중 콜드 메모리 블록을 검출해서 콜드 메모리 블록 리스트에 추가할 수 있다. 또는, 웨어-레벨링 모듈(230)은 콜드 메모리 블록 리스트를 확인해서(S510), 콜드 메모리 블록 개수가 기준치 이하로 내려가면(YES, S520), 복수의 메모리 블록들 중 콜드 메모리 블록을 검출할 수 있다.
이때, 웨어-레벨링 모듈(230)은 복수의 메모리 블록들 중 순차적으로 또는 랜덤하게 하나의 메모리 블록을 선택할 수 있다(S530). 웨어-레벨링 모듈(230)은 라이트 동작 확인부(210)로부터 선택된 메모리 블록의 라이트 동작 횟수를 확인할 수 있다(S540).
웨어-레벨링 모듈(230)은 분포 테이블에 저장된 복수의 메모리 블록들의 분포도를 바탕으로, 확인된 라이트 동작 횟수에 따라 선택된 메모리 블록이 콜드 메모리 블록인지를 검출한다. 이를 위해, 웨어-레벨링 모듈(230)은 복수의 메모리 블록들의 분포도를 바탕으로 확인된 라이트 동작 횟수를 다른 메모리 블록들의 라이트 동작 횟수들과 비교할 수 있다(S550).
이때, 선택된 메모리 블록의 라이트 동작 횟수가 분포도 하위 제1 퍼센트인 메모리 블록들의 라이트 동작 횟수들에 대응하면(YES, S550), 선택된 메모리 블록을 콜드 메모리 블록으로 검출할 수 있다. 즉, 라이트 동작 횟수를 기준으로, 선택된 메모리 블록이 분포도의 하위 제1 퍼센트에 포함되면, 콜드 메모리 블록으로 검출될 수 있다. 따라서, 선택된 메모리 블록은 콜드 메모리 블록 리스트의 제1 리스트에 추가될 수 있다(S560).
선택된 메모리 블록이 분포도의 하위 제1 퍼센트에 포함되지 않으면(NO, S550), 웨어-레벨링 모듈(230)은 선택된 메모리 블록의 라이트 동작 횟수를 다시 다른 메모리 블록들의 라이트 동작 횟수들과 비교할 수 있다(S570). 분포 테이블에 저장된 복수의 메모리 블록들의 분포도를 바탕으로, 선택된 메모리 블록의 라이트 동작 횟수가 하위 제2 퍼센트인 메모리 블록들의 라이트 동작 횟수들에 대응하면(YES, S570), 선택된 메모리 블록을 예비로 콜드(즉, 마일드-콜드) 메모리 블록으로 검출할 수 있다. 즉, 라이트 동작 횟수를 기준으로, 선택된 메모리 블록이 분포도의 하위 제2 퍼센트에 포함되면, 마일드-콜드 메모리 블록으로 검출될 수 있다. 이때, 제2 퍼센트는 제1 퍼센트보다 큰 값을 가질 수 있다. 따라서, 선택된 메모리 블록은 콜드 메모리 블록 리스트의 제2 리스트에 추가될 수 있다(S560).
선택된 메모리 블록이 분포도의 하위 제2 퍼센트에도 포함되지 않으면(NO, S570), 웨어-레벨링 모듈(230)은 복수의 메모리 블록들 다음 순서의 메모리 블록 또는 랜덤하게 다른 메모리 블록을 선택하고(S530), 콜드 메모리 블록을 검출하는 동작(S540~S570)을 반복할 수 있다. 또한, 웨어-레벨링 모듈(230)은 검출된 핫 메모리 블록과 스왑하기 위한 콜드 메모리 블록을 확인할 때, 콜드 메모리 블록 리스트의 제1 리스트에서 제2 리스트 순으로 콜드 메모리 블록을 확인할 수 있다. 즉, 제1 리스트에 있는 콜드 메모리 블록을 먼저 확인하고, 제1 리스트에 검출된 콜드 메모리 블록이 없을 경우, 제2 리스트에 있는 예비 콜드(즉, 마일드-콜드) 메모리 블록을 확인할 수 있다.
도 4 및 도 5에 도시된 핫 메모리 블록 및 콜드 메모리 블록을 검출하는 동작에 앞서, 비록, 도면에 도시되지는 않았지만, 복수의 메모리 블록들의 분포도를 관리하는 동작이 수행될 수 있다. 즉, 라이트 동작 확인부(210)에 의해 복수의 메모리 블록들에 수행되는 라이트 동작의 횟수가 카운트되고, 카운트된 횟수를 바탕으로, 분포도 관리 모듈(220, 도 1 참조)은 복수의 메모리 블록들의 분포도에 대응하는 분포 테이블을 저장할 수 있다. 분포도 관리 모듈(220)은 복수의 메모리 블록들의 라이트 동작 횟수를 세부 구간들로 나누고, 라이트 동작 확인부(210)에 의해 카운트된 횟수를 바탕으로 각각의 구간에 포함되는 메모리 블록들의 개수를 카운트하여 분포 테이블로 저장할 수 있다. 라이트 동작이 계속 수행됨에 따라 각각의 구간에 포함되는 메모리 블록들의 개수가 변하고, 분포도 관리 모듈(220)에 의해 분포 테이블에 저장되는 값들도 달라질 수 있다. 따라서, 도 2에 도시된 것과 같이, 분포 테이블에 대응하는 복수의 메모리 블록들의 분포도는 라이트 동작에 따라 우측으로 시프트될 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관해 설명하였으나, 이상에서 기술된 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술 분야의 통상의 전문가라면 본 발명의 기술 사상의 범위 내에서 여러 가지 치환, 변형 및 변경으로 다양한 실시예가 가능함을 이해할 수 있을 것이다. 그러므로, 본 발명의 범위는 설명된 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.

Claims (20)

  1. 복수의 메모리 블록들을 포함하는 메모리 장치;
    상기 복수의 메모리 블록들에 수행되는 라이트 동작의 횟수를 카운트하는 라이트 동작 확인부;
    상기 카운트된 횟수를 바탕으로 상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 분포도 관리 모듈; 및
    상기 카운트된 횟수와 상기 분포도를 바탕으로 상기 복수의 메모리 블록들 중 핫 및 콜드 메모리 블록들을 검출하는 웨어-레벨링 모듈;을 포함하고,
    상기 웨어-레벨링 모듈은 상기 핫 메모리 블록의 이력을 관리하고, 관리되는 이력에 따라 상기 핫 메모리 블록을 상기 콜드 메모리 블록과 스왑하는,
    메모리 시스템.
  2. 제1항에 있어서,
    상기 분포도 관리 모듈은 상기 복수의 메모리 블록들의 라이트 동작 횟수를 세부 구간들로 나누고, 상기 카운트된 횟수를 바탕으로 각각의 구간에 포함되는 메모리 블록의 개수를 카운트하여 분포 테이블로 저장하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 웨어-레벨링 모듈은 플래그 정보를 이용하여, 상기 핫 메모리 블록의 스왑 여부에 따라 상기 플래그 정보를 활성화 또는 비활성화하는 메모리 시스템.
  4. 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 단계;
    상기 분포도를 바탕으로 핫 메모리 블록을 검출하는 단계;
    상기 검출된 핫 메모리 블록의 이력을 확인하는 단계;
    상기 검출된 핫 메모리 블록의 이력이 제1 상태이면, 상기 검출된 핫 메모리 블록을 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑하는 단계; 및
    상기 스왑된 핫 메모리 블록의 이력을 제2 상태로 변경하는 단계;를 포함하는,
    메모리 시스템 동작방법.
  5. 제4항에 있어서,
    상기 핫 메모리 블록을 검출하는 단계는,
    상기 복수의 메모리 블록들 중 라이트 동작이 수행되는 메모리 블록의 라이트 동작 횟수를 확인하는 단계; 및
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 메모리 블록이 상기 분포도의 상위 제1 퍼센트에 포함되면, 상기 메모리 블록을 상기 핫 메모리 블록으로 검출하는 단계;를 포함하는 메모리 시스템의 동작방법.
  6. 제5항에 있어서,
    상기 메모리 블록을 상기 핫 메모리 블록으로 검출하는 단계는,
    상기 복수의 메모리 블록들 중 라이트 동작 횟수의 각각의 구간에 대응하는 메모리 블록들의 개수를 나타내는 분포 테이블을 바탕으로, 상기 확인된 라이트 동작 횟수를 상기 분포도의 상위 1 퍼센트인 메모리 블록들의 라이트 동작 횟수와 비교하는 단계를 포함하는 메모리 시스템의 동작방법.
  7. 제5항에 있어서,
    상기 검출된 핫 메모리 블록의 이력이 제2 상태이면, 상기 검출된 핫 메모리 블록이 상기 분포도의 상위 제1 퍼센트보다 적은 제2 퍼센트에 포함되는지 확인하는 단계; 및
    상기 확인 결과 상기 검출된 핫 메모리 블록이 상기 분포도의 상위 제2 퍼센트에 포함되면, 상기 검출된 핫 메모리 블록을 상기 콜드 메모리 블록과 스왑하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
  8. 제4항에 있어서,
    상기 콜드 메모리 블록 리스트의 콜드 메모리 블록들 개수가 기준치 이하이면, 상기 복수의 메모리 블록들 중 콜드 메모리 블록을 검출하고, 검출된 골드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
  9. 제8항에 있어서,
    상기 콜드 메모리 블록을 검출하고, 검출된 골드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계는,
    상기 복수의 메모리 블록들 중 제1 메모리 블록의 라이트 동작 횟수를 확인하는 단계; 및
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트에 포함되면, 상기 제1 메모리 블록을 상기 콜드 메모리 블록 리스트의 제1 리스트에 추가하는 단계;를 포함하는 메모리 시스템의 동작방법.
  10. 제9항에 있어서,
    상기 콜드 메모리 블록을 검출하고, 검출된 콜드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계는,
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트 이상이면, 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트보다 큰 제2 퍼센트에 포함되는지 확인하는 단계; 및
    상기 확인 결과 상기 제1 메모리 블록이 상기 분포도의 하위 제2 퍼센트에 포함되면, 상기 제1 메모리 블록을 상기 콜드 메모리 블록 리스트의 제2 리스트에 추가하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
  11. 제10항에 있어서,
    상기 확인 결과 상기 제1 메모리 블록이 상기 분포도의 하위 제2 퍼센트 이상이면, 상기 복수의 메모리 블록들 중 제2 메모리 블록에 대해 상기 콜드 메모리 블록을 검출하고, 검출된 콜드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계를 반복하는 메모리 시스템의 동작방법.
  12. 제10항에 있어서,
    상기 검출된 핫 메모리 블록을 상기 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑하는 단계는
    상기 콜드 메모리 블록 리스트로부터 상기 제1 리스트에서 상기 제2 리스트 순으로 스왑하기 위한 상기 콜드 메모리 블록을 확인하는 단계를 포함하는 메모리 시스템의 동작방법.
  13. 제4항에 있어서,
    상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도를 관리하는 단계는,
    상기 복수의 메모리 블록들에 수행되는 라이트 동작의 횟수를 카운트하는 단계;
    상기 복수의 메모리 블록들의 라이트 동작 횟수를 세부 구간들로 나누고, 상기 카운트된 횟수를 바탕으로 각각의 구간에 포함되는 메모리 블록의 개수를 카운트하여 분포 테이블로 저장하는 단계;를 포함하는 메모리 시스템의 동작방법.
  14. 제4항에 있어서,
    상기 제1 상태는 상기 검출된 핫 메모리 블록이 스왑되지 않은 이력을 갖는 것을 나타내고, 상기 제2 상태는 상기 검출된 핫 메모리 블록이 스왑된 이력을 갖는 것을 나타내는 메모리 시스템의 동작방법.
  15. 복수의 메모리 블록들 중 라이트 동작이 수행되는 메모리 블록의 라이트 동작 횟수를 확인하는 단계;
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 메모리 블록이 상기 복수의 메모리 블록들의 라이트 동작 횟수에 따른 분포도의 상위 제1 퍼센트에 포함되면, 상기 메모리 블록을 핫 메모리 블록으로 검출하는 단계;
    상기 검출된 핫 메모리 블록의 이력을 확인하는 단계;
    상기 검출된 핫 메모리 블록의 확인된 이력이 제1 상태이면, 상기 검출된 핫 메모리 블록을 콜드 메모리 블록 리스트의 콜드 메모리 블록과 스왑하는 단계; 및
    상기 스왑된 핫 메모리 블록의 이력을 제2 상태로 변경하는 단계;를 포함하는,
    메모리 시스템의 동작방법.
  16. 제15항에 있어서,
    상기 검출된 핫 메모리 블록의 확인된 이력이 상기 제2 상태이면, 상기 검출된 핫 메모리 블록이 상기 분포도의 상위 제1 퍼센트보다 적은 제2 퍼센트에 포함되는지 확인하는 단계; 및
    상기 확인 결과 상기 검출된 핫 메모리 블록이 상기 분포도의 상위 제2 퍼센트에 포함되면, 상기 검출된 핫 메모리 블록을 상기 콜드 메모리 블록과 스왑하는 단계;를 더 포함하는 메모리 시스템 동작방법.
  17. 제15항에 있어서,
    상기 콜드 메모리 블록 리스트의 콜드 메모리 블록들 개수가 기준치 이하이면, 상기 복수의 메모리 블록들 중 콜드 메모리 블록을 검출하고, 검출된 골드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
  18. 제17항에 있어서,
    상기 콜드 메모리 블록을 검출하고, 검출된 골드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계는,
    상기 복수의 메모리 블록들 중 제1 메모리 블록의 라이트 동작 횟수를 확인하는 단계; 및
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트에 포함되면, 상기 제1 메모리 블록을 상기 콜드 메모리 블록 리스트의 제1 리스트에 추가하는 단계;를 포함하는 메모리 시스템의 동작방법.
  19. 제18항에 있어서,
    상기 콜드 메모리 블록을 검출하고, 검출된 콜드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계는,
    상기 확인된 라이트 동작 횟수를 바탕으로 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트 이상이면, 상기 제1 메모리 블록이 상기 분포도의 하위 제1 퍼센트보다 큰 제2 퍼센트에 포함되는지 확인하는 단계; 및
    상기 확인 결과 상기 제1 메모리 블록이 상기 분포도의 하위 제2 퍼센트에 포함되면, 상기 제1 메모리 블록을 상기 콜드 메모리 블록 리스트의 제2 리스트에 추가하는 단계;를 더 포함하는 메모리 시스템의 동작방법.
  20. 제19항에 있어서,
    상기 확인 결과 상기 제1 메모리 블록이 상기 분포도의 하위 제2 퍼센트 이상이면, 상기 복수의 메모리 블록들 중 제2 메모리 블록에 대해 상기 콜드 메모리 블록을 검출하고, 검출된 콜드 메모리 블록을 상기 콜드 메모리 블록 리스트에 추가하는 단계를 반복하는 메모리 시스템의 동작방법.
KR1020160138385A 2016-10-24 2016-10-24 메모리 시스템 및 이를 이용한 웨어-레벨링 방법 KR20180045091A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160138385A KR20180045091A (ko) 2016-10-24 2016-10-24 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
US15/617,109 US10656832B2 (en) 2016-10-24 2017-06-08 Memory system and operation method thereof
CN201710595571.8A CN107977319B (zh) 2016-10-24 2017-07-20 存储系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160138385A KR20180045091A (ko) 2016-10-24 2016-10-24 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Publications (1)

Publication Number Publication Date
KR20180045091A true KR20180045091A (ko) 2018-05-04

Family

ID=61970274

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160138385A KR20180045091A (ko) 2016-10-24 2016-10-24 메모리 시스템 및 이를 이용한 웨어-레벨링 방법

Country Status (3)

Country Link
US (1) US10656832B2 (ko)
KR (1) KR20180045091A (ko)
CN (1) CN107977319B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180039802A (ko) * 2016-10-10 2018-04-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102507646B1 (ko) * 2018-02-01 2023-03-09 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN109002259B (zh) * 2018-06-28 2021-03-09 苏州浪潮智能科技有限公司 一种归置组所属硬盘分配方法、系统、装置及存储介质
CN112470227B (zh) 2018-07-26 2022-11-01 华为技术有限公司 一种数据块处理的方法及控制器
CN110413537B (zh) * 2019-07-25 2021-08-24 杭州电子科技大学 一种面向混合固态硬盘的闪存转换层及转换方法
US11320987B2 (en) * 2019-08-29 2022-05-03 Micron Technology, Inc. Scanning techniques for a media-management operation of a memory sub-system
KR20210092860A (ko) 2020-01-16 2021-07-27 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
CN114860624B (zh) * 2022-05-23 2023-04-28 深圳市芯存科技有限公司 一种基于Nandflash芯片的数据擦写方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US8060718B2 (en) * 2006-06-20 2011-11-15 International Business Machines Updating a memory to maintain even wear
US7865761B1 (en) * 2007-06-28 2011-01-04 Emc Corporation Accessing multiple non-volatile semiconductor memory modules in an uneven manner
US20110246701A1 (en) * 2009-03-24 2011-10-06 Hitachi, Ltd. Storage apparatus and its data control method
US8250282B2 (en) * 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
CN102508785B (zh) * 2011-11-02 2015-08-19 清华大学 一种磨损均衡方法及装置
CN102799534B (zh) * 2012-07-18 2015-11-25 上海宝存信息科技有限公司 基于固态存储介质的存储系统及方法、冷热数据识别方法
US9032137B2 (en) 2012-11-21 2015-05-12 Intel Corporation Flexible wear management for non-volatile memory
CN104156317A (zh) * 2014-08-08 2014-11-19 浪潮(北京)电子信息产业有限公司 一种非易失性闪存的擦写管理方法及系统
CN104317527A (zh) * 2014-09-29 2015-01-28 清华大学深圳研究生院 一种基于块状态表的磨损均衡方法及装置
CN105955672B (zh) * 2016-05-19 2019-12-06 河南中天亿科电子科技有限公司 用于灵活控制损耗均衡的固态存储系统及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180039802A (ko) * 2016-10-10 2018-04-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
US10656832B2 (en) 2020-05-19
US20180113620A1 (en) 2018-04-26
CN107977319A (zh) 2018-05-01
CN107977319B (zh) 2021-06-25

Similar Documents

Publication Publication Date Title
KR20180045091A (ko) 메모리 시스템 및 이를 이용한 웨어-레벨링 방법
CN108182034B (zh) 存储系统及其操作方法
US20200167083A1 (en) Techniques for controlling recycling of blocks of memory
CN107977320B (zh) 存储系统及其损耗均衡方法
USRE47946E1 (en) Method for determining the exhaustion level of semiconductor memory
US7797481B2 (en) Method and apparatus for flash memory wear-leveling using logical groups
US9952766B2 (en) Memory system, including memory device capable of overwrite operation, and method of operating the memory system
US9329797B2 (en) Method and system for adjusting block erase or program parameters based on a predicted erase life
US9423970B2 (en) Method and system for predicting block failure in a non-volatile memory
KR101454817B1 (ko) 반도체 메모리 장치 및 그것의 마모도 관리 방법
CN111164567B (zh) 用于在存储设备中选择功率状态的方法和装置
US20180188980A1 (en) Memory apparatus and methods thereof for write amplification aware wear leveling
US8738876B2 (en) Method for performing block management, and associated memory device and controller thereof
US20150179268A1 (en) Using Different Programming Modes to Store Data to a Memory Cell
KR102639670B1 (ko) 메모리 시스템 및 그의 동작방법
KR20190019429A (ko) 메모리 시스템 및 그의 동작방법
CN107958690B (zh) 数据存储装置及其操作方法
CN105512047A (zh) Flash闪存的写操作、擦除操作方法及装置
KR102634813B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20140088766A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR100700484B1 (ko) 비휘발성 메모리용 데이터 기록 관리 시스템 및 그 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal