KR102258126B1 - 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 - Google Patents

메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR102258126B1
KR102258126B1 KR1020150038404A KR20150038404A KR102258126B1 KR 102258126 B1 KR102258126 B1 KR 102258126B1 KR 1020150038404 A KR1020150038404 A KR 1020150038404A KR 20150038404 A KR20150038404 A KR 20150038404A KR 102258126 B1 KR102258126 B1 KR 102258126B1
Authority
KR
South Korea
Prior art keywords
block
count
leveling
wear
blocks
Prior art date
Application number
KR1020150038404A
Other languages
English (en)
Other versions
KR20160112529A (ko
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 KR1020150038404A priority Critical patent/KR102258126B1/ko
Priority to US15/069,155 priority patent/US9864526B2/en
Publication of KR20160112529A publication Critical patent/KR20160112529A/ko
Application granted granted Critical
Publication of KR102258126B1 publication Critical patent/KR102258126B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]

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)

Abstract

본 발명의 실시 예에 따른 복수의 블록들을 포함하는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 작동 방법은, 상기 복수의 블록들 중에서 제1블록에 대한 작동 카운트를 판단하는 단계와, 판단 결과에 기초하여 상기 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)하는 단계를 포함한다.

Description

메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템{METHOD OF OPERATING A MEMORY CONTROLLER, A DATA STORAGE DEVICE INCLUDING SAME, AND DATA PROCESSING SYSTEM INCLUDING SAME}
본 발명의 개념에 따른 실시 예는 메모리 컨트롤러에 관한 것으로, 특히 불휘발성 메모리에 포함되는 복수의 블록들 중에서 어느 하나의 블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 방지할 수 있는 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템에 관한 것이다.
웨어-레벨링(wear-leveling)이란, 플래시 메모리에 포함된 블록들이 균등하게 사용될 수 있도록 함으로써 상기 플래시 메모리의 수명을 향상하고 성능 저하를 방지하는 기능을 의미한다.
종래의 웨어-레벨링은, 상기 블록들 각각의 이레이즈 카운트를 비교하고, 비교 결과에 따라 이레이즈 카운트가 낮은 블록에 이레이즈 카운트가 높은 블록의 데이터를 매핑하고, 상기 이레이즈 카운트가 높은 블록에 상기 낮은 이레이즈 카운트를 갖는 블록의 데이터를 매핑할 수 있다. 상기 웨어-레벨링 수행 결과에 따라, 상기 가장 낮은 이레이즈 카운트를 갖는 블록에 프로그램/이레이즈 작동이 빈번하게 수행되므로 이레이즈 카운트가 증가할 수 있다. 따라서, 블록들 간의 이레이즈 카운트, 즉 상기 블록들의 사용 빈도(usage)가 균등해질 수 있다.
특정 상황에서 웨어-레벨링이 빈번하게 발생하는 경우, 어느 하나의 블록에 웨어-레벨링이 수행된 블록에 연속적인 웨어-레벨링이 불필요하게 발생할 수 있다. 이미 웨어-레벨링이 수행된 블록은 프로그램/이레이즈 작동이 빈번하게 발생하여 이레이즈 카운트가 증가할 수 있음에도 불구하고, 웨어-레벨링이 연속적으로 발생하기 때문이다. 또한, 상기 연속적인 웨어-레벨링으로 인해 높은 이레이즈 카운트를 갖는 블록에 프로그램/이레이즈 작동이 빈번하게 발생하는 데이터가 매핑될 수 있으므로, 상기 블록들의 사용 빈도 차이가 오히려 증가하는 문제가 발생할 수 있다.
또한, 웨어-레벨링이 지속적으로 수행될 때, 복수의 뱅크들 중 특정 뱅크에 포함된 블록들에 대한 웨어-레벨링이 집중되는 경우, 상기 복수의 뱅크들 간에 사용가능한 블록 수의 불균형이 발생할 수 있다. 상기 불균형은 가비지 콜렉션(garbage collection)의 발생을 초래하고, 상기 가비지 콜렉션이 발생함에 따라 데이터 저장 장치의 성능이 저하될 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 복수의 블록들 중에서 어느 하나의 블록에 불필요한 연속적 웨어-레벨링을 방지할 수 있는 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 복수의 블록들을 포함하는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 작동 방법은, 상기 복수의 블록들 중에서 제1블록에 대한 작동 카운트를 판단하는 단계와, 판단 결과에 기초하여 상기 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)하는 단계를 포함한다.
상기 작동 카운트는 상기 제1블록에 대한 이레이즈 횟수에 관련된 제1카운트와, 상기 제1블록에 대한 웨어-레벨링에 관련된 제2카운트를 포함한다.
상기 판단하는 단계는, 상기 제2카운트와 기준값을 비교하고, 상기 회피하는 단계는, 상기 제2카운트가 상기 기준값이 될 때까지, 상기 제1블록에 대한 웨어-레벨링을 금지한다.
상기 메모리 컨트롤러의 작동 방법은, 상기 제1블록에 대한 이레이즈 작동이 수행될 때마다, 상기 제1카운트를 증가시키는 단계와, 상기 제1블록에 대한 상기 웨어-레벨링이 수행될 때마다, 상기 제2카운트를 변경하는 단계를 더 포함한다.
상기 제2카운트를 변경하는 단계는, 상기 제2카운트를 기준 카운트만큼 증가시킨다.
상기 메모리 컨트롤러의 작동 방법은, 상기 제1블록에 대한 상기 이레이즈 작동이 수행될 때마다, 상기 제2카운트를 변경하는 단계를 더 포함한다.
상기 제1블록에 대한 상기 이레이즈 작동이 수행될 때마다, 상기 제2카운트를 변경하는 단계는, 상기 이레이즈 작동이 수행될 때마다, 상기 제2카운트를 감소시킨다.
상기 메모리 컨트롤러의 작동 방법은, 상기 복수의 블록들 중에서, 작동 카운트가 최소인 블록을 선택하는 단계와, 선택된 블록에 대한 웨어-레벨링의 수행을 제어하는 단계를 더 포함한다.
상기 작동 카운트는 상기 복수의 블록들 각각의 이레이즈 횟수에 관련된 제1카운트와, 상기 복수의 블록들 각각의 웨어-레벨링에 관련된 제2카운트의 합이다.
상기 연속적인 웨어-레벨링을 회피하는 단계는 FTL(flash translation layer)에 의해 수행된다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 복수의 블록들을 포함하는 불휘발성 메모리 장치와, 상기 복수의 블록들 각각에 대한 작동 카운트를 저장하는 휘발성 메모리와, 상기 불휘발성 메모리 장치와 상기 휘발성 메모리에 접속된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 복수의 블록들 중에서 제1블록에 대한 작동 카운트를 판단하고, 판단 결과에 기초하여 상기 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)한다.
상기 불휘발성 메모리 장치는 3차원 메모리 셀 어레이를 포함한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은, 호스트, 및 상기 호스트와 데이터를 송수신하는 데이터 저장 장치를 포함하고, 상기 데이터 저장 장치는, 복수의 블록들을 포함하는 불휘발성 메모리 장치와, 상기 복수의 블록들 각각에 대한 작동 카운트를 저장하는 휘발성 메모리와, 상기 불휘발성 메모리 장치와 상기 휘발성 메모리에 접속된 메모리 컨트롤러를 포함하고, 상기 메모리 컨트롤러는, 상기 복수의 블록들 중에서 제1블록에 대한 작동 카운트를 판단하고, 판단 결과에 기초하여 상기 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)하고, 상기 제1블록에 대한 상기 작동 카운트는, 상기 제1블록에 대한 이레이즈 횟수에 관련된 제1카운트와, 상기 제1블록에 대한 웨어-레벨링에 관련된 제2카운트를 포함한다.
상기 호스트는 집적 회로, 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서(application processor(AP)), 및 모바일 AP 중에서 어느 하나이다.
본 발명의 실시 예에 따른 메모리 컨트롤러는 데이터 저장 장치의 불휘발성메모리에 포함된 블록들 각각의 웨어-레벨링에 관련된 카운트를 이용하여, 어느 하나의 블록에 대한 불필요한 연속적 웨어-레벨링을 방지함으로써 상기 데이터 저장 장치의 성능을 향상할 수 있는 효과가 있다.
또한, 본 발명의 실시 예에 따른 메모리 컨트롤러는 상기 불휘발성 메모리에 포함된 복수의 플레인들에 대해, 웨어-레벨링이 수행될 블록을 포함하는 플레인을 균등하게 선택함으로써, 불필요한 가비지 컬렉션의 발생을 방지하여 상기 데이터 저장 장치의 성능을 향상할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 2는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다.
도 3은 도 1과 도 2에 도시된 불휘발성 메모리의 블록들에 대한 웨어-레벨링 작동들을 나타내는 개념도이다.
도 4는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록을 선택하는 작동에 대한 일 실시 예이다.
도 5는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록을 선택하는 작동에 대한 일 실시 예이다.
도 6은 도 4에 도시된 블록의 작동 카운트가 변경되는 작동에 대한 실시 예이다.
도 7은 도 4에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 8은 도 5에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 9는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록이 포함된 플레인을 선택하는 작동에 대한 일 실시 예이다.
도 10은 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록이 포함된 플레인을 선택하는 작동에 대한 일 실시 예이다.
도 11은 도 9에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 12는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 13은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 14는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100-1)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 명령 및/또는 데이터를 주거나 받을 수 있는 데이터 저장 장치(300-1)를 포함할 수 있다.
실시 예들에 따라, 데이터 처리 시스템(100-1)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터, SAN(storage area network), NAS(Network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있는 데이터 처리 시스템을 의미할 수 있으나 데이터 처리 시스템(100-1)이 이에 한정되는 것은 아니다.
상기 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)), PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface), NAND-타입 플래시 메모리 인터페이스, 또는 멀티미디어 카드 (multimedia card(MMC)) 인터페이스로 구현될 수 있으나 인터페이스(110)가 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는 인터페이스(110)를 통해 데이터 저장 장치(300-1)의 데이터 처리 작동(예컨대, 라이트 작동(또는 프로그램 작동) 또는 리드 작동)을 제어할 수 있다. 예컨대, 호스트(200)는 호스트 컨트롤러를 의미할 수 있다.
CPU(220)와 제1인터페이스(230)는 버스 구조(210)를 통해 명령 및/또는 데이터를 서로 주거나 받을 수 있다. 도 1에 도시된 호스트(200)의 블록도는 예시적으로 도시된 것으로서, 본 발명의 기술적 사상이 도 1에 도시된 블록도에 한정되는 것은 아니다.
실시 예에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 또는 데이터베이스 서버로 구현될 수 있으나 호스트(200)가 이에 한정되는 것은 아니다.
예컨대, 버스 구조(210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus) 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(220)는 데이터 저장 장치(300-1)의 라이트 작동(write operation)을 제어할 수 있는 라이트 요청 또는 데이터 저장 장치(300-1)의 리드 작동(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 요청 (request)은 명령(command)을 의미할 수 있다.
제1인터페이스(230)는 데이터 저장 장치(300-1)로 전송될 명령 및/또는 데이터의 포맷(format)을 변경하고, 변경된 명령 및/또는 변경된 데이터를 인터페이스 (110)를 통해 데이터 저장 장치(300-1)로 전송할 수 있다. 또한, 제1인터페이스 (230)는 데이터 저장 장치(300-1)로부터 전송된 응답(response) 및/또는 데이터의 포맷을 변경하고, 변경된 응답 및/또는 변경된 데이터를 버스 구조(210)를 통해 CPU(220)로 전송할 수 있다. 실시 예에 따라, 제1인터페이스(230)는 명령 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제1인터페이스(230)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게 구현될 수 있다.
데이터 저장 장치(300-1)는 메인 컨트롤러(310), 외부 버퍼(360), 전력 관리 IC(370), 및 불휘발성 메모리들(400)을 포함할 수 있다.
데이터 저장 장치(300-1)는 플래시 메모리-기반 메모리 장치로 구현될 수 있으나 데이터 저장 장치(300-1)가 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300-1)는 SSD(solid-state drive or solid-state disk), 임베디드 SSD (embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드(managed) NAND로 구현될 수 있으나 데이터 저장 장치(300-1)가 이에 한정되는 것은 아니다. 플래시-기반 메모리 장치는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다.
메인 컨트롤러(310)는 호스트(200), 외부 버퍼(360), 및 불휘발성 메모리들 (400) 사이에서 주거나 받는 명령 및/또는 데이터를 제어할 수 있다. 실시 예들에 따라, 메인 컨트롤러(310)는 IC 또는 SoC로 구현될 수 있다.
메인 컨트롤러(310)는 버스 구조(311), 내부 메모리(315), 제2인터페이스 (320), 적어도 하나의 CPU(330 및/또는 331), 버퍼 컨트롤러(340), 및 메모리 컨트롤러(350)를 포함할 수 있다.
버스 구조(311)는 AMBA, AHB, APB, AXI, ASB, 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
내부 메모리(315)는 메인 컨트롤러(310)의 작동에 필요한 데이터 또는 메인 컨트롤러(310)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다. 실시 예들에 따라, 내부 메모리(315)는 RAM(ramdom access memory), DRAM(dynamic RAM), SRAM(static RAM), 버퍼 (buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory(TCM))으로 구현될 수 있으나 내부 메모리(315)가 이에 한정되는 것은 아니다.
내부 메모리(315)는 불휘발성 메모리들(400) 중에서 적어도 하나로부터 로드되는 플래시 변환 레이어(flash translation layer(FTL); 316)를 저장할 수 있다. FTL(316)은 호스트(200)로부터 출력된 논리 주소(logical address)를 불휘발성 메모리들(400)의 물리 주소(physical address)로 매핑하는 주소 매핑(address mapping), 웨어-레벨링(wear-leveling), 및/또는 가비지 콜렉션(garbage collection)을 수행하기 위한 소프트웨어 계층을 의미할 수 있다.
제2인터페이스(320)는 호스트(200)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 응답 및/또는 변경된 데이터를 인터페이스(110)를 통해 호스트 (200)로 전송할 수 있다. 또한, 제2인터페이스(320)는 호스트(200)로부터 전송된 명령 및/또는 데이터를 수신하고, 수신된 명령 및/또는 데이터의 포맷을 변경하고, 변경된 명령 및/또는 변경된 데이터를 적어도 하나의 CPU(330 및/또는 331) 및/또는 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예에 따라, 제2인터페이스(320)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다.
제2인터페이스(320)의 구조와 작동은 인터페이스(110)의 구조와 작동에 적합하게 구현될 수 있다. 예컨대, 제2인터페이스(320)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 제2인터페이스(320)가 이에 한정되는 것은 아니다.
하나 또는 그 이상의 CPU(330 및/또는 331)는, 버스 구조(311)를 통해, 내부 메모리(315), 제2인터페이스(320), 버퍼 컨트롤러(340), 및 메모리 컨트롤러(350)를 제어할 수 있다. 각 CPU(330과 331)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 실시 예에 따라, 하나 또는 그 이상의 CPU(330 및/또는 331)는 PMIC(370)를 제어할 수 있다.
예컨대, 제1CPU(330)는 제2인터페이스(320)를 통해 호스트(200)와의 상호 작동을 제어할 수 있고, 제2CPU(331)는 메모리 컨트롤러(350)를 통해 불휘발성 메모리들(400)과의 상호 작동을 제어할 수 있다. 실시 예에 따라, 제1CPU(330)와 제2CPU(331)는 멀티-CPU를 구성할 수 있다. 실시 예에 따라, 제1CPU(330)는 제2CPU(331)를 제어할 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(340)는, 제1CPU(330) 또는 제2CPU(331)의 제어에 따라, 외부 버퍼(360)에 데이터를 라이트하거나 외부 버퍼(360)에 저장된 데이터를 리드할 수 있다. 버퍼 컨트롤러(340)는 외부 버퍼(360)에 대한 라이트 작동과 리드 작동을 제어할 수 있는 컨트롤러 또는 버퍼 매니저(buffer manager)로 불릴 수 있다.
예컨대, 호스트(200)로부터 전송된 라이트 명령을 처리할 때, 버퍼 컨트롤러 (340)는, 상기 라이트 명령에 따라 호스트(200)로부터 전송되는 라이트 데이터를 외부 버퍼(360)에 임시로 저장하고, 임시로 저장된 라이트 데이터를 메모리 컨트롤러(350)를 통해 불휘발성 메모리들(400)로 전송할 수 있다.
버퍼 컨트롤러(340)는 내부 버퍼(341)를 포함할 수 있다. 버퍼 컨트롤러 (340)는, 호스트(200)로부터 전송된 리드 명령에 따라 불휘발성 메모리들(400)로부터 리드된 리드 데이터를 내부 버퍼(341)에 임시로 저장하고, 임시 저장된 리드 데이터를 제2인터페이스(320)를 통해 호스트(200)로 전송할 수 있다. 내부 버퍼(341)는 SRAM과 같은 휘발성 메모리로 구현될 수 있으나 이에 한정되는 것은 아니다.
메모리 컨트롤러(350)는, 제1CPU(330) 또는 제2CPU(331)의 제어에 따라, 불휘발성 메모리들(400)에 대한 데이터 처리 작동들(예컨대, 라이트 작동들 또는 리드 작동들)을 제어할 수 있다. 예컨대, 불휘발성 메모리들(400)이 플래시 메모리로 구현될 때, 메모리 컨트롤러(350)는 플래시 메모리 컨트롤러의 기능을 수행할 수 있다. 메모리 컨트롤러(350)와 불휘발성 메모리들(400)은 채널들을 통해 제어 신호 및/또는 데이터를 주거나 받을 수 있다.
메모리 컨트롤러(350)는, 불휘발성 메모리들(400) 각각에 포함된 복수의 블록들 중에서 어느 하나의 블록에 대한 웨어-레벨링의 수행을 제어할 수 있다. 웨어-레벨링이 수행되면, FTL(316)은 상기 어느 하나의 블록의 물리 주소에 핫 데이터 (hot data)와 관련된 논리 주소를 매핑할 수 있다. 상기 핫 데이터는 호스트(200)에 의해 빈번하게 업데이트(예컨대, 프로그램 및/또는 이레이즈되는)되는 데이터를 의미할 수 있다. 예컨대, 상기 웨어-레벨링은 FTL(316)에 의해 수행될 수 있다.
실시 예들에 따라 메모리 컨트롤러(350)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스를 지원할 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(340)는 외부 버퍼(360)에 데이터를 라이트하거나 외부 버퍼(360)로부터 데이터를 리드할 수 있다. 실시 예들에 따라, 외부 버퍼(360)는 RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
외부 버퍼(360)는 불휘발성 메모리들(400)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑 테이블과, 불휘발성 메모리들(400)에 포함된 복수의 블록들 각각에 대한 작동 카운트를 저장할 수 있다. 상기 매핑 테이블은 FTL(316)에 의해 업데이트될 수 있다. 상기 작동 카운트는 해당 블록에 대한 이레이즈 횟수에 관련된 제1카운트와, 상기 해당 블록에 대한 웨어-레벨링 작동에 관련된 제2카운트를 포함할 수 있다.
외부 버퍼(360)는 불휘발성 메모리들(400)로 전송될 라이트 데이터를 임시로 저장하는 캐시(cache)의 기능을 수행할 수도 있다.
실시 예에 따라, 외부 버퍼(360)는 불휘발성 메모리들(400) 각각에 포함된 복수의 플레인들(plains) 각각에 대한 플레인 선택 카운트를 저장할 수 있다. 상기 플레인 선택 카운트는 해당 플레인에 포함된 블록들 각각이 웨어-레벨링이 수행될 블록으로 선택된 횟수와 관련될 수 있다. 외부 버퍼(360)는 상기 복수의 플레인들 각각에 대한 최소 이레이즈 카운트를 저장할 수 있다. 상기 최소 이레이즈 카운트는, 해당 플레인에 포함된 블록들에 대한 이레이즈 카운트들 중에서 가장 작은 이레이즈 카운트와 관련될 수 있다.
실시 예에 따라, 메인 컨트롤러(310)와 외부 버퍼(360) 각각이 서로 다른 반도체 칩으로 구현될 때, 메인 컨트롤러(310)와 외부 버퍼(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package (MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 외부 버퍼(360)를 포함하는 제1칩은 메인 컨트롤러(310)를 포함하는 제2칩의 위(above)에 스택 볼들(stack balls)을 통해 적층될 수 있다.
PMIC(370)는 메인 컨트롤러(310), 외부 버퍼(360), 및/또는 불휘발성 메모리들(400)로 공급되는 작동 전압들을 제어할 수 있다.
불휘발성 메모리들(400)은 복수의 뱅크들(banks)을 포함할 수 있다. 상기 복수의 뱅크들 각각은 복수의 플레인들(planes)을 포함하고, 상기 복수의 플레인들 각각은 복수의 블록들(blocks)을 포함할 수 있다.
도 2는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 개략적인 블록도를 나타낸다. 도 1과 도 2를 참조하면, 데이터 처리 시스템(100-2)은 인터페이스 (110)를 통해 접속된 호스트(200)와 데이터 저장 장치(300-2)를 포함할 수 있다. 도 1의 데이터 저장 장치(300-1)와 달리 도 2의 데이터 저장 장치(300-2)는 외부 버퍼(360)를 포함하지 않는다. 도 1의 메인 컨트롤러(310)와 도 2의 메인 컨트롤러(310)는 실질적으로 동일 또는 유사하게 작동할 수 있다. 예컨대, 데이터 저장 장치(300-2)는 DRAM이 없는(DRAM-less) 데이터 저장 장치, 예컨대 DRAM이 없는 SSD를 의미할 수 있다.
데이터 처리 시스템(100-2)은 모바일 컴퓨팅 장치로 구현될 수 있다. 상기 모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰, 태블릿 PC, PDA, EDA, 디지털 스틸 카메라, 디지털 비디오 카메라, PMP, PND, 휴대용 게임 콘솔, 모바일 인터넷 장치, 웨어러블 컴퓨터, IoT 장치, IoE 장치, 또는 e-북으로 구현될 수 있다.
도 3은 도 1과 도 2에 도시된 불휘발성 메모리의 블록들에 대한 웨어-레벨링 작동들을 나타내는 개념도이다.
도 3에서는 불휘발성 메모리들(400) 각각에 포함된 하나의 뱅크(410)만을 도시하였으나, 불휘발성 메모리들(400) 각각은 복수의 뱅크들을 포함할 수 있고, 상기 복수의 뱅크들 각각의 구조와 작동은 실질적으로 동일 또는 유사하므로, 뱅크 (410)의 작동이 대표적으로 설명된다.
도 1부터 도 3을 참조하면, 뱅크(410)는 복수의 플레인들(PL1~PLm; m은 3 이상의 자연수)을 포함할 수 있다. 복수의 플레인들(PL1~PLm) 각각은 복수의 블록들을 포함할 수 있다.
메모리 컨트롤러(350)는 복수의 블록들(BL1~BLn) 중에서 어느 하나의 블록에 대한 웨어-레벨링을 제어할 수 있다. 메모리 컨트롤러(350)는, 복수의 블록들 (BL1~BLn) 각각에 대한 작동 카운트를 판단하고, 판단의 결과에 따라 복수의 블록들(BL1~BLn) 중에서 어느 하나의 블록을 선택할 수 있다. 상기 작동 카운트는 해당 블록에 대한 이레이즈 횟수에 관련된 제1카운트와, 상기 해당 블록에 대한 웨어-레벨링에 관련된 제2카운트를 포함할 수 있다.
메모리 컨트롤러(350)가 상기 작동 카운트에 기초하여 복수의 블록들 (BL1~BLn) 중에서 어느 하나의 블록을 선택하는 작동은 도 4와 도 5를 참조하여 상세히 설명될 것이다.
예컨대, 제1시점(T1)에서, 메모리 컨트롤러(350)는 제1블록(BL1)에 대한 제1웨어-레벨링(W-LV1)의 수행을 제어할 수 있다. 제1블록(BL1)에 대한 제1웨어-레벨링(W-LV1)이 수행되면, 제1블록(BL1)은 FTL(316)에 의해 핫 데이터를 저장하는 블록으로 매핑되므로, 제1블록(BL1)의 프로그램 작동 횟수와 이레이즈 작동 횟수는 증가할 수 있다. 따라서, 제1블록(BL1)의 제1카운트는 증가할 수 있다.
제1시점(T1)의 다음 시점, 즉 제2시점(T2)에서, 메모리 컨트롤러(350)는 제1블록(BL1)에 대한 제1카운트가 가장 낮더라도, 제1블록(BL1)이 아닌 제2블록(BL2)을 제2웨어-레벨링(W-LV2)을 위한 블록으로 선택할 수 있다. 제1블록(BL1)에 대한 제1웨어-레벨링(W-LV1)이 수행됨에 따라, 제1블록(BL1)은 핫 데이터를 저장하는 블록으로 매핑되고, 제1블록(BL1)의 프로그램 작동 횟수와 이레이즈 작동 횟수가 증가함에 따라 제1블록(BL1)에 대한 제1카운트는 충분히 증가할 수 있다.
제2시점(T2)의 다음 시점, 즉 제3시점(T3)에서, 메모리 컨트롤러(350)는 제2블록(BL2)에 대한 제1카운트가 가장 낮더라도, 제2블록(BL2)이 아닌 제3블록(BL3)을 제3웨어-레벨링(W-LV3)을 위한 블록으로 선택할 수 있다. 제2블록(BL2)에 대한 제2웨어-레벨링(W-LV2)이 수행됨에 따라, 제2블록(BL2)은 핫 데이터를 저장하는 블록으로 매핑되고 제2블록(BL2)의 프로그램 작동 횟수와 이레이즈 작동 횟수가 증가함에 따라 제2블록(BL2)에 대한 제1카운트는 충분히 증가할 수 있다.
도 4는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록을 선택하는 작동에 대한 일 실시 예이다.
비록, 도 4와 도 5에는 임의의 숫자들이 기재되었으나 본 발명의 기술적 사상이 상기 숫자들에 한정되는 것은 아니다.
도 4와 도 5에 도시된 각 웨어-레벨링(W-LV1, W-LV2, 및 W-LV3)은 연속적일 수 있다. 즉, 제1웨어-레벨링(W-LV1)과 제2웨어-레벨링(W-LV2) 사이에는 웨어-레벨링이 수행되지 않고, 제2웨어-레벨링(W-LV2)과 제3웨어-레벨링(W-LV3) 사이에는 웨어-레벨링이 수행되지 않는다.
도 1, 도 2, 및 도 4를 참조하면, 제1시점(T1)에서 메모리 컨트롤러(350)는 블록들(BL1~BLn) 각각에 대한 작동 카운트를 판단할 수 있다. 메모리 컨트롤러 (350)는 상기 작동 카운트에 포함된 제2카운트(OC2)가 기준값(예컨대, '0')인 블록들 중에서, 제1카운트(OC1)가 가장 작은 블록을 제1웨어-레벨링(W-LV1)이 수행될 블록으로 선택하고, 선택된 블록에 대한 제1웨어-레벨링(W-LV1)의 수행을 제어할 수 있다.
예컨대, 제1시점(T1)에서 제2카운트(OC2)가 상기 기준값인 블록들(BL1, BL3, 및 BLn) 중에서, 제1블록(BL1)의 제1카운트는 143이고, 제3블록(BL3)의 제1카운트는 4이고, 제n블록(BLn)의 제1카운트는 121이므로, 메모리 컨트롤러(350)는 제3블록(BL3)에 대한 제1웨어-레벨링(W-LV1)의 수행을 제어할 수 있다.
제1웨어-레벨링(W-LV1)이 수행되는 블록의 제2카운트(OC2)는 변경될 수 있다. 예컨대, 제3블록(BL3)에 제1웨어-레벨링(W-LV1)이 수행될 때, 제3블록(BL3)의 제2카운트(OC2)는 기준 카운트만큼 증가할 수 있다. 본 명세서에서는 상기 기준 카운트를 20으로 가정하였으나, 상기 기준 카운트의 값은 변경될 수 있다.
제1시점(T1)과 제2시점(T2) 사이에서, 블록들(BL1~BLn) 각각에 대한 이레이즈 작동이 수행될 수 있다. 상기 이레이즈 작동이 수행되는 블록의 제1카운트(OC1)는 변경될 수 있다. 본 명세서에서는 상기 이레이즈 작동이 수행될 때마다, 제1카운트(OC1)가 1씩 증가하는 실시 예가 도시되어 있으나, 실시 예에 따라 제1카운트(OC1)는 다양하게 변경될 수 있다.
실시 예에 따라, 상기 이레이즈 작동이 수행되는 블록의 제2카운트(OC2)가 변경될 수 있다. 본 명세서에서는 상기 이레이즈 작동이 수행될 때마다, 제2카운트 (OC2)가 1씩 감소하는 실시 예가 도시되어 있으나, 이에 한정되는 것은 아니다.
실시 예에 따라, 제2카운트(OC2)가 상기 기준값인 블록에 상기 이레이즈 작동이 수행될 때, 제2카운트(OC2)는 변경되지 않을 수 있다.
제1카운트(OC1)와 제2카운트(OC2) 각각의 변경에 대해서는 도 6을 참조하여 상세히 설명될 것이다.
도 5는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록을 선택하는 작동에 대한 일 실시 예이다.
도 5를 참조하면, 제2시점(T2)과 제3시점(T3)에서와 같이, 블록들(BL1~BLn) 중 기준값과 동일한 제2카운트를 갖는 블록이 존재하지 않을 수 있다. 이 경우, 메모리 컨트롤러(350)는 제1카운트와 제2카운트의 합이 최소인 블록을 선택하고, 선택된 블록에 대한 웨어-레벨링의 수행을 제어할 수 있다.
예컨대, 제2시점(T2)에서 제1카운트(OC1)와 제2카운트(OC2)의 합이 최소인 블록이 제4블록(BL4)인 경우, 메모리 컨트롤러(350)는 제4블록(BL4)에 대해 제2웨어-레벨링(W-LV2)의 수행을 제어할 수 있다.
제4블록(BL4)에 대해 제2웨어-레벨링(W-LV2)이 수행될 때, 제4블록(BL4)의 제2카운트는 기준 카운트만큼 증가할 수 있다. 예컨대, 제2웨어-레벨링(W-LV2)이 수행되기 전의 제4블록(BL4)의 제2카운트가 2이고, 상기 기준 카운트가 20일 때, 제4블록의 제2카운트는 22로 증가할 수 있다.
제3시점(T3)에서, 제1카운트(OC1)와 제2카운트(OC2)의 합이 최소인 블록이 제3블록(BL3)인 경우, 메모리 컨트롤러(350)는 제3블록(BL3)에 대해 제3웨어-레벨링(W-LV3)의 수행을 제어할 수 있다.
제3블록(BL3)에 대해 제3웨어-레벨링(W-LV3)이 수행될 때, 제3블록(BL3)의 제2카운트는 3에서 23으로 증가할 수 있다.
도 5에서는 상기 기준값과 동일한 제2카운트(OC2)를 갖는 블록이 없는 경우에만 제1카운트(OC1)와 제2카운트(OC2)의 합을 이용하여 웨어-레벨링이 수행될 블록을 선택하는 실시 예가 도시되어 있으나, 실시 예에 따라 상기 기준값과 관계없이 제1카운트(OC1)와 제2카운트(OC2)의 합을 이용하여 상기 웨어-레벨링이 수행될 블록을 선택할 수 있다.
도 6은 도 4에 도시된 블록의 작동 카운트가 변경되는 작동에 대한 실시 예이다.
도 6에는 설명의 편의를 위해 제3블록(BL3)의 작동 카운트가 변경되는 실시 예만을 도시하였으나, 제3블록(BL3)의 상기 작동 카운트가 변경되는 실시 예는 복수의 블록들(BL1~BLn) 각각에 대해서도 동일하게 적용될 수 있다.
도 4와 도 6을 참조하면, 제1시점(T1)에서 제3블록(BL3)에 대해 제1웨어-레벨링(W-LV1)이 수행되고, 제3시점(T3)에서 제3블록(BL3)에 대해 제3웨어-레벨링(W-LV3)이 수행되면, 제2카운트(OC2)는 기준 카운트(예컨대, 20)만큼 증가할 수 있다.
제3블록(BL3)에 대한 이레이즈 작동이 수행될 때마다, 제3블록(BL3)의 제1카운트(OC1)는 변경될 수 있다. 예컨대, 상기 이레이즈 작동이 수행될 때마다, 제3블록(BL3)의 제1카운트(OC1)는 1씩 증가할 수 있다.
실시 예에 따라, 상기 이레이즈 작동이 수행될 때마다, 제3블록(BL3)의 제2카운트(OC2)가 변경될 수 있다. 예컨대, 상기 이레이즈 작동이 수행될 때마다, 제2카운트(OC2)는 1씩 감소할 수 있으나, 이에 한정되는 것은 아니다.
실시 예에 따라, 제3블록(BL3)의 제2카운트(OC2)가 기준 카운트(예컨대, 0)와 동일한 경우에는, 상기 이레이즈 작동이 수행되더라도 제2카운트(OC2)는 변경되지 않을 수 있다.
도 7은 도 4에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 1, 도 2, 도 4, 도 6, 및 도 7을 참조하면, 메모리 컨트롤러(350)는 불휘발성 메모리(400)에 포함된 복수의 블록들(BL1~BLn) 중에서 어느 하나의 블록(예컨대, 제3블록(BL3))에 대한 작동 카운트를 판단할 수 있다(S100). 상기 작동 카운트는 제3블록(BL3)에 대한 이레이즈 작동 횟수에 관련된 제1카운트(OC1)와, 제3블록(BL3)에 대한 웨어-레벨링에 관련된 제2카운트(OC2)를 포함할 수 있다.
메모리 컨트롤러(350)는 판단 결과에 기초하여 상기 어느 하나의 블록에 대한 연속적인 웨어-레벨링을 회피할 수 있다(S120).
제1시점(T1)에서 제3블록(BL3)에 대해 제1웨어-레벨링(W-LV1)이 수행되고, 제2시점(T2)에서 제1웨어-레벨링(W-LV1)과 연속적인 제2웨어-레벨링(W-LV2)이 수행될 때, 메모리 컨트롤러(350)는 제3블록(BL3)의 제1카운트(OC1)가 가장 작은 경우에도, 제3블록(BL3)의 제2카운트(OC2)가 기준값과 동일하지 않은 경우에는 메모리 컨트롤러(350)는 제3블록(BL3)이 아닌 다른 블록(예컨대, 제4블록(BL4))에 대해 제2웨어-레벨링(W-LV2)의 수행을 제어할 수 있다.
즉, 메모리 컨트롤러(350)는 제2카운트(OC2)가 상기 기준값과 동일한 블록들 중에서 제1카운트(OC1)가 가장 작은 블록을 웨어-레벨링이 수행될 블록으로 선택할 수 있다.
메모리 컨트롤러(350)는 상기 어느 하나의 블록에 대한 이레이즈 작동이 수행될 때마다, 제1카운트(OC1)를 변경시킬 수 있다(S140). 실시 예에 따라 상기 이레이즈 작동이 수행될 때마다 제2카운트(OC2)를 변경시킬 수 있다.
예컨대, 상기 이레이즈 작동이 수행될 때마다, 제1카운트(OC1)는 증가할 수 있고, 제2카운트(OC2)는 감소할 수 있다.
실시 예에 따라, 제2카운트(OC2)와 상기 기준값이 동일한 경우, 상기 이레이즈 작동이 수행되더라도 제2카운트(OC2)는 변경되지 않을 수 있다.
메모리 컨트롤러(350)는 상기 어느 하나의 블록에 대한 웨어-레벨링이 수행될 때마다, 제2카운트(OC2)를 변경시킬 수 있다(S160). 예컨대, 상기 웨어-레벨링이 수행될 때마다, 제2카운트(OC2)는 기준 카운트만큼 증가될 수 있다.
즉, 웨어-레벨링이 수행된 블록의 제2카운트(OC2)는 기준 카운트만큼 증가되고, 메모리 컨트롤러(350)는 상기 웨어-레벨링이 수행된 블록의 제2카운트(OC2)와 상기 기준값이 동일해지기 전까지는, 상기 웨어-레벨링이 수행된 블록에 대한 다음 웨어-레벨링의 수행을 금지하므로, 상기 블록에 대한 연속적인 웨어-레벨링의 수행을 회피할 수 있다.
도 8은 도 5에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 1, 도 2, 도 4부터 도 8을 참조하면, 메모리 컨트롤러(350)는 복수의 블록들(BL1~BLn) 각각에 대한 작동 카운트를 판단하고, 가장 작은 작동 카운트를 갖는 블록을 웨어-레벨링이 수행될 블록으로 선택하고(S180), 선택된 블록에 대한 웨어-레벨링의 수행을 제어할 수 있다(S200). 실시 예에 따라, 상기 작동 카운트는 제1카운트(OC1)와 제2카운트(OC2)의 합일 수 있다.
예컨대, 도 5를 참조하면, 제2시점(T2)에서 제2카운트(OC2)가 상기 기준값과 동일한 블록이 없으므로, 메모리 컨트롤러(350)는 제1카운트(OC1)와 제2카운트(OC2)의 합이 최소인 제4블록(BL4)에 대한 제2웨어-레벨링(W-LV2)의 수행을 제어할 수 있다.
실시 예에 따라, 제2카운트(OC2)의 값과 관계없이, 메모리 컨트롤러(350)는 제1카운트(OC1)와 제2카운트(OC2)의 합이 최소인 블록에 대한 웨어-레벨링의 수행을 제어할 수 있다.
도 9는 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록이 포함된 플레인을 선택하는 작동에 대한 일 실시 예이다.
도 9와 도 10에 도시된 실시 예는 설명의 편의를 위해 임의의 수치들을 기재한 것으로서, 본 발명의 기술적 사상이 이에 한정되는 것은 아니다.
도 9와 도 10에 도시된 각각의 웨어-레벨링(W-LV1, W-LV2, 및 W-LV3)은 연속적이다. 즉, 제1웨어-레벨링(W-LV1)과 제2웨어-레벨링(W-LV2) 사이에는 웨어-레벨링이 수행되지 않고, 제2웨어-레벨링(W-LV2)과 제3웨어-레벨링(W-LV3) 사이에는 웨어-레벨링이 수행되지 않는다.
도 1부터 도 3, 및 도 9를 참조하면, 메모리 컨트롤러(350)는 복수의 플레인들(PL1~PLm) 중에서 플레인 선택 카운트(PSC)가 최소인 플레인을 선택하고, 선택된 플레인에 포함된 블록들 중에서 이레이즈 카운트가 최소인 블록에 대한 웨어-레벨링의 수행을 제어할 수 있다.
제1시점(T1)에서, 메모리 컨트롤러(350)는 플레인 선택 카운트(PSC)가 최소인 제4플레인(PL4)을 선택하고, 제4플레인(PL4)에 포함된 블록들 중에서 최소 이레이즈 카운트(M_EC)에 해당하는 블록에 대한 제1웨어-레벨링(W-LV1)의 수행을 제어할 수 있다.
실시 예에 따라, 데이터 저장 장치(300-1 또는 300-2)는 복수의 플레인들(PL1~PLm) 각각마다 최소 이레이즈 카운트(M_EC)를 갖는 블록에 대한 정보를 저장할 수 있다.
플레인 선택 카운트(PSC)와 최소 이레이즈 카운트(M_EC)는 데이터 저장 장치(300-1)의 외부 버퍼(360)에 저장되거나, 데이터 저장 장치(300-2)의 내부 버퍼(341)에 저장될 수 있다.
제1웨어-레벨링(W-LV1)이 수행되면, 제4플레인(PL4)의 플레인 선택 카운트(PSC)는 변경될 수 있다. 예컨대, 플레인 선택 카운트(PSC)는 1만큼 증가할 수 있으나, 이에 한정되는 것은 아니다.
제2시점(T2)에서, 메모리 컨트롤러(350)는 가장 작은 플레인 선택 카운트(PSC)를 갖는 제2플레인(PL2)과 제4플레인(PL4) 중에서, 최소 이레이즈 카운트(M_EC)가 작은 제2플레인(PL2)을 선택하고, 선택된 제2플레인(PL2)에 포함된 블록들 중에서 최소 이레이즈 카운트(M_EC)에 해당하는 블록에 대한 제2웨어-레벨링의 수행을 제어할 수 있다.
제3시점(T3)에서, 메모리 컨트롤러(350)는 가장 작은 플레인 선택 카운트(PSC)를 갖는 제4플레인(PL4)을 선택하고, 선택된 제4플레인(PL4)에 포함된 블록들 중에서 최소 이레이즈 카운트(M_EC)에 해당하는 블록에 대한 제3웨어-레벨링의 수행을 제어할 수 있다.
즉, 본 발명의 실시 예에 따른 메모리 컨트롤러는 플레인들 각각의 웨어-레벨링 선택 횟수에 대한 정보를 이용하여, 웨어-레벨링 수행시 상기 플레인들이 균등하게 선택되도록 할 수 있다. 따라서, 상기 플레인들 각각의 유효 블록 수의 불균형을 감소함으로써 가비지 콜렉션의 발생을 감소할 수 있다.
도 10은 도 1과 도 2에 도시된 메모리 컨트롤러가 웨어-레벨링이 수행될 블록이 포함된 플레인을 선택하는 작동에 대한 일 실시 예이다.
도 9와 도 10을 참조하면, 도 10의 제1웨어-레벨링(W-LV1)과 제3웨어-레벨링(W-LV3)이 수행될 블록들 각각을 포함하는 플레인들 각각을 선택하는 작동은 도 9에서 상술한 작동과 실질적으로 동일하다.
도 10을 참조하면, 제2시점(T2)에서, 메모리 컨트롤러(350)는 플레인들(PL1~PLm) 중에서 최소 이레이즈 카운트가 가장 큰 제3플레인(PL3)과 최소 이레이즈 카운트가 가장 작은 제1플레인(PL1) 사이의 최소 이레이즈 카운트 차이가 기준 차이(예컨대, 5) 이상인 경우, 제1플레인(PL1)을 선택할 수 있다. 메모리 컨트롤러(350)는 제1플레인(PL1)에 포함된 블록들 중에서 최소 이레이즈 카운트에 해당하는 블록에 대한 제2웨어-레벨링(W-LV2)의 수행을 제어할 수 있다.
즉, 플레인 선택 카운트(PSC)가 가장 작은 플레인이 아니더라도, 최소 이레이즈 카운트가 가장 큰 플레인과 최소 이레이즈 카운트가 가장 작은 플레인 사이의 최소 이레이즈 카운트 차이가 상기 기준 차이 이상인 경우, 상기 최소 이레이즈 카운트가 가장 작은 상기 플레인이 선택되고, 선택된 플레인에 포함된 블록들 중에서 최소 이레이즈 카운트에 해당하는 블록에 대해 웨어-레벨링이 수행될 수 있다.
도 11은 도 9에 도시된 실시 예에 따른 메모리 컨트롤러의 작동을 설명하기 위한 플로우차트이다.
도 1부터 도 3, 도 9, 및 도 11을 참조하면, 메모리 컨트롤러(350)는 복수의 플레인들(PL1~PLm) 중에서 제1플레인에 포함된 제1블록에 대한 웨어-레벨링의 수행을 제어할 수 있다(S300).
상기 웨어-레벨링이 수행되면, 메모리 컨트롤러(350)는 상기 제1플레인의 플레인 선택 카운트(PSC)를 변경할 수 있다(S320). 실시 예에 따라, 메모리 컨트롤러(350)는 상기 제1플레인의 플레인 선택 카운트(PSC)를 증가시킬 수 있으나, 이에 한정되는 것은 아니다.
메모리 컨트롤러(350)는, 복수의 플레인들(PL1~PLm) 각각의 플레인 선택 카운트(PSC)에 기초하여, 다음 웨어-레벨링이 수행될 블록을 포함하는 플레인을 선택하고(S340), 선택된 플레인에 포함된 블록들 중에서 이레이즈 카운트가 최소인 블록에 대한 상기 다음 웨어-레벨링의 수행을 제어할 수 있다(S360).
실시 예에 따라, 메모리 컨트롤러(350)는 플레인 선택 카운트(PSC)가 가장 작은 플레인을 선택할 수 있다.
실시 예에 따라, 메모리 컨트롤러(350)는 플레인 선택 카운트(PSC)와 관계없이, 최소 이레이즈 카운트가 가장 큰 플레인과 최소 이레이즈 카운트가 가장 작은 플레인 사이의 최소 이레이즈 카운트 차이를 판단할 수 있다. 판단 결과 상기 최소 이레이즈 카운트 차이가 기준 차이 이상인 경우, 상기 최소 이레이즈 카운트가 가장 작은 상기 플레인을 선택하고, 선택된 플레인에 포함된 블록들 중에서 최소 이레이즈 카운트에 해당하는 블록에 대한 상기 다음 웨어-레벨링의 수행을 제어할 수 있다.
도 12는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 12를 참조하면, 데이터 처리 시스템(1000)은 모바일 컴퓨팅 장치(1000)를 의미할 수 있다.
모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA (enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷 (internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
데이터 처리 시스템(1000)은 애플리케이션 프로세서(application processor(AP); 1100), 데이터 저장 장치(1200), 이미지 센서(1300), 모뎀(1400), 무선 송수신기(1450), 및 터치 스크린(1500)을 포함하는 디스플레이(1550)를 포함할 수 있다.
데이터 저장 장치(1200)는 도 1 또는 도 2에 도시된 데이터 저장 장치(300-1 또는 300-2)를 의미할 수 있다. 컨트롤러(1210)는 도 1 또는 도 2의 메인 컨트롤러(310)를 의미하고, 불휘발성 메모리(1220)는 도 1의 불휘발성 메모리(400)를 의미할 수 있다.
이미지 센서(1300)는 광 이미지를 전기적 신호로 변환함으로써 이미지 데이터를 생성할 수 있다.
무선 송수신기(1450)는 안테나(ANT)를 통해 수신된 무선 데이터를 모뎀(1400)으로 전송할 수 있다. 또한, 무선 송수신기(1450)는 모뎀(1400)으로부터 출력된 데이터를 무선 데이터로 변환하고, 상기 무선 데이터를 안테나(ANT)를 통해 외부로 전송할 수 있다.
모뎀(1400)은 무선 송수신기(1450)와 AP(1100) 사이에서 주고받는 데이터를 처리할 수 있다.
AP(1100)는 데이터 저장 장치(1200), 이미지 센서(1300), 모뎀(1400), 무선 송수신기(1450), 터치 스크린(1500), 및/또는 디스플레이(1550)를 제어할 수 있다.
AP(1100)는 집적 회로, 시스템 온 칩(system on chip(SoC)), 또는 모바일 AP로 구현될 수 있다.
AP(1100)는 CPU(1110), 버스 구조(1111), 저장 장치 인터페이스(1120), 이미지 신호 프로세서(image signal processor(ISP); 1130), 모뎀 인터페이스(1140), 및 디스플레이 컨트롤러(1150)를 포함할 수 있다.
CPU(1110)는, 버스 구조(1111)를 통해, 인터페이스(232), 저장 장치 인터페이스(1120), 이미지 신호 프로세서(1130), 모뎀 인터페이스(1140), 및 디스플레이 컨트롤러(1150)를 제어할 수 있다.
버스 구조(1111)는 AMBA(Advanced Microcontroller Bus Architecture), AHB(Advanced High-performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface) 또는 ASB(Advanced System Bus)로 구현될 수 있으나 이에 한정되는 것은 아니다.
저장 장치 인터페이스(1120)는, CPU(1110)의 제어에 따라, 데이터 저장 장치(1200)와 주고받는 데이터의 처리 및/또는 전송을 제어할 수 있다.
ISP(1130)는 이미지 센서(1300)로부터 출력된 이미지 데이터를 수신하여 처리하고, 처리된 이미지를 버스 구조(1111)로 전송할 수 있다.
모뎀 인터페이스(1140)는, CPU(1110)의 제어에 따라, 모뎀(1400)과 주고받는 데이터의 처리 및/또는 전송을 제어할 수 있다.
디스플레이 컨트롤러(1150)는, CPU(234)의 제어에 따라, 디스플레이 (400)에서 디스플레이될 데이터를 디스플레이(1550)로 전송할 수 있다. 실시 예에 따라, 디스플레이 컨트롤러(1150)와 디스플레이(1550)는 MIPI® 디스플레이 시리얼 인터페이스 (display serial interface)를 통해 데이터를 주거나 받을 수 있다. 다른 실시 예에 따라, 디스플레이 컨트롤러(1150)와 디스플레이(1550)는 eDP(embedded DisplayPort)를 통해 데이터를 주거나 받을 수 있다.
터치 스크린(1500)은 데이터 처리 시스템(1000)의 작동을 제어할 수 있는 사용자 입력을 AP(1100)로 전송할 수 있다. 사용자 입력은 데이터 처리 시스템(1000)의 터치 스크린(1500)을 터치할 때 생성될 수 있다. CPU(1110)는 터치 스크린(1500)으로부터 전송된 사용자 입력에 따라 AP(1100), 이미지 센서(1300), 및/또는 디스플레이(1550)의 작동을 제어할 수 있다.
도 13은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 13을 참조하면, 데이터 처리 시스템(300A)은 eMMC로 구현될 수 있다.
데이터 처리 시스템(300A)은 호스트 인터페이스(301), 컨트롤러(303), NAND 인터페이스(305), 및 불휘발성 메모리(400)를 포함할 수 있다.
호스트 인터페이스(301)는 컨트롤러(303)와 호스트 사이에서 주고받는 명령 및/또는 데이터를 제어할 수 있다. 호스트 인터페이스(301)는 MMC 인터페이스를 통해 상기 호스트에 접속될 수 있다.
컨트롤러(303)는 데이터 처리 시스템(300A)의 작동을 제어할 수 있다. 컨트롤러(303)와 NAND 인터페이스(305)를 포함하는 구성은 도 1 또는 도 2의 메인 컨트롤러(310)의 구성과 실질적으로 동일 또는 유사할 수 있다.
컨트롤러(303)는 NAND 인터페이스(305)를 통해 불휘발성 메모리(400)의 작동을 제어할 수 있다.
도 14는 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 14를 참조하면, 데이터 처리 시스템(500)은 데이터베이스 (520), 데이터베이스 서버(530), 제2네트워크(540), 및 복수의 클라이언트 컴퓨터들(550과 551)을 포함할 수 있다.
데이터 센터, 인터넷 데이터 센터, 또는 클라우드 데이터 센터(510)는 데이터베이스(520)와 데이터베이스 서버(530)를 포함할 수 있다.
데이터베이스(520)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 복수의 데이터 저장 장치들(300)은 랙(rack)에 설치될 수 있다. 각 데이터 저장 장치 (300)의 구조와 작동은 도 1부터 도 11을 참조하여 설명된 데이터 저장 장치(300-1 또는 300-2)의 구조와 작동과 실질적으로 동일 또는 유사하다.
데이터베이스 서버(530)는 복수의 데이터 저장 장치들(300) 각각의 작동을 제어할 수 있다. 데이터베이스 서버(530)는 제1네트워크, 예컨대 LAN(Local Area Network)을 통해 제2무선 네트워크(540), 예컨대, 인터넷에 접속될 수 있다.
복수의 클라이언트 컴퓨터들(550과 551) 각각은 제2네트워크(540)를 통해 데이터베이스 서버(530)에 접속할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100-1, 100-2, 500, 1000: 데이터 처리 시스템
200: 호스트
220, 330, 331: CPU
300, 300-1, 300-2, 1200 : 데이터 저장 장치
310, 1210: 컨트롤러
340: 버퍼 컨트롤러
350: 메모리 컨트롤러
400, 1220: 불휘발성 메모리
410: 뱅크
510: 데이터 센터

Claims (10)

  1. 복수의 블록들을 포함하는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 작동 방법에 있어서,
    상기 복수의 블록들에 대하여, 각각의 블록에 대한 이레이즈 횟수에 관련된 제1카운트 및, 상기 각각의 블록에 대한 웨어-레벨링(wear-leveling)에 관련된 제2카운트를 각각 포함하는, 작동 카운트를 판단하는 단계; 및
    판단 결과에 기초하여 상기 복수의 블록들 중 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)하는 단계를 포함하는 메모리 컨트롤러의 작동 방법.
  2. 제1항에 있어서,
    상기 판단하는 단계는,
    기준값을 설정하는 단계를 포함하고,
    상기 회피하는 단계는,
    상기 제1블록의 상기 제2카운트가 상기 기준값이 될 때까지, 상기 제1블록에 대한 웨어-레벨링을 금지하는 단계를 포함하는, 메모리 컨트롤러의 작동 방법.
  3. 제1항에 있어서,
    상기 제1블록에 대한 이레이즈 작동이 수행될 때마다, 상기 제1블록의 상기 제1카운트를 증가시키는 단계;
    상기 제1블록에 대한 상기 웨어-레벨링이 수행될 때마다, 상기 제1블록의 상기 제2카운트를 기준 카운트만큼 증가시키는 단계; 및
    상기 제1블록에 대한 상기 이레이즈 작동이 수행될 때마다, 상기 제1블록의 상기 제2카운트를 감소시키는 단계를 더 포함하는 메모리 컨트롤러의 작동 방법.
  4. 제1항에 있어서,
    상기 복수의 블록들의 작동 카운트들 중 어느 하나도 기준값에 도달하지 않은 것에 응답하여, 상기 복수의 블록들 중에서, 작동 카운트가 최소인 블록을 제2블록으로 선택하는 단계; 및
    상기 제2블록에 대한 웨어-레벨링의 수행을 제어하는 단계를 더 포함하는, 메모리 컨트롤러의 작동 방법.
  5. 복수의 블록들을 포함하는 불휘발성 메모리 장치;
    상기 복수의 블록들 각각에 대한 작동 카운트를 저장하되, 상기 작동 카운트는 각각의 블록에 대한 이레이즈 횟수에 관련된 제1카운트 및 상기 각각의 블록에 대한 웨어-레벨링(wear-leveling)에 관련된 제2카운트를 각각 포함하는, 휘발성 메모리; 그리고
    상기 불휘발성 메모리 장치와 상기 휘발성 메모리에 전기적으로 접속된 메모리 컨트롤러를 포함하고,
    상기 메모리 컨트롤러는,
    상기 복수의 블록들 중에서 제1블록에 대한 작동 카운트를 판단하고,
    판단 결과에 기초하여 상기 제1블록에 대한 연속적인 웨어-레벨링(wear-leveling)을 회피(avoid)하는, 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 메모리 컨트롤러는,
    상기 복수의 블록들 중 어느 하나의 블록의 상기 제2카운트와 기준값이 동일한지 여부를 판단하고,
    상기 블록의 상기 제2카운트가 상기 기준값이 될 때까지, 상기 블록에 대한 웨어-레벨링을 금지함으로써 상기 블록에 대한 상기 연속적인 웨어-레벨링을 회피하는 데이터 저장 장치.
  7. 제5항에 있어서,
    상기 메모리 컨트롤러는, 상기 복수의 블록들 중 어느 하나의 블록에 대한 이레이즈 작동이 수행될 때마다 상기 블록의 상기 제1카운트를 증가시키고, 상기 블록에 대한 웨어-레벨링 작동이 수행될 때마다 상기 블록의 상기 제2카운트를 기준 카운트만큼 증가시키고, 그리고 상기 블록에 대한 이레이즈 작동이 수행될 때마다 상기 블록의 상기 제2카운트를 감소시키도록 더 구성되는, 데이터 저장 장치.
  8. 복수의 블록들을 포함하는 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 작동 방법에 있어서,
    상기 복수의 블록들 각각에 대하여, 상기 복수의 블록들 중 각각의 블록에 대한 이레이즈 횟수에 관련된 제1카운트 및 상기 각각의 블록에 대한 웨어-레벨링(wear-leveling)에 관련된 제2카운트를 포함하는, 작동 카운트를 판단하는 단계;
    상기 복수의 블록들 중 선택된 블록에 대하여, 상기 선택된 블록에 대한 상기 제1카운트 및 제2카운트에 기초하여 웨어-레벨링(wear-leveling)을 금지하는 단계;
    상기 선택된 블록에 대하여 이레이즈 작동이 수행될 때마다 상기 선택된 블록의 상기 제1카운트를 증가시키는 단계; 및
    상기 선택된 블록에 대하여 이레이즈 작동 또는 웨어-레벨링 작동이 수행될 때마다 상기 선택된 블록의 상기 제2카운트를 변화시키는 단계를 포함하는, 메모리 컨트롤러의 작동 방법.
  9. 제8항에 있어서,
    상기 선택된 블록의 상기 제2카운트를 변화시키는 단계는, 상기 선택된 블록에 대하여 상기 웨어-레벨링 작동이 수행될 때마다 기준 카운트만큼 상기 제2카운트를 증가시키는 단계 및 상기 선택된 블록에 대하여 상기 이레이즈 작동이 수행될 때마다 상기 제2카운트를 감소시키는 단계를 포함하는, 메모리 컨트롤러의 작동 방법.
  10. 제8항에 있어서,
    상기 웨어-레벨링을 금지하는 단계는,
    기준값을 설정하는 단계;
    상기 선택된 블록의 상기 제2카운트 및 상기 기준값에 기초하여 상기 웨어-레벨링을 금지하는 단계;
    상기 복수의 블록들의 작동 카운트들 중 어느 하나도 상기 기준값에 도달하지 않은 것에 응답하여, 상기 복수의 블록들 중에서 작동 카운트가 최소인 블록을 제2블록으로 선택하는 단계; 및
    상기 제2 블록에 대한 웨어-레벨링을 수행하는 단계를 더 포함하는, 메모리 컨트롤러의 작동 방법.
KR1020150038404A 2015-03-19 2015-03-19 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템 KR102258126B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150038404A KR102258126B1 (ko) 2015-03-19 2015-03-19 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US15/069,155 US9864526B2 (en) 2015-03-19 2016-03-14 Wear leveling using multiple activity counters

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150038404A KR102258126B1 (ko) 2015-03-19 2015-03-19 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20160112529A KR20160112529A (ko) 2016-09-28
KR102258126B1 true KR102258126B1 (ko) 2021-05-28

Family

ID=56924699

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150038404A KR102258126B1 (ko) 2015-03-19 2015-03-19 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템

Country Status (2)

Country Link
US (1) US9864526B2 (ko)
KR (1) KR102258126B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10649661B2 (en) * 2017-06-26 2020-05-12 Western Digital Technologies, Inc. Dynamically resizing logical storage blocks
KR102422032B1 (ko) 2017-08-16 2022-07-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20200007595A (ko) 2018-07-13 2020-01-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20200033461A (ko) 2018-09-20 2020-03-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10831378B2 (en) * 2018-09-24 2020-11-10 International Business Machines Corporation Optimizing data access in a DSN memory for wear leveling
US10963185B2 (en) * 2018-11-20 2021-03-30 Micron Technology, Inc. Memory sub-system for performing wear-leveling adjustments based on memory component endurance estimations
US11151053B2 (en) * 2019-08-07 2021-10-19 International Business Machines Corporation Increasing data read and/or write heat tracking resolution in storage devices having cache architecture
US11494299B2 (en) 2021-02-18 2022-11-08 Silicon Motion, Inc. Garbage collection operation management with early garbage collection starting point
US20220300184A1 (en) * 2021-03-19 2022-09-22 Silicon Motion, Inc. Method of performing wear-leveling operation in flash memory and related controller and storage system
CN116009761A (zh) * 2021-10-21 2023-04-25 华为技术有限公司 一种数据写入方法以及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106557A1 (en) 2008-06-18 2015-04-16 Super Talent Technology Corp. Virtual Memory Device (VMD) Application/Driver for Enhanced Flash Endurance

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341339A (en) 1992-10-30 1994-08-23 Intel Corporation Method for wear leveling in a flash EEPROM memory
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
TWI368224B (en) 2007-03-19 2012-07-11 A Data Technology Co Ltd Wear-leveling management and file distribution management of hybrid density memory
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US7908423B2 (en) 2007-07-25 2011-03-15 Silicon Motion, Inc. Memory apparatus, and method of averagely using blocks of a flash memory
TWI373772B (en) 2007-10-04 2012-10-01 Phison Electronics Corp Wear leveling method and controller using the same
US9720616B2 (en) * 2008-06-18 2017-08-01 Super Talent Technology, Corp. Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
KR20100012938A (ko) 2008-07-30 2010-02-09 주식회사 하이닉스반도체 웨어 레벨링을 수행하는 반도체 스토리지 시스템 및 그제어 방법
KR100974215B1 (ko) 2008-10-02 2010-08-06 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
US8223545B1 (en) 2008-11-11 2012-07-17 Marvell International Ltd. Systems and methods for data page management of NAND flash memory arrangements
KR101038991B1 (ko) 2009-03-10 2011-06-03 주식회사 하이닉스반도체 메모리 영역의 균등한 사용을 위한 반도체 스토리지 시스템및 그 제어 방법
KR101097438B1 (ko) 2009-10-29 2011-12-23 주식회사 하이닉스반도체 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
CN102201259A (zh) 2010-03-24 2011-09-28 建兴电子科技股份有限公司 非易失性存储器的平均抹写方法
KR101131560B1 (ko) 2010-07-15 2012-04-04 주식회사 하이닉스반도체 웨어 레벨링을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
US8762625B2 (en) 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling
US20120317337A1 (en) 2011-06-09 2012-12-13 Microsoft Corporation Managing data placement on flash-based storage by use
KR101826140B1 (ko) * 2011-08-04 2018-03-22 삼성전자주식회사 메모리 컨트롤러의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 메모리 시스템
KR101257691B1 (ko) 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
US9208070B2 (en) 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
KR101380602B1 (ko) 2012-03-07 2014-04-04 한국과학기술원 하이브리드 메모리 시스템에서 비휘발성 메모리의 웨어레벨링 방법 및 하이브리드 메모리 시스템
KR101989850B1 (ko) * 2012-04-03 2019-06-18 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
TWI454916B (zh) 2012-05-08 2014-10-01 Phison Electronics Corp 儲存單元管理方法、記憶體控制器與記憶體儲存裝置
US8898405B2 (en) 2012-06-12 2014-11-25 Storart Technology Co. Ltd Method for static wear leveling in non-violate storage device
US20140181434A1 (en) * 2012-12-20 2014-06-26 Virtium Technology, Inc. Integrated and naturalized static wear-leveling for block mapping
KR102108839B1 (ko) * 2013-06-12 2020-05-29 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150106557A1 (en) 2008-06-18 2015-04-16 Super Talent Technology Corp. Virtual Memory Device (VMD) Application/Driver for Enhanced Flash Endurance

Also Published As

Publication number Publication date
US9864526B2 (en) 2018-01-09
US20160274802A1 (en) 2016-09-22
KR20160112529A (ko) 2016-09-28

Similar Documents

Publication Publication Date Title
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10579279B2 (en) Data storage device and data processing system having the same
KR102367982B1 (ko) 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US11914531B2 (en) Host controller interface using multiple circular queue, and operating method thereof
KR102602694B1 (ko) 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법
KR102253592B1 (ko) 초기 문턱 전압 분포 변화를 보상할 수 있는 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템
KR20190090635A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9396108B2 (en) Data storage device capable of efficiently using a working memory device
US10303366B2 (en) Data storage device that divides and processes a command and data processing system including the same
US10168926B2 (en) Method of operating data storage device and method of operating data processing system including same
US11237753B2 (en) System including data storage device and method of controlling discard operation in the same
US20160291869A1 (en) Data storage device and data processing system including the same
KR20170013697A (ko) 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10416886B2 (en) Data storage device that reassigns commands assigned to scale-out storage devices and data processing system having the same
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
US10503406B2 (en) Data storage device and data processing system having the same
KR102538258B1 (ko) 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
US20220113909A1 (en) Operating method of host device and storage device using credit
US10331366B2 (en) Method of operating data storage device and method of operating system including the same
US20160291897A1 (en) Data storage device and devices having the same
KR102583592B1 (ko) 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US11182329B2 (en) Data processing system and operating method thereof
US20170031633A1 (en) Method of operating object-oriented data storage device and method of operating system including the same

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant