KR20130017748A - 메모리 컨트롤러 및 이의 데이터 관리방법 - Google Patents

메모리 컨트롤러 및 이의 데이터 관리방법 Download PDF

Info

Publication number
KR20130017748A
KR20130017748A KR1020110080360A KR20110080360A KR20130017748A KR 20130017748 A KR20130017748 A KR 20130017748A KR 1020110080360 A KR1020110080360 A KR 1020110080360A KR 20110080360 A KR20110080360 A KR 20110080360A KR 20130017748 A KR20130017748 A KR 20130017748A
Authority
KR
South Korea
Prior art keywords
pages
block
blocks
hot
page
Prior art date
Application number
KR1020110080360A
Other languages
English (en)
Other versions
KR101257691B1 (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 KR1020110080360A priority Critical patent/KR101257691B1/ko
Priority to PCT/KR2012/001354 priority patent/WO2013024952A1/ko
Publication of KR20130017748A publication Critical patent/KR20130017748A/ko
Application granted granted Critical
Publication of KR101257691B1 publication Critical patent/KR101257691B1/ko
Priority to US14/177,924 priority patent/US9304905B2/en

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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 플래시 메모리 장치의 성능 저하를 최소화하면서 마모도 평준화를 고려할 수 있는 데이터 관리 기술에 관한 것이다.
이를 위해, 본 발명에 따른 복수의 페이지들을 포함하는 블록을 복수개 포함하는 메모리의 논리 주소와 물리 주소 간의 대응을 관리하는 메모리 컨트롤러에 있어서, 메모리 컨트롤러는 핫 페이지 판정부 및 주소 변환부를 포함한다. 상기 핫 페이지 판정부는 블록 내 페이지들을 소정의 기준에 따라 핫 페이지(hot page)와 콜드 페이지(cold page)로 구분한다. 주소 변환부는 상기 구분된 핫 페이지가 복수개인 경우 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치한다.
이러한 구성에 의하면, 합병 연산 시, 핫 페이지와 콜드 페이지를 구별하여, 핫 페이지들 각각을 빈 블록들에 분배함으로써, 특정 물리 블록에 집중될 수 있는 소거 연산을 피할 수 있으므로, 효율적으로 마모도 평준화를 수행할 수 있다.

Description

메모리 컨트롤러 및 이의 데이터 관리방법 {MEMORY CONTROLLER AND DATA MANAGEMENT METHOD}
본 발명은 메모리 컨트롤러 및 이의 데이터 관리방법에 관한 것으로, 보다 상세하게는 플래시 메모리 장치의 성능 저하를 최소화하면서 마모도 평준화를 고려할 수 있는 데이터 관리 기술에 관한 것이다.
플래시 메모리(Flash Memory)는 데이터를 전기적으로 기록 또는 소거할 수 있는 비휘발성 메모리로써, 한정된 횟수 내에서 재기록이 가능하다. 플래시 메모리는 전원이 꺼져도 저장된 정보가 지워지지 않으며, 낮은 소비전력, 빠른 동작속도, 뛰어난 내구성 등의 장점으로 인해 디지털 카메라, PDA, MP3 player, 핸드폰 등의 휴대형 전자기기들의 저장장치로 폭넓게 이용되고 있으며, 최근에는 SSD(Solid State Disk)나 터보 메모리 등 다양한 분야에서 사용되고 있다. 이하, 국내공개특허 제2011-0016320호를 참조하여 플래시 메모리의 구조를 살펴보면 다음과 같다.
도 1의 (a)는 플래시 메모리의 일반적인 구조를 나타낸 도면이고, (b)는 (a)에서 하나의 페이지를 구체적으로 나타낸 도면이다.
도 1에 도시된 바와 같이, 플래시 메모리는 복수개의 블록(block)들을 포함하는 플레인(plane)으로 구분될 수 있으며, 하나의 블록은 다시 복수개의 페이지(page)로 나누어진다. 하나의 페이지는 데이터가 저장되는 영역인 섹터(sector)와, 섹터에 저장된 데이터에 관련된 정보가 저장되는 영역인 스페어(spare)로 구분된다. 이 때 호스트(host) 또는 파일시스템(file system)은 섹터 영역을 인식할 수 있으나, 스페어 영역은 플래시 변환 계층(FTL)에 의하여 관리되는 영역이다. 스페어 영역에는 섹터에 저장된 데이터에 관한 정보가 기록되므로, 스페어 영역을 참조하면 해당 섹터 영역에 저장된 데이터에 관한 정보를 획득할 수 있다. 설명의 편의 상 도 1에는 하나의 페이지에 하나의 섹터가 포함되는 예가 도시되었으나, 하나의 페이지는 둘 이상의 섹터를 포함할 수도 있다. 또한 표현하기에 따라서는 도 1에 도시된 섹터 영역을 데이터 영역이라 지칭하고, 데이터 영역과 스페어 영역을 함께 포함하여 섹터라 지칭하는 경우도 있을 수 있으나, 이는 표현의 차이가 있을 뿐이고, 실질적으로 나타내고자 하는 기술적 특징은 도 1에 도시된 바와 같다.
플래시 메모리에서 쓰기 연산은 페이지 단위로 수행되며, 소거 연산은 블록 단위로 수행된다. 플래시 메모리에 데이터를 기록하기 위해서, 호스트(host)는 플래시 메모리 저장장치에 섹터 단위로 데이터를 전송하며, 저장장치는 입력되는 데이터가 저장될 특정 페이지를 할당해야 한다. 플래시 메모리에서는 덮어쓰기(overwrite) 연산을 수행할 수 없으며, 이미 사용된, 즉 데이터가 기록된 블록에 새로운 데이터를 덮어쓰기 위해서는 쓰기 전에 소거(erase before write) 연산을 수행해야 한다. 플래시 메모리를 소거할 수 있는 횟수는 SLC(Single Level Cell)의 경우 약 10만번으로 제한되며, MLC(Multi-Level Cell)의 경우 약 1만번으로 제한된다.
이러한 소거 횟수의 제한을 극복하기 위해서는 플래시 메모리 내 특정 블록이 집중적으로 반복하여 사용되어 다른 블록들에 비해 빠르게 마모되는 것을 방지하고, 데이터를 각 블록에 골고루 분배함으로써, 모든 블록의 마모가 균등하게 발생하도록 하는 마모도 평준화(wear-leveling)가 필요하다. 이런 성질들을 고려하면서 플래시 메모리의 성능을 극대화시키고, 마모도 평준화를 수행하여 수명을 연장시키는 것이 소프트웨어 계층인 플래시 변환 계층(FTL: Flash Translation Layer)의 역할이다.
플래시 메모리에서 종래의 마모도 평준화 기법에 관한 기술이 한국공개특허 제10-2008-0033649호 "머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그 관리 방법"에 설명되었다. 본 선행기술에 따르면, 머지 동작(merge operation, 합병 연산)이 수행된 후, 해당 데이터의 업데이트 빈도를 체크하여 이들에 대한 마모도 평준화를 위한 별도의 구획 할당 및 조정 연산이 수행된다.
이러한 기존의 마모도 평준화 알고리즘들은 오직 마모도 평준화만을 고려한 알고리즘이기 때문에, 읽기, 쓰기, 지우기(소거) 연산을 효율적으로 사용하는 별도의 성능 향상 알고리즘을 지니고 있다는 것을 가정한다. 하지만, 두 가지 분야의 알고리즘을 하나의 플래시 변환 계층으로 이행하는 것은 하드웨어적 제약으로 구현 불가능하다. 여기서, 하드웨어적 제약이란 플래시 메모리의 부분 프로그래밍(partial programming)의 횟수 제한을 말한다. 부분 프로그래밍 제약이란, 하나의 페이지에 접근할 수 있는 횟수를 말한다. 예를 들어, 플래시 메모리가 허용하는 총 접근 횟수가 3회인데, 성능 향상 알고리즘이 2회를 소모하게 되면, 마모도 평준화 알고리즘이 사용할 수 있는 접근 횟수는 1회에 불과하다. 부분 프로그래밍을 2회 이상 필요로 하는 마모도 평준화 알고리즘들은 사용하지 못하게 된다.
또한, 기존의 마모도 평준화 기법은 일정 시간이나 일정 횟수의 연산에 따라 마모도 평준화를 주기적으로 수행한다는 공통점을 지니고 있다. 이와 같은 방법은 쓰기 연산의 유형에 따라 플래시 메모리의 성능에 많은 편차를 발생시킨다. 기존의 마모도 평준화 알고리즘의 경우, 각 블록에 수행된 지우기 연산의 횟수(ECN: erase count number)를 읽기 연산으로 모두 조회한 후, 일정 수의 편차가 발생된 두 블록의 정보들을 교체하는 작업을 수행한다. 이와 같은 알고리즘은 마모도 평준화를 시간에 따라 또는 일정 연산 횟수에 따라 조건 없이 주기적으로 수행하기 때문에, 마모도 평준화가 필요하지 않을 경우에도 정보 조회를 위한 불필요한 읽기 연산과 쓰기 연산이 발생하게 된다. 예를 들어, 일정 시간이 지났지만 오직 읽기 연산만이 수행되었을 경우나, 많은 쓰기 연산이 수행되었지만 모두 고르게 분포되어 지우기 연산이 수행되지 않는 경우에는 마모도 평준화가 불필요함에도 불구하고 정보 조회를 위한 연산이 발생한다는 것이다.
따라서 플래시 메모리 장치의 성능 저하를 최소화하면서 마모도 평준화를 고려할 수 있는 데이터 관리 기술이 필요하다.
한국공개특허 제10-2011-0016320호 한국공개특허 제10-2008-0033649호
본 발명은 플래시 메모리 장치의 성능 저하를 최소화하면서 마모도 평준화를 고려할 수 있는 데이터 관리 기술을 제공하는 것을 목적으로 한다.
또한, 본 발명은 일정 시간 또는 일정의 연산 횟수에 따라 별도의 마모도 평준화를 수행하는 것이 아니라, 성능과 마모도 평준화를 동시에 고려할 수 있는 기술을 제공하는 것을 목적으로 한다. 특히 본 발명은 합병 연산(merge operation)이 수행된 이후 마모도 평준화를 위한 별도의 읽기 또는 쓰기 연산이 발생하는 것을 최소화하고, 합병 연산 과정에서 마모도 평준화의 효과를 극대화할 수 있는 개선된 합병 연산 과정을 제시하는 것을 목적으로 한다.
이러한 목적을 달성하기 위하여 본 발명에 따른 복수의 페이지들을 포함하는 블록을 복수개 포함하는 메모리의 논리 주소와 물리 주소 간의 대응을 관리하는 메모리 컨트롤러에 있어서, 메모리 컨트롤러는 핫 페이지 판정부 및 주소 변환부를 포함한다. 상기 핫 페이지 판정부는 블록 내 페이지들을 소정의 기준에 따라 핫 페이지(hot page)와 콜드 페이지(cold page)로 구분한다. 주소 변환부는 상기 구분된 핫 페이지가 복수개인 경우 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 합병 연산 시, 핫 페이지와 콜드 페이지를 구별하여, 핫 페이지들 각각을 빈 블록들에 분배함으로써, 특정 물리 블록에 집중될 수 있는 소거 연산을 피할 수 있으므로, 효율적으로 마모도 평준화를 수행할 수 있다.
또한, 본 발명에서는 합병 연산을 수행하는 과정에서 마모도 평준화가 고려되므로, 마모도 평준화를 위한 합병 연산 이후의 불필요한 정보 조회가 없기 때문에, 플래시 메모리 장치의 성능을 최대화하고, 그 사용 연한을 늘릴 수 있다.
또, 본 발명에서는 구분된 핫 페이지가 복수개이면, 핫 페이지를 포함하지 않는 데이터 블록 가운데 적어도 하나 이상의 빅팀 블록(victim block)을 선택하고, 상기 빅팀 블록의 콜드 페이지의 적어도 일부를 복수의 타겟 블록들에 분산하여 배치함으로써, 데이터 저장의 효율과 마모도 평준화 효과를 높일 수 있어, 플래시 메모리 장치의 성능이 저하되는 것을 최소화할 수 있다.
도 1의 (a)는 플래시 메모리의 일반적인 구조를 나타낸 도면이다.
도 1의 (b)는 도 1의 (a)에서 하나의 페이지를 구체적으로 나타낸 도면이다.
도 2는 본 발명의 일실시예에 따른 플래시 메모리 장치의 구성을 나타낸 도면이다.
도 3은 핫 페이지들의 분배 시, 빅팀 블록을 고려한 경우와 아닌 경우를 비교하여 나타낸 도면이다.
도 4는 본 발명의 일실시예에 따른 메모리 컨트롤러의 데이터 관리방법의 흐름을 나타낸 도면이다.
도 5는 핫 페이지들의 분배 시, 빅팀 블록을 이용하여 합병하는 경우의 흐름을 나타낸 도면이다.
도 6은 도 5에 의한 데이터 관리방법을 나타낸 도면이다.
도 7은 본 발명에 따라 개선된 합병 연산 후, 논리 블록과 물리 블록 간의 매핑 정보를 별도의 테이블로 관리하는 경우를 나타낸 도면이다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략하기로 한다. 또한 본 발명의 실시예들을 설명함에 있어 구체적인 수치는 실시예에 불과하며, 설명의 편의와 이해를 위하여 실제와는 달리 과장된 수치가 제시되었을 수 있다.
<장치에 대한 설명>
도 2는 본 발명의 일실시예에 따른 플래시 메모리 장치의 개략적인 구성을 도시한 도면이다.
도 2(a)를 참조하면, 플래시 메모리 장치(300)는 메모리(100)와 메모리 컨트롤러(200) 등을 포함한다. 본 발명에서 플래시 메모리 장치(300)는 SSD나 USB 메모리와 같은 데이터 저장을 위한 독립된 디바이스뿐만 아니라 디지털 카메라, MP3 player 등과 같은 휴대형 장치들에 내장되어 구현되는 경우를 모두 포함하며, 인터페이스(210)를 통해 PC, 노트북 등의 호스트(host)(10)와 전기적으로 연결된다. 호스트(10)는 파일 시스템(12)을 사용할 수도 있고, 사용하지 않을 수도 있다. 파일 시스템(12)을 사용하는 호스트(10)라면, 어플리케이션(11)은 파일 시스템(12)을 통해 플래시 메모리 장치(300)에 파일의 형태로 저장된 데이터를 읽거나, 쓰거나, 삭제 또는 갱신할 수 있다. 파일 시스템(12)을 사용하지 않는 호스트(10)라면, 어플리케이션(11)은 단순히 주소만 참고하여 플래시 메모리 장치(300)에 데이터를 읽거나, 쓰거나, 삭제 또는 갱신할 수 있다.
메모리 컨트롤러(200)는 인터페이스(210) 및 메모리(100)를 구동하여 데이터를 읽고(read), 쓰고(write), 소거(erase)한다. 메모리(100)에서 발생하는 읽기/쓰기 작업은 페이지의 단위로 수행되며, 소거 작업은 블록의 단위로 수행된다. 그리고 메모리 컨트롤러(200)는 물리적 특성상 이미 써진 페이지에 덮어쓰기(overwrite) 작업을 수행할 수 없으므로, 쓰기 동작 전에 소거 동작을 수행하며, 쓰기 연산 시, 인터페이스(210)를 통해 입력되는 데이터가 저장되는 위치를 결정하고, 결정된 위치에 데이터를 기록한다.
이러한 메모리 컨트롤러(200)는 플래시 변환 계층(FTL) 알고리즘을 이용하여 외부로부터의 데이터 입출력 요청을 메모리(100)의 특성에 맞게 변환시키는데, 일반적으로 플래시 변환 계층은 주소 매핑 기법에 따라 페이지 기반 FTL, 블록 기반 FTL 및 하이브리드 기반 FTL로 분류된다. 상기 분류된 기법들에 대한 상세한 설명은 관련 공지기술 및 기술문헌으로부터 용이하게 파악될 수 있으므로, 이하 설명은 생략한다(예를 들어, 국내공개특허 제2011-0012062호).
상기 메모리 컨트롤러(200)는 어플리케이션(11)이나 파일 시스템(12)으로부터 논리 주소(logical address)를 입력받아, 이를 물리 주소(physical address)로 변환한다. 즉, 메모리 컨트롤러(200)는 메모리(100)의 논리 주소와 물리 주소 간의 대응을 관리하고, 메모리(100)에 데이터를 기록하기 위해서 해당 데이터가 저장되는 물리 블록을 할당하며, 물리 블록을 할당하기 위해서 메모리 컨트롤러(200) 내의 RAM(220)에 저장된 주소 매핑 테이블(address mapping table)을 참조한다.
여기서, 주소 매핑 테이블은 호스트(10)로부터 입력되는 데이터 블록의 논리 블록 번호(LBN: Logical Block Number)와 메모리 내 각 물리 블록의 물리 블록 번호(PBN: Physical Block Number) 간의 매핑 정보를 포함하며, 이러한 매핑 정보로 논리 블록 번호를 물리 블록 번호로 변환할 수 있다. 일반적으로 논리 블록 번호는 데이터 블록마다 호스트(10)에 의해 할당되는 번호이고, 물리 블록 번호는 메모리 내의 각 물리 블록들에 순차적으로 할당되는 번호이다.
도 2(b)는 하나의 논리 주소를 가지는 논리 블록에 대응하는 복수의 물리 블록들의 일 예를 도시하는 도면이다.
파일 시스템은 하나의 페이지의 데이터를 자유롭게 여러 차례 갱신(update)할 수 있다. 그러나 실제 플래시 메모리에서는 물리적으로 덮어쓰기가 이루어질 수 없으므로, 플래시 변환 계층은 동일한 물리 블록의 다음 페이지(빈 페이지)에 새롭게 갱신된 버전의 페이지 데이터를 쓰고(write), 갱신된 페이지의 이전 버전의 데이터를 저장하는 물리 페이지를 무효화(invalid)하여 표시한다. 무효화된 데이터를 포함하는 물리 블록을 더티 블록(dirty block)이라 표현하기도 한다.
이처럼 파일 시스템에서 하나의 페이지 또는 복수의 페이지들에 대한 데이터의 갱신이 반복되면, 플래시 변환 계층은 현재 활성화된 물리 블록 이외에 다른 물리 블록(빈 블록)을 선택하고, 선택된 빈 블록을 현재의 논리 주소에 추가적으로 대응시킨다. 이 때, 논리 블록 번호(LBN)와 직접적으로 대응하는 최초의 물리 블록을 데이터 블록(data block)이라 하고, 추가적으로 대응되는 물리 블록을 로그 블록(log block)이라 표현하기도 한다.
도 2(b)에서는 하나의 LBN에 4개의 물리 블록들이 대응하는 경우의 예가 도시되었다. 4개의 물리 블록들 중 최초의 물리 블록을 데이터 블록, 나머지 3개의 물리 블록들을 로그 블록이라 표현할 수 있다.
파일 시스템에서 데이터의 갱신이 반복됨에 따라 물리적으로 많은 수의 블록들이 하나의 LBN에 대응하기 위하여 이용된다. 따라서 파일 시스템이 파악하고 있는 것보다 실제로 플래시 메모리의 가용(available) 저장 공간이 빠르게 감소할 수 있다. 플래시 메모리의 물리적인 가용 저장 공간이 일정한 임계 수준보다 감소하면, 플래시 변환 계층은 물리적으로 상이한 위치에 분포하고 있는 데이터(하나의 LBN에 대응하는 데이터)를 하나의 물리 블록에 모으기 위한 연산을 수행하는데, 이러한 연산을 합병 연산(merge operation)이라 한다.
합병 연산이 수행되면 최신 버전의 데이터가 하나의 물리 블록(빈 블록, 타겟 블록)에 저장된다. 이 때, 저장되는 순서는 논리 페이지 주소에 맞게 저장될 수 있는데, 이를 인-플레이스(in-place)라 표현하기도 한다.
최신 버전의 데이터가 새로운 타겟 블록에 모두 저장되면, 이전 버전의 데이터가 저장된 물리 블록들은 소거(erase)되어 가용 저장 공간을 만들어 낸다.
합병 연산 자체는 각 블록들의 정보를 조회하기 때문에 마모도 평준화에 영향을 미치고, 플래시 메모리 장치의 연한이 감소하는 요인이 될 수 있다. 이에 따라, 본 발명에서는 합병 연산을 수행하는 과정에서 마모도 평준화를 고려하여, 마모도 평준화를 위한 불필요한 정보 조회가 없도록 하고 있다. 일반적인 마모도 평준화에 대한 상세한 설명은 공지기술로서 이미 배경기술에서 살펴보았으므로, 이에 관한 설명은 생략하기로 하고, 이하 합병 연산 시 마모도 평준화를 고려하는 본 발명의 기술에 관하여 살펴보기로 한다.
본 발명에 따른 메모리 컨트롤러(200)는 도 2에 도시된 바와 같이, 핫 페이지 판정부(230)와 주소 변환부(240) 등을 포함한다.
핫 페이지 판정부(230)는 블록 내 페이지들을 소정의 기준에 따라 핫 페이지(hot page)와 콜드 페이지(cold page)로 구분하며, 이와 관련된 정보들은 일시적으로 RAM(220)에 저장된다. 상기 소정의 기준은 페이지의 업데이트 빈도 또는 페이지에 기록할 데이터의 속성(특성) 중 적어도 하나 이상을 포함한다. 즉, 빈번한 업데이트가 일어나는 페이지나, 페이지에 저장되는 파일의 속성을 고려하여 해당 페이지를 핫 페이지로 정의한다. 파일의 속성은 파일에 관한 메타정보로, 파일의 작성/수정 날짜나 확장자 등을 의미하며, 예를 들어 파일의 작성 날짜가 최근이거나, 파일의 수정 날짜가 여러 번 기록되어 있거나, 파일의 확장자가 hwp나 doc, ppt, xls, txt 등과 같이 여러 번 수정될 가능성이 있는 문서 작성 프로그램일 수 있다. 그리고 상기 소정의 기준이 페이지의 업데이트 빈도인 경우에는 그 횟수가 2번 이상이거나, 사용자의 의도로 정해진 횟수(a)일 수 있으며, 본 발명이 이에 한정되지는 않는다.
한편, 물리 블록이 여러 개의 핫 페이지를 보유할 경우에는 상기 물리 블록에서 빈번한 정보 갱신이 발생하기 때문에, 많은 지우기(소거) 연산이 발생될 수 있다. 따라서 합병 연산 시, 핫 페이지들을 분배하여 마모도 평준화를 수행하는 것이 바람직하며, 이를 위해 본 발명에서 주소 변환부(240)는 상기 구분된 핫 페이지가 복수개인 경우 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치한다. 상기 타겟 블록은 물리 블록에 저장된 데이터를 복사할 대상이 되는 물리 블록이다.
주소 변환부(240)는 상기 구분된 핫 페이지가 1개 이하이면, 논리 블록에 대응하는 기존의 적어도 하나 이상의 물리 블록에 저장된 데이터를 타겟 블록으로 복사하고, 상기 타겟 블록을 정보 블록으로 정의하며, 상기 기존의 적어도 하나 이상의 물리 블록을 소거한 후, 빈 블록으로 정의한다. 여기서, 정보 블록은 데이터가 저장된 블록이고, 빈 블록은 데이터가 저장되어 있지 않아 비어있는 블록을 의미한다.
주소 변환부(240)는 타겟 블록들 각각에 상기 구분된 핫 페이지들 각각이 배치되면, 상기 구분된 콜드 페이지들을 상기 타겟 블록들의 나머지 페이지에 순차적으로 배치한다. 만약, 상기 소정의 기준이 페이지의 업데이트 횟수라고 한다면, 핫 페이지 판정부(230)는 상기 횟수가 a이상인 페이지를 찾아, a이상인 페이지를 핫 페이지라고 정의하며, a미만인 페이지를 콜드 페이지라고 정의한다. 그리고 구분된 핫 페이지의 총 개수에 따라 일반 합병 연산을 수행할지, 개선된 합병 연산(핫 페이지들을 분배하는 합병 연산)을 수행할지를 결정한다. 즉, 핫 페이지의 개수가 0개이거나 1개일 때는 일반 합병 연산을 수행하지만, 핫 페이지의 개수가 2개 이상일 때는 핫 페이지를 분배해야 하기 때문에 본 발명에 따라 개선된 합병 연산을 수행한다.
일반 합병 연산은 다음과 같이 진행된다.
먼저, 메모리 컨트롤러(200)는 유효한 데이터를 기존의 정보 블록에서 옮기기 위해 타겟 블록을 검색한다. 그리고 정보 블록에 저장되어 있는 유효한 데이터를 타겟 블록으로 복사한 후, 타겟 블록을 새로운 정보 블록으로 정의하고, 상기 기존의 정보 블록에 소거 연산을 수행한 후, 상기 기존의 정보 블록을 빈 블록으로 정의한다.
개선된 합병 연산은 다음과 같이 진행된다.
먼저, 메모리 컨트롤러(200)가 새로운 정보 블록으로 정의할 타겟 블록을 검색하여, 기존의 정보 블록 내에 모든 유효한 데이터를 타겟 블록으로 복사하지 않고, 오직 하나의 핫 페이지만을 타겟 블록으로 옮긴다. 그리고 타겟 블록의 나머지를 콜드 페이지들로 채우고, 타겟 블록을 새로운 정보 블록으로 정의한 후, 기존의 정보 블록들을 지운다. 여기서, 주소 변환부(240)는 기존의 논리 블록에 대응하는 물리 블록과 다른 물리 블록에 위치하게 된 페이지들의 페이지 주소를 별도의 주소 매핑 테이블에 기록하여, 논리 블록과 물리 블록의 대응 정보 조회 시, 신속한 조회가 가능하도록 한다.
전술한 바와 같이, 합병 연산 시, 핫 페이지와 콜드 페이지를 구별하여, 핫 페이지들 각각을 빈 블록들에 분배함으로써, 특정 물리 블록에 집중될 수 있는 소거 연산을 피할 수 있으므로, 효율적으로 마모도 평준화를 수행할 수 있다. 즉, 본 발명에서는 합병 연산을 수행하는 동시에 마모도 평준화를 고려하여, 마모도 평준화를 위한 불필요한 정보 조회가 없기 때문에, 플래시 메모리 장치의 성능을 최대화하고, 그 사용 연한을 늘릴 수 있는 효과가 있다.
한편, 핫 페이지들 각각이 배치되는 서로 다른 타겟 블록들은 빈 블록들이므로, 핫 페이지들의 수만큼 타겟 블록들을 선택하여 핫 페이지들을 분산시키는 것에 그친다면 다수의 빈 블록들을 소진하게 되어 플래시 메모리 장치(300)의 데이터 저장 효율이 저하될 수 있다. 따라서 본 발명에서 주소 변환부(240)는 상기 구분된 핫 페이지가 복수개이면 핫 페이지를 포함하지 않고 콜드 페이지만을 포함하고 있는 적어도 하나 이상의 빅팀 블록(victim block)을 선택하고, 상기 빅팀 블록의 콜드 페이지의 적어도 일부를 복수의 타겟 블록들에 분산하여 배치한다. 이와 같은 개선된 합병 연산에 의하여 LBN과 동일한 수의 물리 블록들에 데이터가 저장되고 이전 버전의 블록들은 소거됨으로써 가용 저장 공간을 충분히 만들어 낼 수 있다.
예를 들어, 도 3의 (a)에 도시된 바와 같이 하나의 정보 블록 내 2개의 핫 페이지와 콜드 페이지들이 배치되어 있다고 하자. 이 경우, 핫 페이지들 각각을 서로 다른 빈 블록들에 배치하기 위해 2개의 빈 블록을 타겟 블록으로서 할당하고, 기존의 정보 블록에는 소거 연산을 수행하여, 상기 기존의 정보 블록을 빈 블록으로 정의한다. 이는 하나의 정보 블록에 저장된 유효 데이터를 2개의 빈 블록으로 나누어 저장하게 되므로, 플래시 메모리 장치(300)의 가용 저장 공간이 저하되는 요인이 될 수 있다.
하지만, 도 3의 (b)와 같이 핫 페이지 분배 시, 기존의 정보 블록 외에 빅팀 블록을 선택한 후 핫 페이지들 각각을 빈 블록(타겟 블록)에 배치하고, 상기 타겟 블록에 빅팀 블록의 콜드 페이지들을 분산하여 배치하면, 2개의 정보 블록에 저장된 유효 데이터를 2개의 빈 블록으로 나누어 저장하게 되므로, 플래시 메모리 장치(300)의 가용 저장 공간이 줄어들지 않는다. 이때, 주소 변환부(240)는 마모도 평준화를 위해 핫 페이지를 포함하지 않는 기존의 데이터 블록 중 소거 횟수가 소정의 기준치 이하 또는 최소인 블록을 빅팀 블록으로 선택하는 것이 바람직하다.
<방법에 대한 설명>
본 발명의 일실시예에 따른 메모리 컨트롤러의 데이터 관리방법에 대해서 도 4에 도시된 흐름도와 더불어 도 5, 6에 도시된 예시도를 참조하여 설명하되, 편의상 순서를 붙여 설명한다.
1. 페이지들이 소정의 기준을 만족하는지 판단< S410 >
메모리(100)의 물리 블록들 내 페이지들이 소정의 기준을 만족하는지 판단하는 단계로, 상기 소정의 기준은 페이지의 업데이트 빈도 또는 페이지에 기록할 데이터의 속성(특성) 중 적어도 하나 이상을 포함한다. 즉, 빈번한 업데이트가 일어나는 페이지나, 페이지에 저장되는 파일의 속성을 고려하여 해당 페이지를 핫 페이지로 정의하며, 핫 페이지에는 핫 데이터가 저장되고, 콜드 페이지에는 콜드 데이터가 저장된다. 파일의 속성은 파일에 관한 메타정보로 파일의 작성/수정 날짜나 확장자 등을 의미한다. 도 4에서는 상기 소정의 기준이 페이지의 업데이트 빈도인 경우가 도시되었으며, 그 횟수가 2번 이상이거나, 사용자의 의도로 정해진 횟수일 수 있으며, 본 발명이 이에 한정되지는 않는다.
한편, 물리 블록이 여러 개의 핫 페이지를 보유할 경우에는 상기 물리 블록에서 빈번한 정보 갱신이 발생하기 때문에, 많은 지우기 연산이 발생될 수 있다. 따라서 합병 연산 시, 핫 페이지들을 분배하여 마모도 평준화를 수행하는 것이 바람직하며, 이를 위해 본 발명에서는 이하 단계들이 수행된다.
2. 핫 페이지와 콜드 페이지 구분< S420 >
상기 단계 S410에 의해 물리 블록 내 페이지들을 핫 페이지와 콜드 페이지로 구분한다.
3. 모든 페이지들을 조회하였는지 판단< S430 >
상기 단계 S420에서 구분된 핫 페이지와 콜드 페이지 외에 다른 페이지들이 있는지 검색하여, 모든 페이지들이 핫 페이지 또는 콜드 페이지로 구분될 수 있도록 한다.
4. 핫 페이지의 개수가 2개 이상인지 판단< S440 >
모든 페이지들이 핫 페이지 또는 콜드 페이지로 구분되었다면, 상기 구분된 핫 페이지가 복수개인지 판단한다.
다음, 상기 구분된 핫 페이지의 총 개수에 따라 일반 합병 연산을 수행할지<S450>, 본 발명에 의해 개선된 합병 연산(핫 페이지들을 분배하는 합병 연산)을 수행할지<S460>를 결정한다. 즉, 핫 페이지의 개수가 0개이거나 1개일 때는 일반 합병 연산을 수행하지만, 핫 페이지의 개수가 2개 이상일 때는 핫 페이지를 분배해야 하기 때문에 개선된 합병 연산을 수행한다.
먼저, 구분된 핫 페이지가 1개 이하인 경우를 살펴보기로 한다.
5. 합병 연산 수행< S450 >
5-1. 타겟 블록 검색< S451 >
유효한 데이터를 기존의 정보 블록 A에서 옮기기 위해 타겟 블록 B를 검색한다. 본 발명에서 정보 블록은 데이터가 저장된 블록이며, 타겟 블록은 물리 블록에 저장된 데이터를 복사할 대상이 되는 물리 블록이다.
5-2. 타겟 블록으로 복사< S452 >
논리 블록에 대응하는 기존의 적어도 하나 이상의 물리 블록(정보 블록 A)에 저장된 유효한 데이터를 타겟 블록 B로 복사한다.
5-3. 타겟 블록을 새로운 정보 블록으로 정의< S453 >
타겟 블록 B를 새로운 정보 블록으로 정의한다.
5-4. 기존의 정보 블록 소거 후, 빈 블록으로 정의< S454 >
상기 기존의 적어도 하나 이상의 정보 블록 A를 소거한 후, 빈 블록으로 정의한다.
다음에는 구분된 핫 페이지가 2개 이상인 경우를 살펴보기로 한다.
6. 개선된 합병 연산 수행< S460 >
구분된 핫 페이지가 복수개인 경우, 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치하고, 구분된 콜드 페이지들을 상기 타겟 블록들의 나머지 페이지에 순차적으로 배치하는 단계로, 다음과 같이 진행된다.
6-1. 타겟 블록 검색< S461 >
먼저, 새로운 정보 블록으로 정의할 타겟 블록을 검색한다.
6-2. 핫 페이지들 분배< S462 >
구분된 핫 페이지들 각각을 서로 다른 타겟 블록들로 옮긴다.
6-3. 콜드 페이지 이동< S463 >
타겟 블록의 나머지를 하나 이상의 콜드 페이지로 채운다.
6-4. 타겟 블록을 새로운 정보 블록으로 정의< S464 >
마지막으로, 타겟 블록을 새로운 정보 블록으로 정의한다.
6-5. 기존의 정보 블록 소거 후, 빈 블록으로 정의< S465 >
기존의 정보 블록을 지우고, 상기 기존의 정보 블록을 빈 블록으로 정의한다.
전술한 바와 같이, 합병 연산 시, 핫 페이지와 콜드 페이지를 구별하여, 핫 페이지들을 각각 빈 블록들에 고르게 분배함으로써, 특정 물리 블록에 집중될 수 있는 소거 연산을 피할 수 있으므로, 효율적인 마모도 평준화를 수행할 수 있다.
한편, 핫 페이지들 각각이 배치되는 서로 다른 타겟 블록들은 빈 블록들이므로, 핫 페이지들의 수만큼 빈 블록들을 소진해야 하므로, 플래시 메모리 장치(300)의 가용 저장 공간이 저하될 수 있다. 따라서 도 5와 같이 본 발명에 따른 개선된 합병 연산 시(S560)에는 먼저 새로운 정보 블록으로 정의할 타겟 블록을 검색하고(S561), 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들로 옮긴 후(S562), 타겟 블록의 나머지를 하나 이상의 콜드 페이지로 채운다(S563). 그리고 핫 페이지를 포함하지 않는 블록들 중 소거 횟수가 소정의 기준치 이하 또는 최소인 빅팀 블록을 선택하고(S564), 상기 빅팀 블록의 콜드 페이지의 적어도 일부를 상기 복수의 타겟 블록들에 분산하여 배치한다(S565). 빅팀 블록 선택 시에는 소거 횟수가 소정의 기준치 이하 또는 최소인 블록을 빅팀 블록으로 선택하여, 효율적인 마모도 평준화를 수행할 수 있도록 하는 것이 바람직하다. 마지막으로는 타겟 블록을 새로운 정보 블록으로 정의하고(S566), 기존의 정보 블록을 지운 후, 상기 기존의 정보 블록을 빈 블록으로 정의한다(S567). 이러한 단계들과 관련하여, 도 6을 참조하여 살펴보기로 한다.
도 6의 (a)를 살펴보면, LBN 0에 대응하는 데이터 블록(PBN 0)이 있고, PBN 0에 대한 기록들이 저장된 로그 블록들(PBN 1, 2, 3)이 있으며, 상기 PBN 2, 3 내에는 각각 핫 페이지들(hot page 1, 2)이 배치되어 있다. 이 경우, 핫 페이지 분배는 다음과 같이 진행된다.
먼저, hot page 1, 2를 각각 배치시킬 빈 블록(PBN 10, 11)을 검색하여, 배치시킨다(①, ②). 그리고 PBN 0의 cold pages 1을 PBN 10으로 복사하고(③), PBN 0, 2, 3을 소거한 후, 빈 블록으로 정의한다. 다음, 콜드 페이지들(cold pages 2)로 채워져 있는 빅팀 블록(PBN 4)을 검색하여, PBN 4의 cold pages 2를 PBN 10, 11으로 배치시킨다. 여기서, 배치는 PBN 10, 11에 데이터가 저장될 수 있는 나머지 공간을 고려하여, (b)와 같이 cold pages 2를 cold pages α, β로 나누어 분배할 수도 있다(④).
이때, 본 발명에서는 개선된 합병 연산에 의하여 기존의 논리 블록에 대응하는 물리 블록과 다른 물리 블록에 위치하게 된 페이지들을 도 7과 같이 별도의 주소 매핑 테이블(address mapping table)로 관리하여, 논리 블록과 물리 블록의 대응 정보 조회 시, 신속한 조회가 가능하도록 한다. 즉, LSN(Logic Sector Number) 53 내지 63에 해당하는 데이터와 LSN 32 내지 52에 해당하는 데이터는 동일한 LBN에 속하는 데이터이지만, 본 발명의 개선된 합병 연산에 의하여 LSN 53 내지 63에 해당하는 데이터와 LSN 32 내지 52에 해당하는 데이터가 서로 다른 물리 블록에 저장된다. 이 때, LBN - PBN 매핑 테이블에서는 LSN 32 내지 63에 해당하는 LBN과 PBN 11 (LSN 32 내지 52가 속한 물리 블록의 물리 주소)을 매핑시켜 저장하고, PBN 10에 별도로 저장된 LSN 53 내지 63에 해당하는 물리 주소 (PSN, Physical Sector Number)는 도 7의 별도의 주소 매핑 테이블에 저장하여 관리한다.
한편, 본 발명의 일실시예에 따른 데이터의 관리방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
300: 플래시 메모리 장치
100: 메모리
200: 메모리 컨트롤러

Claims (13)

  1. 복수의 페이지들을 포함하는 블록을 복수개 포함하는 메모리의 논리 주소와 물리 주소 간의 대응을 관리하는 메모리 컨트롤러에 있어서,
    블록 내 페이지들을 소정의 기준에 따라 핫 페이지(hot page)와 콜드 페이지(cold page)로 구분하는 핫 페이지 판정부; 및
    상기 구분된 핫 페이지가 복수개인 경우 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치하는 주소 변환부를 포함하는
    메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 소정의 기준은 상기 페이지의 업데이트 빈도 또는 상기 페이지에 기록될 데이터의 속성 중 적어도 하나 이상을 포함하는
    메모리 컨트롤러.
  3. 제1항에 있어서,
    상기 주소 변환부는
    상기 타겟 블록들 각각에 상기 구분된 핫 페이지들 각각이 배치되면, 상기 구분된 콜드 페이지들을 상기 타겟 블록들의 나머지 페이지에 순차적으로 배치하는
    메모리 컨트롤러.
  4. 제1항에 있어서,
    상기 주소 변환부는
    상기 구분된 핫 페이지가 1개 이하이면, 논리 블록에 대응하는 기존의 적어도 하나 이상의 물리 블록에 저장된 데이터를 타겟 블록으로 복사하고, 상기 타겟 블록을 정보 블록으로 정의하며, 상기 기존의 적어도 하나 이상의 물리 블록을 소거한 후, 상기 소거된 물리 블록을 빈 블록으로 정의하는
    메모리 컨트롤러.
  5. 제1항에 있어서,
    상기 주소 변환부는
    상기 구분된 핫 페이지가 복수개이면, 적어도 하나 이상의 빅팀 블록 - 상기 빅팀 블록은 핫 페이지를 포함하지 않음 - 을 선택하고, 상기 빅팀 블록의 콜드 페이지의 적어도 일부를 상기 복수의 타겟 블록들에 분산하여 배치하는
    메모리 컨트롤러.
  6. 제5항에 있어서,
    상기 주소 변환부는
    소거 횟수가 소정의 기준치 이하 또는 최소인 블록을 상기 빅팀 블록으로 선택하는
    메모리 컨트롤러.
  7. 제1항에 있어서,
    상기 주소 변환부는
    기존의 논리 블록에 대응하는 물리 블록과 다른 물리 블록에 위치하게 된 페이지들의 페이지 주소를 별도의 주소 매핑 테이블(address mapping table)에 기록하는
    메모리 컨트롤러.
  8. 복수의 페이지들을 포함하는 블록을 복수개 포함하는 메모리의 논리 주소와 물리 주소 간의 대응을 관리하는 메모리 컨트롤러의 데이터 관리방법에 있어서,
    블록 내 페이지들을 소정의 기준에 따라 핫 페이지(hot page)와 콜드 페이지(cold page)로 구분하는 단계; 및
    상기 구분된 핫 페이지가 복수개인 경우 상기 구분된 핫 페이지들 각각을 서로 다른 타겟 블록들에 배치하는 단계를 포함하는
    메모리 컨트롤러의 데이터 관리방법.
  9. 제8항에 있어서,
    상기 소정의 기준은 상기 페이지의 업데이트 빈도 또는 상기 페이지에 기록될 데이터의 속성 중 적어도 하나 이상을 포함하는
    메모리 컨트롤러의 데이터 관리방법.
  10. 제8항에 있어서,
    상기 타겟 블록들 각각에 상기 구분된 핫 페이지들 각각이 배치되면, 상기 구분된 콜드 페이지들을 상기 타겟 블록들의 나머지 페이지에 순차적으로 배치하는
    메모리 컨트롤러의 데이터 관리방법.
  11. 제8항에 있어서,
    상기 구분된 핫 페이지가 복수개인 경우 핫 페이지를 포함하지 않는 블록들 중 소거 횟수가 소정의 기준치 이하 또는 최소인 빅팀 블록을 선택하는 단계; 및
    상기 빅팀 블록의 콜드 페이지의 적어도 일부를 상기 복수의 타겟 블록들에 분산하여 배치하는 단계를 더 포함하는
    메모리 컨트롤러의 데이터 관리 방법.
  12. 제8항에 있어서,
    기존의 논리 블록에 대응하는 물리 블록과 다른 물리 블록에 위치하게 된 페이지들의 페이지 주소를 별도의 주소 매핑 테이블에 기록하는 단계를 더 포함하는 메모리 컨트롤러의 데이터 관리방법.
  13. 제8항 내지 제12항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체.
KR1020110080360A 2011-08-12 2011-08-12 메모리 컨트롤러 및 이의 데이터 관리방법 KR101257691B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020110080360A KR101257691B1 (ko) 2011-08-12 2011-08-12 메모리 컨트롤러 및 이의 데이터 관리방법
PCT/KR2012/001354 WO2013024952A1 (ko) 2011-08-12 2012-02-22 메모리 컨트롤러 및 이의 데이터 관리방법
US14/177,924 US9304905B2 (en) 2011-08-12 2014-02-11 Memory controller and data management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110080360A KR101257691B1 (ko) 2011-08-12 2011-08-12 메모리 컨트롤러 및 이의 데이터 관리방법

Publications (2)

Publication Number Publication Date
KR20130017748A true KR20130017748A (ko) 2013-02-20
KR101257691B1 KR101257691B1 (ko) 2013-04-24

Family

ID=47715254

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110080360A KR101257691B1 (ko) 2011-08-12 2011-08-12 메모리 컨트롤러 및 이의 데이터 관리방법

Country Status (3)

Country Link
US (1) US9304905B2 (ko)
KR (1) KR101257691B1 (ko)
WO (1) WO2013024952A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150062019A (ko) * 2013-11-28 2015-06-05 한양대학교 에리카산학협력단 메모리 장치 및 그 동작 방법
KR101630085B1 (ko) * 2014-12-09 2016-06-13 주식회사 지큐브 데이터 속성에 따른 플래시 메모리의 데이터 저장 블록 배치방법
KR20200040044A (ko) * 2018-10-08 2020-04-17 강원대학교산학협력단 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법
US10646957B2 (en) 2016-12-22 2020-05-12 Samsung Display Co., Ltd. Flexible display panel, method for manufacturing flexible display panel, and apparatus for manufacturing flexible display panel
CN113316766A (zh) * 2019-05-29 2021-08-27 Lg电子株式会社 用于执行启动过程的数字装置及其控制方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101453313B1 (ko) 2013-03-25 2014-10-22 아주대학교산학협력단 플래시 메모리 기반의 페이지 주소 사상 방법 및 시스템
KR20160028680A (ko) * 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US10318414B2 (en) 2014-10-29 2019-06-11 SK Hynix Inc. Memory system and memory management method thereof
KR102258126B1 (ko) 2015-03-19 2021-05-28 삼성전자주식회사 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
KR102402783B1 (ko) 2015-05-11 2022-05-27 삼성전자 주식회사 전자 장치 및 이의 페이지 병합 방법
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
TWI571882B (zh) * 2016-02-19 2017-02-21 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
US9959058B1 (en) 2016-03-31 2018-05-01 EMC IP Holding Company LLC Utilizing flash optimized layouts which minimize wear of internal flash memory of solid state drives
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
KR20180059208A (ko) 2016-11-25 2018-06-04 삼성전자주식회사 리클레임 제어부를 갖는 메모리 콘트롤러 및 그에 따른 동작 제어 방법
WO2018124912A1 (en) 2016-12-28 2018-07-05 EMC IP Holding Company LLC Data storage system tiering accounting for limited write endurance
US10235098B1 (en) * 2017-01-10 2019-03-19 Pavilion Data Systems, Inc. Writable clones with minimal overhead
DE102017119065B4 (de) * 2017-08-21 2020-12-10 Infineon Technologies Ag Aktualisieren eines Speichers
US10891239B2 (en) * 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
CN110489051A (zh) * 2018-05-14 2019-11-22 慧荣科技股份有限公司 数据储存装置及系统信息的编程方法
US11520514B2 (en) * 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
CN109388579A (zh) * 2018-09-18 2019-02-26 深圳市德名利电子有限公司 一种闪存冷数据识别方法
CN109753443B (zh) * 2019-01-12 2021-05-18 湖南国科微电子股份有限公司 一种数据处理方法、装置及电子设备
TWI688958B (zh) * 2019-08-23 2020-03-21 群聯電子股份有限公司 冷區域判斷方法、記憶體控制電路單元與記憶體儲存裝置
US11513952B2 (en) * 2020-07-01 2022-11-29 Micron Technology, Inc. Data separation for garbage collection
US11645198B2 (en) * 2020-12-08 2023-05-09 International Business Machines Corporation Buffer pool maintenance improvement
CN116795297B (zh) * 2023-08-18 2023-11-17 江苏云途半导体有限公司 一种存储设备、存储方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924092A (en) 1997-02-07 1999-07-13 International Business Machines Corporation Computer system and method which sort array elements to optimize array modifications
JP4316824B2 (ja) * 2001-05-31 2009-08-19 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US7089349B2 (en) 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
JP4000124B2 (ja) * 2004-03-26 2007-10-31 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
KR20080010965A (ko) 2006-07-28 2008-01-31 엠텍비젼 주식회사 메모리 장치 및 메모리 장치의 불량블록 관리 방법
KR100874702B1 (ko) 2006-10-02 2008-12-18 삼성전자주식회사 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
KR20080033649A (ko) 2006-10-12 2008-04-17 삼성전자주식회사 머지 빈도를 줄일 수 있는 플래쉬 메모리 시스템 및 그관리 방법
KR100845552B1 (ko) 2006-12-18 2008-07-10 (재)대구경북과학기술연구원 Ftl의 어드레스 매핑 방법
TW200917277A (en) 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
KR100941423B1 (ko) * 2008-02-21 2010-02-11 인하대학교 산학협력단 메모리의 페이지 할당 방법 및 이를 수행하기 위한프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체
TWI389125B (zh) 2008-07-18 2013-03-11 A Data Technology Co Ltd 記憶體儲存裝置及其控制方法
US8190832B2 (en) * 2009-01-29 2012-05-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
KR20110016320A (ko) 2009-08-11 2011-02-17 주식회사 유니듀 플래시 메모리를 블록 그룹으로 구분하여 관리하는 방법
US8321646B2 (en) * 2010-04-13 2012-11-27 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier
US9015441B2 (en) * 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150062019A (ko) * 2013-11-28 2015-06-05 한양대학교 에리카산학협력단 메모리 장치 및 그 동작 방법
KR101630085B1 (ko) * 2014-12-09 2016-06-13 주식회사 지큐브 데이터 속성에 따른 플래시 메모리의 데이터 저장 블록 배치방법
US10646957B2 (en) 2016-12-22 2020-05-12 Samsung Display Co., Ltd. Flexible display panel, method for manufacturing flexible display panel, and apparatus for manufacturing flexible display panel
KR20200040044A (ko) * 2018-10-08 2020-04-17 강원대학교산학협력단 하이브리드 디바이스를 포함하는 비휘발성 메모리 장치 및 그 동작 방법
CN113316766A (zh) * 2019-05-29 2021-08-27 Lg电子株式会社 用于执行启动过程的数字装置及其控制方法
CN113316766B (zh) * 2019-05-29 2023-09-26 Lg电子株式会社 用于执行启动过程的数字装置及其控制方法

Also Published As

Publication number Publication date
US20140164687A1 (en) 2014-06-12
WO2013024952A1 (ko) 2013-02-21
US9304905B2 (en) 2016-04-05
KR101257691B1 (ko) 2013-04-24

Similar Documents

Publication Publication Date Title
KR101257691B1 (ko) 메모리 컨트롤러 및 이의 데이터 관리방법
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
EP3301584B1 (en) Storage system, storage management device, storage device, hybrid storage device, and storage management method
KR100789406B1 (ko) 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US9898200B2 (en) Memory device having a translation layer with multiple associative sectors
KR101477047B1 (ko) 메모리 시스템 및 그것의 블록 병합 방법
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
CN112130749A (zh) 数据储存装置以及非挥发式存储器控制方法
CN106326132B (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
KR101191650B1 (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
US20110264848A1 (en) Data recording device
Lin et al. Flash-aware linux swap system for portable consumer electronics
KR101353967B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101373613B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치
KR101353968B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 기록된 데이터를 교체 및 가비지 콜렉션하기 위한 데이터 처리방법
CN117453129A (zh) 一种基于ZNS SSDs的Zone重置优化方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160325

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170327

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180411

Year of fee payment: 6