KR101861545B1 - 저장 장치의 데이터 관리 방법 - Google Patents

저장 장치의 데이터 관리 방법 Download PDF

Info

Publication number
KR101861545B1
KR101861545B1 KR1020120000237A KR20120000237A KR101861545B1 KR 101861545 B1 KR101861545 B1 KR 101861545B1 KR 1020120000237 A KR1020120000237 A KR 1020120000237A KR 20120000237 A KR20120000237 A KR 20120000237A KR 101861545 B1 KR101861545 B1 KR 101861545B1
Authority
KR
South Korea
Prior art keywords
block
page
recording time
logical page
stored
Prior art date
Application number
KR1020120000237A
Other languages
English (en)
Other versions
KR20130079007A (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 KR1020120000237A priority Critical patent/KR101861545B1/ko
Priority to US13/684,263 priority patent/US9122585B2/en
Publication of KR20130079007A publication Critical patent/KR20130079007A/ko
Application granted granted Critical
Publication of KR101861545B1 publication Critical patent/KR101861545B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47LDOMESTIC WASHING OR CLEANING; SUCTION CLEANERS IN GENERAL
    • A47L13/00Implements for cleaning floors, carpets, furniture, walls, or wall coverings
    • A47L13/10Scrubbing; Scouring; Cleaning; Polishing
    • A47L13/20Mops
    • A47L13/24Frames for mops; Mop heads
    • A47L13/254Plate frames
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/7202Allocation control and policies
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

Abstract

저장 장치의 데이터 관리 방법이 제공된다. 저장 장치의 데이터 관리 방법은, 호스트로부터 논리 페이지를 제공받아 논리 페이지의 실제 기록 시간(actual time stamp)을 계산하고, 논리 페이지가 저장된 저장 장치의 블록을 찾아 블록의 기록 시간(time stamp)과, 블록에 저장된 상기 논리 페이지의 페이지 오프셋(page offset)을 탐지하고, 블록의 기록 시간과 페이지 오프셋을 이용하여, 블록에 저장된 논리 페이지의 근사 기록 시간(approximate time stamp)을 계산하고, 실제 기록 시간과 근사 기록 시간의 차이가 설정된 임계값보다 작으면 논리 페이지를 제1 상태의 논리 페이지로 판단하고, 실제 기록 시간과 상기 근사 기록 시간의 차이가 설정된 임계값보다 크면 상기 논리 페이지를 상기 제1 상태와 다른 제2 상태의 논리 페이지로 판단하는 것을 포함한다.

Description

저장 장치의 데이터 관리 방법{Method for managing data in storage device}
본 발명은 저장 장치의 데이터 관리 방법에 관한 것이다.
일반적으로 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리 장치가 많이 사용되고 있다.
비휘발성 메모리 장치는 데이터의 기록 및 삭제가 자유로운 RAM(Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 ROM(Read Only Memory)의 장점을 동시에 지니고 있다.
또한, 비휘발성 메모리 장치 중에서 주로 사용되는 플래시 메모리 장치는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기 등에 적합하다.
이러한 비휘발성 메모리 장치는 데이터의 갱신이 발생하는 경우, 기존 데이터가 기록되어 있던 페이지는 유효하지 않은 상태로 유지되고, 새로운 페이지를 할당받아 갱신될 데이터를 기록하게 된다. 이때, 비휘발성 메모리에 가용 공간이 부족하게 되면, 유효한 페이지만을 모으는 가비지 컬렉션(Garbage Collection)을 수행하여 가용 공간을 늘리게 된다.
한편, 이렇게 가비지 컬렉션이 수행되는데 소요되는 시간은 비휘발성 메모리 장치의 성능에 부하로 작용하게 된다. 따라서, 비휘발성 메모리 장치가 작동하는 중에 가비지 컬렉션에 소요되는 시간이 작을수록 장치의 전체 성능이 향상될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 가비지 컬렉션에 소요되는 시간이 단축되어 저장 장치의 데이터 관리 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 저장 장치의 데이터 관리 방법은, 호스트로부터 논리 페이지를 제공받아 논리 페이지의 실제 기록 시간(actual time stamp)을 계산하고, 논리 페이지가 저장된 저장 장치의 블록을 찾아 블록의 기록 시간(time stamp)과, 블록에 저장된 상기 논리 페이지의 페이지 오프셋(page offset)을 탐지하고, 블록의 기록 시간과 페이지 오프셋을 이용하여, 블록에 저장된 논리 페이지의 근사 기록 시간(approximate time stamp)을 계산하고, 실제 기록 시간과 근사 기록 시간의 차이가 설정된 임계값보다 작으면 논리 페이지를 제1 상태의 논리 페이지로 판단하고, 실제 기록 시간과 상기 근사 기록 시간의 차이가 설정된 임계값보다 크면 상기 논리 페이지를 상기 제1 상태와 다른 제2 상태의 논리 페이지로 판단하는 것을 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 저장 장치의 데이터 관리 방법은, 호스트로부터 논리 페이지를 제공받아 논리 페이지가 저장된 저장 장치의 블록을 탐지하고, 탐지된 블록이 최근 사용 블록 리스트(recently used block list)에 포함된 블록이면 논리 페이지를 제1 상태의 논리 페이지로 판단하고, 탐지된 블록이 최근 사용 블록 리스트에 포함되지 않은 블록이면 논리 페이지를 제1 상태와 다른 제2 상태의 논리 페이지로 판단하는 것을 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예들에 따른 저장 장치에 포함된 블록의 유형들을 도시한 도면이다.
도 2는 일반적인 가비지 컬렉션의 수행 과정을 도시한 순서도이다.
도 3은 핫-콜드 페이지 분리(hot-cold page separation) 개념을 설명하기 위한 도면이다.
도 4는 각 페이지 별로 기록 시간이 저장된 블록을 도시한 도면이다.
도 5는 하나의 블록에 1개의 기록 시간이 저장된 블록을 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
도 7은 하나의 블록에 2개의 기록 시간이 저장된 블록을 도시한 도면이다.
도 8은 본 발명의 다른 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
도 9는 저장 장치에 포함된 다수의 블록에 대해 각 블록의 사용 상태를 도시한 도면이다.
도 10은 본 발명의 일 실시예에 따른 최근 사용 블록 리스트를 도시한 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
도 12는 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 13은 도 12의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
본 명세서에서 기술하는 실시예들은 본 발명의 이상적인 구성도를 참고하여 설명될 것이다. 따라서, 제조 기술 등에 의해 구성도의 형태나 구조가 변형될 수 있다. 따라서, 본 발명의 실시예들은 도시된 특정 형태로 제한되는 것이 아니라 그로부터 변형된 형태도 포함하는 것이다. 즉, 도시된 구성은 본 발명의 특정 형태를 예시하기 위한 것이고, 발명의 범주를 제한하기 위한 것은 아니다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
구체적인 본 발명의 실시예들에 대한 설명에 앞서, 먼저 도 1을 참조하여, 본 명세서에서 사용되는 용어들에 대해 정의하도록 한다.
도 1은 본 발명의 실시예들에 따른 저장 장치에 포함된 블록의 유형들을 도시한 도면이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 저장 장치에는 다양한 형태의 다수의 블록이 포함될 수 있다. 본 실시예에서, 이러한 블록의 종류로는, 도시된 것과 같이 프리 블록(free block), 오픈 블록(open block), 풀 블록(full block) 등을 들 수 있다.
이하에서는, 본 발명의 실시예들에 따른 저장 장치의 한 예로, 비휘발성 메모리 장치(더욱 구체적으로, 플래시 메모리 장치(flash memory device))를 예로 들어 설명할 것이나, 본 발명의 저장 장치가 이에 제한되는 것은 아니다.
프리 블록은, 도시된 것과 같이 블록(B1) 내에 논리 페이지가 하나도 포함되지 않은 블록을 의미한다. 이러한 프리 블록은 비휘발성 메모리 장치가 처음 구동할 당시 가장 많이 존재하게 되고, 장치의 사용시간이 경과할수록 점점 줄어들게 된다. 그리고, 장치의 사용시간이 더욱 경과하게 되어 장치 내에 프리 블록의 개수가 일정 수 이하가 되면, 비휘발성 메모리 장치는 가비지 컬렉션(garbage collection) 등을 통해 이러한 프리 블록을 새로 생성하게 된다.
도 1에는, 비휘발성 메모리 장치에 포함된 하나의 블록(B1)에 최대 8개의 논리 페이지(logical page)가 저장되는 것이 도시되어 있으나, 본 발명이 이러한 예시에 제한되는 것은 아니다. 필요에 따라, 하나의 블록(B1)에는 이보다 더 많은 수의 논리 페이지가 저장될 수도 있고, 이보다 더 적은 수의 논리 페이지가 저장될 수도 있다.
오픈 블록은, 도시된 것과 같이 불록(B2, B3) 내에 일정 수의 논리 페이지가 저정되어 있으나, 블록이 최대 저장할 수 있는 논리 페이지의 수(예를 들어, 8개)만큼의 논리 페이지는 아직 저장되지 않은 블록을 의미한다. 예를 들어, 제2 블록(B2)과 제3 블록(B3)은 각각 최대 8개의 논리 페이지를 저장할 수 있으나, 제2 블록(B2)에는 3개의 논리 페이지만 저장되어 있으며, 제3 블록(B3)에는 6개의 논리 페이지만 저장되어 있다.
호스트로부터 논리 페이지가 비휘발성 메모리 장치로 입력되면, 입력된 논리 페이지는 일반적으로 이러한 오픈 블록(B2, B3)에 저장되게 된다. 한편, 블록에 이미 저장된 논리 페이지에 대해 호스트로부터 갱신이 일어나는 경우, 기존에 저장되어 있던 블록 내의 논리 페이지는 무효화(invalidated)된다. 다시말해, 동일한 논리 페이지가 호스트로부터 다시 입력될 경우, 기존 블록(B3) 내에 저장된 논리 페이지는 무효 페이지(invalid page)로 변경되고, 새로운 블록(예를 들어, 프리 블록 또는 또 다른 오픈 블록)에 새로 입력 받은 논리 페이지가 저장되게 된다. 즉, 도 1의 제3 블록(B3)의 무효 페이지(invalid page)는 이미 제3 블록(B3)에 저장되어 있던 논리 페이지가 호스트에 의해 갱신되었음을 의미한다.
풀 블록은, 도시된 것과 같이 불록(B4, B5)이 포함할 수 있는 최대 논리 페이지 개수(예를 들어, 8개)까지 논리 페이지가 저장된 블록을 의미한다. 도 1에서, 풀 블록은 도시된 것과 같이 하나의 블록에 8개의 논리 페이지가 저장된 블록을 의미할 수 있다. 이렇게 풀 블록에 저장된 논리 페이지들도 호스트로부터 갱신이 일어날 경우, 해당 페이지가 무효 페이지(invalid page)로 변경된다. 제5 블록(B5)은 풀 블록이 된후, 페이지 갱신에 의해 3개 페이지가 무효 페이지로 변경된 것이다.
다음 도 2를 참조하여, 일반적인 가비비 컬렉션의 수행 과정에 대해 설명한다.
도 2는 일반적인 가비지 컬렉션의 수행 과정을 도시한 순서도이다.
도 2를 참조하면, 먼저 대상 블록을 선정한다(S1). 일반적인 가비지 컬렉션 수행 과정에서, 이러한 대상 블록(target block)은 앞서 설명한 풀 블록 중에서 선정될 수 있다.
다음, 대상 블록에 저장된 유효(valid) 페이지를 프리 블록 또는 오픈 블록으로 이동한다(S2).
이어서, 대상 블록에 저장된 유효 페이지를 모두 삭제하여 대상 블록을 프리 블록으로 반환한다(S3).
일반적인 가비지 컬렉션 수행 과정에서, 상기 제1 단계(S1)에서는, 풀 블록 중 유효 페이지가 가장 적게 포함하는 풀 블록이 대상 블록으로 선정되게 된다. 다시 말해, 각 풀 블록에 포함된 무효 페이지 수를 카운트하여 무효 페이지가 가장 많이 저장된 풀 블록을 대상 블록으로 선정하는 IPC(Invalid Page Conut) 기법이 사용될 수 있다. 이렇게 하는 이유는, 이러한 풀 블록이 대상 블록으로 선정되어야만, 상기 제2 단계(S2)에서 이동시켜야 하는 유효 페이지량이 가장 작아지게 되기 때문이다. 이렇게, 상기 제2 단계(S2)에서 이동시켜야 하는 유효 페이지량이 가장 작아지게 되면, 전체 가비지 컬렉션 수행 과정에서의 오버헤드(overhead)가 작아질 수 있다. 따라서, 가비지 컬렉션 수행에 따른 비휘발성 메모리 장치의 성능 저하가 가장 작을 수 있다.
다음, 도 3을 참조하여, 핫-콜드 페이지 분리(hot-cold page separation)에 대해 설명하도록 한다.
도 3은 핫-콜드 페이지 분리(hot-cold page separation) 개념을 설명하기 위한 도면이다.
먼저, 도 3에 도시된 것과 같이 호스트(10)로부터 논리 페이지 0, 1, 0, 1, 2, 3, 0, 1, 1, 0이 순차적으로 비휘발성 메모리 장치(20)에 입력된다고 가정하자.
핫-콜드 페이지 분리는, 호스트(10)로부터 입력된 논리 페이지들 중 핫 페이지(hot page)는 비휘발성 메모리 장치(20)의 핫 블록 그룹(hot blocks)에 저장하고, 콜드 페이지(cold page)는 비휘발성 메모리 장치(20)의 콜드 블록 그룹(hot blocks)에 저장하는 것을 의미한다.
여기서, 핫 페이지란, 호스트(10)에 의해 빈번하게 갱신이 일어나는 페이지를 의미하며, 콜드 페이지란, 호스트(10)에 의해 빈번하게 갱신이 일어나지 않는 페이지를 의미한다. 도 3의 예에서, 핫 페이지는 논리 페이지 0, 1이 될 수 있고, 콜드 페이지는 논리 페이지 2, 3이 될 수 있다.
이렇게 호스트(10)로부터 제공되는 논리 페이지들을 핫 페이지와 콜드 페이지로 나누어 비휘발성 메모리 장치(20)의 서로 다른 블록에 저장하게 되면, 핫 블록 그룹(hot blocks)에 포함된 블록들은 페이지 갱신이 자주 일어나 무효 페이지를 많이 포함하게 되고, 콜드 블록 그룹(cold blocks)에 포함된 블록들은 페이지 갱신이 자주 일어나지 않아 무효 페이지를 많이 포함하지 않게 된다.
따라서, 이러한 핫 블록 그룹(hot blocks)에 포함된 풀 블록을 앞서 설명한 가비지 컬렉션의 대상 블록으로 선정하게 되면, 대상 블록에 포함된 유효 페이지를 이동하는데 보다 작은 시간이 들게 됨을 알 수 있다. 즉, 호스트(10)로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 미리 결정하여 데이터를 관리할 경우, 가비지 컬렉션에 소요되는 시간을 단축시킬 수 있음을 알 수 있다.
이렇게, 호스트(10)로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정하는 방법은 여러가지가 있을 수 있다. 그 중 한 예를 도 4를 참조하여 설명하도록 한다.
도 4는 각 페이지 별로 기록 시간이 저장된 블록을 도시한 도면이다.
도 4에는 최대 16개의 페이지가 저장될 수 있는 블록이 도시되어 있다. 그리고, 블록은 각 페이지 별로 기록 시간(time stamp)을 저장하고 있다. 예를 들어, t0은 페이지 0이 블록에 기록될 당시의 기록 시간을 의미하고, t11은 페이지 11이 블록에 기록될 당시의 기록 시간을 의미한다.
여기서, 기록 시간이란, 예를 들어, 호스트로부터 이러한 블록이 포함된 저장 장치에 제공되는 페이지의 순번을 의미할 수 있다. 도 3의 예에서, 처음 입력되는 논리 페이지 0(LPN 0)의 순번은 1이고, 처음 입력되는 논리 페이지 1(LPN 1)의 순번은 2이다. 이렇게, 블록이 각 페이지 별로 기록 시간을 저장하게 되면, 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정할 수 있다.
이를 보다 구체적으로 설명하면 다음과 같다.
이제, 도 4의 페이지 0(PAGE 0)에 논리 페이지 0(LPN 0)이 저장되고, 페이지 1(PAGE 1)에 논리 페이지 1(LPN 1)이 저장된다고 가정하자. 그러면, t0는 1이고, t1은 2이다.
한편, 도 3에서 다시 입력되는 논리 페이지 0(LPN 0)의 순번은 3이다. 그런데, 논리 페이지 0은 이미 페이지 0(PAGE 0)에 저장되어 있으며, 논리 페이지 0이 페이지 0(PAGE 0)에 저장될 당시의 기록 시간(t0)은 1이다. 만약, 논리 페이지가 갱신될 때까지의 기록 시간이 4이하인 페이지를 핫 페이지로 분류하기로 결정하였다면, 논리 페이지 0(LPN 0)이 갱신될 때까지의 기록 시간은 2이기 때문에, 논리 페이지 0(LPN 0)은 핫 페이지로 분류된다.
이와 같은 기준을 도 3의 논리 페이지 1, 2, 3(LPN 1~3)에 대해 적용하여 보면, 논리 페이지 1(LPN 1)은 핫 페이지로, 논리 페이지 2, 3(LPN 2, 3)은 콜드 페이지로 분류됨을 알 수 있다.
그런데, 도 4와 같이 블록이 각 페이지 별로 기록 시간을 저장하게 되면, 각 페이지별 기록 시간 저장을 위해 비휘발성 메모리 장치의 저장 영역의 상당 부분이 할애되어야 한다. 따라서, 비휘발성 메모리 장치의 저장 영역을 효과적으로 활용하는데 비효율적일 수 있다. 이러한 단점을 해결하는데에는 여러가지 방법이 고려될 수 있다. 이하, 도 5를 참조하여, 그 중 하나의 해결 방법에 대해 설명하도록 한다.
도 5는 하나의 블록에 1개의 기록 시간이 저장된 블록을 도시한 도면이다.
도 5를 참조하면, 도 5에 도시된 블록은 도 4에 도시된 블록과 달리, 1개의 기록 시간(t0)을 저장한다. 본 실시예에서, 이처럼 블록에 저장된 1개의 기록 시간(t0)을 블록의 기록 시간이라고 정의할 수 있다. 즉, 블록의 기록 시간이란, 블록에 최초 논리 페이지(즉, PAGE 0에 기록되는 논리 페이지)가 저장된 기록 시간일 수 있다. 이처럼 블록에 1개의 기록 시간만을 저장할 경우, 기록 시간 저장에 할애되어야 하는 저장 공간의 양이 줄어들게 되므로, 비휘발성 메모리 장치의 저장 영역을 보다 효율적으로 사용할 수 있다.
이제, 이를 이용하여 어떻게 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정할 수 있는지에 대해 설명하도록 한다.
도 6은 본 발명의 일 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 먼저, 호스트로부터 논리 페이지를 제공받아 논리 페이지의 실제 기록 시간(actual time stamp)을 계산한다(S100). 여기서, 호스트로부터 제공되는 논리 페이지의 실제 기록 시간이란, 호스트로부터 제공되는 논리 페이지의 실제 순번을 의미한다.
앞서 도 3의 예에서, 첫 번째 입력되는 논리 페이지 0(LPN 0)의 순번은 1이므로, 호스트(10)로부터 첫 번째 논리 페이지 0(LPN 0)이 비휘발성 메모리 장치(20)에 입력될 때, 첫 번째 논리 페이지 0(LPN 0)의 실제 기록 시간은 1이고, 두번째 입력되는 논리 페이지 0(LPN 0)의 순번은 3이므로, 호스트(10)로부터 두 번째 논리 페이지 0(LPN 0)이 비휘발성 메모리 장치(20)에 입력될 때, 두 번째 논리 페이지 0(LPN 0)의 실제 기록 시간은 3이된다.
다음, 논리 페이지가 저장된 저장 장치의 블록을 찾아 블록의 기록 시간(time stamp)과, 블록에 저장된 논리 페이지의 페이지 오프셋(page offset)을 탐지한다(S200).
도 3의 첫 번째 입력되는 논리 페이지 0(LPN 0)이 도 5에 도시된 블록의 페이지 0(PAGE 0)에 저장되었다고 하자. 이 경우, 블록의 기록 시간(t0)은 논리 페이지 0(LPN 0)이 블록의 페이지 0(PAGE 0)에 저장된 기록 시간이기 때문에, 블록의 기록 시간(t0)은 1이 된다.
이제 도 3의 두 번째 논리 페이지 0(LPN 0)이 호스트(10)로부터 입력되었다고 하자. 이 경우, 논리 페이지 0(LPN 0)이 저장된 블록은 도 5에 도시된 블록이고, 이 때, 도 5에 도시된 블록의 기록 시간은 1이 된다. 한편, 논리 페이지 0(LPN 0)은 블록의 페이지 0(PAGE 0)에 저장되어 있으므로, 논리 페이지 0(LPN 0)의 페이지 오프셋은 0이된다.
다음, 블록의 기록 시간과 페이지 오프셋을 이용하여, 블록에 저장된 논리 페이지의 근사 기록 시간(approximate time stamp)을 계산한다(S300).
이 때, 논리 페이지의 근사 기록 시간은 아래의 <수학식1>로 계산될 수 있다.
<수학식1>
근사 기록 시간 = 블록의 기록 시간 + 논리 페이지의 페이지 오프셋 * k
(여기서, k≥0, k는 실수)
앞의 예에서, 블록의 기록 시간은 1이고, 논리 페이지의 페이지 오프셋은 0이므로, 근사 기록 시간은 1이된다.
다음, 실제 기록 시간과 근사 기록 시간을 고려하여 논리 페이지의 상태를 결정한다(S400).
구체적으로, 실제 기록 시간과 근사 기록 시간의 차이가 설정된 임계값보다 작으면 논리 페이지를 제1 상태의 논리 페이지(예를 들어, 핫 페이지)로 판단하고, 실제 기록 시간과 근사 기록 시간의 차이가 설정된 임계값보다 크면 논리 페이지를 상기 제1 상태와 다른 제2 상태의 논리 페이지(예를 들어, 콜드 페이지)로 판단한다.
앞의 예에서 도 3의 두번 째 논리 페이지 0(LPN 0)이 비휘발성 메모리 장치(20)에 제공되었을 경우, 실제 기록 시간은 3이고, 앞서 구한 근사 기록 시간은 1이기 때문에, 둘 간의 차이는 2가 된다. 이러한 차이가 사용자가 설정한 임계값(예를 들어, 4)보다 큰지 작은지를 판단하여, 도 3의 두번 째 논리 페이지 0(LPN 0)이 핫 페이지인지 아니면 콜드 페이지인지 판단할 수 있게 된다.
같은 방법으로, 도 3에서 비휘발성 메모리 장치(20)에 두번 째로 입력되는 논리 페이지 1(LPN 1)이 핫 페이지인지 아니면 콜드 페이지인지 검토해보도록 한다.
먼저, 비휘발성 메모리 장치(20)에 두번 째로 입력되는 논리 페이지 1(LPN 1)의 실제 기록 시간은 4가 된다.
다음, 도 3에서 비휘발성 메모리 장치(20)에 첫번 째로 입력되는 논리 페이지 0, 1(LPN 0, 1)이 각각 순차적으로 도 5에 도시된 블록에 저장되었다면, 논리 페이지 0(LPN 0)은 블록의 페이지 0(PAGE 0)에 저장되었을 것이고, 논리 페이지 1(LPN 1)은 블록의 페이지 1(PAGE 1)에 저장되었을 것이다. 따라서, 비휘발성 메모리 장치(20)에 논리 페이지 1(LPN 1)이 두번 째로 입력될 당시 논리 페이지 1(LPN 1)이 저장된 블록은 도 5에 도시된 블록이 되고, 이 때 블록의 기록 시간은 1(t0)이며, 논리 페이지 1(LPN 1)은 페이지 1(PAGE 1)에 저장되어 있으므로 논리 페이지 1(LPN 1)의 페이지 오프셋은 1이된다.
이와 같은 결과를 바탕으로, 상기 <수학식1>을 이용하여, 논리 페이지 1(LPN 1)의 근사 기록 시간을 구해보면, 논리 페이지 1(LPN 1)의 근사 기록 시간은 1+k가 됨을 알 수 있다.
이제, 앞서 구한 실제 기록 시간은 4이고 근사 기록 시간은 1+k이므로, 4-(1+k)가 사용자가 설정한 임계값보다 작으면 도 3의 비휘발성 메모리 장치(20)에 두번 째로 입력되는 논리 페이지 1(LPN 1)를 핫 페이지로 판단하고, 그 반대라면 콜드 페이지로 판단할 수 있다.
한편, 본 발명의 몇몇 실시에예에서, 논리 페이지의 근사 기록 시간을 보다 정교하게 계산하기 위해 다른 방법들이 사용될 수 있다.
도 7은 하나의 블록에 2개의 기록 시간이 저장된 블록을 도시한 도면이다.
도 7을 참조하면, 도 5와 달리 하나의 블록이 2개의 기록 시간(t0, t1)을 저장한 것이 도시한 것이 도시되어 있다. 이 때, 첫 번째 기록 시간(t0)은 앞서와 마찬가지로 블록의 페이지 0(PAGE 0)이 사용될 때의 기록시간일 수 있으며, 두 번째 기록 시간(t1)은 블록의 페이지 8(PAGE 0)이 사용될 때의 기록시간일 수 있다. 이처럼 본 실시에에서는, 하나의 블록이 2개의 기록 시간(t0, t1)을 저장함으로써, 논리 페이지의 근사 기록 시간을 보다 정교하게 계산할 수 있다. 이하, 이를 이용하여 어떻게 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정할 수 있는지에 대해 설명하도록 한다.
도 8은 본 발명의 다른 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
본 실시예에서, 호스트로부터 논리 페이지를 제공받아 논리 페이지의 실제 기록 시간(actual time stamp)을 계산하는 단계(도 6의 S100), 논리 페이지가 저장된 저장 장치의 블록을 찾아 블록의 기록 시간(time stamp)과, 블록에 저장된 논리 페이지의 페이지 오프셋(page offset)을 탐지하는 단계(도 6의 S200). 및 실제 기록 시간과 근사 기록 시간을 고려하여 논리 페이지의 상태를 결정하는 단계(S400)는 앞서 설명한 실시예와 동일하다. 따라서, 여기서는 앞서 설명한 실시예와 차이나는 블록의 기록 시간과 페이지 오프셋을 이용하여, 블록에 저장된 논리 페이지의 근사 기록 시간(approximate time stamp)을 계산하는 단계(도 6의 S300)에 대해 보다 구체적으로 설명하도록 한다.
도 8을 참조하면, 먼저, 블록의 기록 시간 인덱스(index)를 결정한다(S310). 여기서, 결정된 기록 시간 인덱스는, 향후 근사 기록 시간을 계산하는데 있어서, 블록에 저장된 2개의 기록 시간(도 7의 t0, t1) 중 어느 것을 이용할 것인지 결정하는데 이용될 수 있다.
구체적으로, 기록 시간 인덱스는 다음의 <수학식2>에 의해 결정될 수 있다.
<수학식2>
기록 시간 인덱스 = [페이지 오프셋 * 2 / 블록에 저장 가능한 최대 논리 페이지 개수]
(여기서, [a]는 a보다 작은 최대 정수)
즉, 호스트로부터 입력된 논리 페이지가 도 7의 페이지 0 내지 7(PAGE 0~7)에 저장되어 있다면, 기록 시간 인덱스 값은 0이 되고, 호스트로부터 입력된 논리 페이지가 도 7의 페이지 8 내지 15(PAGE 8~15)에 저장되어 있다면, 기록 시간 인덱스 값은 1이 된다.
다음, 블록의 기록 시간, 블록의 기록 시간 인덱스, 및 페이지 오프셋을 이용하여, 근사 기록 시간을 계산한다(S320).
구체적으로, 근사 기록 시간은 다음의 <수학식3>에 의해 계산될 수 있다.
<수학식3>
근사 기록 시간 = 기록 시간 인덱스를 고려한 블록의 기록 시간 + (논리 페이지의 오프셋 % (블록에 저장 가능한 최대 논리 페이지 개수 / 2)) * k
(여기서, b%c = b를 c로 나누었을 때의 나머지, k≥0, k는 실수)
앞서 설명한 예에서, 호스트로부터 입력된 논리 페이지가 도 7의 페이지 0 내지 7(PAGE 0~7)에 저장되어 있다면, 기록 시간 인덱스 값은 0이므로, 블록의 첫 번째 기록 시간(도 7의 t0)이 상기 수학식 3의 기록 시간 인덱스를 고려한 블록의 기록 시간이 된다. 한편, 호스트로부터 입력된 논리 페이지가 도 7의 페이지 8 내지 15(PAGE 8~15)에 저장되어 있다면, 기록 시간 인덱스 값은 1이므로, 블록의 두 번째 기록 시간(도 7의 t1)이 상기 수학식 3의 기록 시간 인덱스를 고려한 블록의 기록 시간이 된다.
이처럼 상기 수학식 3을 이용하여 근사 기록 시간을 구하면, 앞서 설명한 실시예와 달리 블록에 저장된 2개의 기록 시간을 모두 이용하여 논리 페이지의 근사 기록 시간을 계산할 수 있으므로, 논리 페이지의 근사 기록 시간을 보다 정교하게 계산할 수 있다.
한편, 본 발명의 또 다른 몇몇 실시예에서, 하나의 블록이 저장할 수 있는 기록 시간(도 7의 t0, t1)의 개수는 이 보다 더 많을 수 있다. 즉, 하나의 블록에는 블록에 저장된 논리 페이지의 개수보다 작은 n개의 기록 시간이 저장될 수 있다.
이 경우, 상기 <수학식2>는 아래와 같은 <수학식4>로 변경될 수 있다.
<수학식4>
기록 시간 인덱스 = [페이지 오프셋 * n / 블록에 저장 가능한 최대 논리 페이지 개수]
(여기서, [a]는 a보다 작은 최대 정수)
그리고, 상기 <수학식3>은 아래와 같은 <수학식5>로 변경될 수 있다.
<수학식5>
근사 기록 시간 = 기록 시간 인덱스를 고려한 블록의 기록 시간 + (논리 페이지의 오프셋 % (블록에 저장 가능한 최대 논리 페이지 개수 / n)) * k
(여기서, b%c = b를 c로 나누었을 때의 나머지, k≥0, k는 실수)
하나의 블록에 저장되는 기록 시간(도 7의 t0, t1)의 개수가 늘어나면, 보다 정교하게 논리 페이지의 근사 기록 시간을 계산할 수 있는 장점이 있지만, 이러한 기록 시간을 저장하기 위해 비휘발성 메모리 장치의 저장 영역을 보다 많이 할애해야 할 수 있다. 따라서, 비휘발성 메모리 장치가 사용되는 환경에 따라 하나의 블록에 저장되는 기록 시간(도 7의 t0, t1)의 개수를 적절히 조절하여 사용한다면, 비휘발성 메모리 장치의 성능을 높이면서 가비지 컬렉션에 소요되는 시간을 단축시킬 수 있다.
한편, 앞서 설명한 방법과 다른 방법을 사용하여 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정할 수 있다.
도 9는 저장 장치에 포함된 다수의 블록에 대해 각 블록의 사용 상태를 도시한 도면이다. 도 10은 본 발명의 일 실시예에 따른 최근 사용 블록 리스트를 도시한 도면이다.
도 9를 참조하면, 비휘발성 메모리 장치에는 사용 상태가 서로 다른 다수의 블록이 포함될 수 있다. 예를 들어, 블록 4, 6, 7, 9, 10, 11, 12, 14, 15는 각 블록에 1개의 논리 페이지도 저장되지 않은 상태의 프리 블록일 수 있고, 블록 2는 오픈 블록일 수 있다. 그리고, 블록 0, 3, 13은 각 블록에 저장된 논리 페이지가 호스트에 의해 갱신된지 상당한 시간이 지난 블록일 수 있고, 블록 1, 5, 8은 각 블록에 저장된 논리 페이지가 호스트에 의해 최근에 갱신된 블록일 수 있다.
여기서, 호스트에 의해 저장하고 있는 논리 페이지가 갱신된 블록들의 리스트가 존재한다면, 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정할 수 있다.
예를 들어, 호스트로부터 순차적으로 블록 2에 저장된 논리 페이지가 갱신되고, 블록 5에 저장된 논리 페이지가 갱신되고, 블록 8에 저장된 논리 페이지가 갱신되고, 블록 1에 저장된 논리 페이지가 갱신되었다면, 최근 사용 블록 리스트(recently used block list)는 도 10과 같이 구성될 수 있다. 여기서, 최근 사용 블록 리스트에 포함된 블록의 개수는 사용자에 의해 설정될 수 있다.
이하, 도 11을 참조하여, 이러한 최근 사용 블록 리스트를 사용하여 호스트로부터 입력되는 논리 페이지가 핫 페이지인지 아니면 콜드 페이지인지를 결정하는 방법에 대해 설명하도록 한다.
도 11은 본 발명의 또 다른 실시예에 따른 저장 장치의 데이터 관리 방법을 설명하기 위한 순서도이다.
도 11을 참조하면, 먼저, 호스트로부터 논리 페이지를 제공받는다(S500).
그리고, 제공받은 논리 페이지가 저장된 저장 장치(예를 들어, 비휘발성 메모리 장치)의 블록을 탐지한다(S510). 이 때, 탐지된 블록은 오픈 블록일 수도 있고, 풀 블록일 수도 있다.
다음, 탐지된 블록을 최근 사용 블록 리스트와 비교하여 호스트로부터 제공받은 논리 페이지의 상태를 판단한다(S520).
구체적으로, 탐지된 블록이 최근 사용 블록 리스트(도 10)에 포함된 블록이면 호스트로부터 제공받은 논리 페이지를 제1 상태의 논리 페이지(예를 들어, 핫 페이지)로 판단하고, 탐지된 블록이 최근 사용 블록 리스트(도 10)에 포함되지 않은 블록이면 호스트로부터 제공받은 논리 페이지를 제1 상태와 다른 제2 상태의 논리 페이지(예를 들어, 콜드 페이지)로 판단할 수 있다.
다음 도 12 내지 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 시스템 및 그 응용예들에 대해 설명한다.
도 12는 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이고, 도 13은 도 12의 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 12를 참조하면, 메모리 시스템(1000)은 비휘발성 메모리 장치(1100) 및 컨트롤러(1200)를 포함한다.
비휘발성 메모리 장치(1100)는 앞서 설명한 실시예들에 따라 데이터 관리가 수행되는 비휘발성 메모리 장치일 수 있다.
컨트롤러(1200)는 호스트(Host) 및 비휘발성 메모리 장치(1100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(1200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함한다. 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용된다. 프로세싱 유닛은 컨트롤러(1200)의 제반 동작을 제어한다.
호스트 인터페이스는 호스트(Host) 및 컨트롤러(1200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 컨트롤러(1200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다. 메모리 인터페이스는 비휘발성 메모리 장치(1100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
메모리 시스템(1000)은 오류 정정 블록을 추가적으로 포함하도록 구성될 수 있다. 오류 정정 블록은 오류 정정 코드(ECC)를 이용하여 비휘발성 메모리 장치(1100)로부터 읽어진 데이터의 오류를 검출하고, 정정하도록 구성된다. 예시적으로, 오류 정정 블록은 컨트롤러(1200)의 구성 요소로서 제공된다. 오류 정정 블록은 비휘발성 메모리 장치(1100)의 구성 요소로서 제공될 수 있다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(1000)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(1000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선된다.
다른 예로서, 메모리 시스템(1000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, 비휘발성 메모리 장치(1100) 또는 메모리 시스템(1000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 비휘발성 메모리 장치(1100) 또는 메모리 시스템(1000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
다음 도 13을 참조하면, 메모리 시스템(2000)은 비휘발성 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 비휘발성 메모리 장치(2100)는 복수의 비휘발성 메모리 칩들을 포함한다. 복수의 비휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 비휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예를 들어, 복수의 비휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
도 13에서, 하나의 채널에 복수의 비휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 비휘발성 메모리 칩이 연결되도록 메모리 시스템(2000)이 변형될 수 있음이 이해될 것이다.
다음 도 14를 참조하면, 컴퓨팅 시스템(3000)은 중앙 처리 장치(3100), 램(3200, RAM, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 그리고 메모리 시스템(2000)을 포함한다.
메모리 시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결된다. 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 메모리 시스템(2000)에 저장된다.
도 14에서, 비휘발성 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 비휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성될 수 있다.
도 14에서, 도 13을 참조하여 설명된 메모리 시스템(2000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(2000)은 도 12를 참조하여 설명된 메모리 시스템(1000)으로 대체될 수도 있다.
예시적으로, 컴퓨팅 시스템(3000)은 도 12 및 도 13을 참조하여 설명된 메모리 시스템들(1000, 2000)을 모두 포함하도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트 20: 비휘발성 메모리 장치
S100~S400, S500~S520: 저장 장치의 데이터 관리 방법

Claims (11)

  1. 호스트로부터 논리 페이지를 제공받아 상기 논리 페이지의 실제 기록 시간(actual time stamp)을 계산하고,
    상기 논리 페이지가 저장된 저장 장치의 블록을 찾아 상기 블록의 기록 시간(time stamp)과, 상기 블록에 저장된 상기 논리 페이지의 페이지 오프셋(page offset)을 탐지하고,
    상기 블록의 기록 시간과 상기 페이지 오프셋을 이용하여, 상기 블록에 저장된 상기 논리 페이지의 근사 기록 시간(approximate time stamp)을 계산하고,
    상기 실제 기록 시간과 상기 근사 기록 시간의 차이가 설정된 임계값보다 작으면 상기 논리 페이지를 제1 상태의 논리 페이지로 판단하고, 상기 실제 기록 시간과 상기 근사 기록 시간의 차이가 설정된 임계값보다 크면 상기 논리 페이지를 상기 제1 상태와 다른 제2 상태의 논리 페이지로 판단하는 것을 포함하고,
    상기 블록에는 복수의 상기 논리 페이지가 저장되고, 상기 블록에 저장된 상기 기록 시간의 개수는 상기 블록에 저장된 상기 논리 페이지의 개수보다 적은 저장 장치의 데이터 관리 방법.
  2. 제 1항에 있어서,
    상기 제1 상태의 논리 페이지는 핫 페이지(hot page)를 포함하고, 상기 제2 상태의 논리 페이지는 콜드 페이지(cold page)를 포함하는 저장 장치의 데이터 관리 방법.
  3. 제 1항에 있어서,
    상기 블록에는 1개의 기록 시간이 저장되는 저장 장치의 데이터 관리 방법.
  4. 제 3항에 있어서,
    상기 블록의 기록 시간은 상기 블록에 최초 논리 페이지가 저장된 기록 시간인 저장 장치의 데이터 관리 방법.
  5. 제 4항에 있어서,
    상기 근사 기록 시간은 다음의 수학식에 의해 계산되는 저장 장치의 데이터 관리 방법.
    <수학식>
    근사 기록 시간 = 블록의 기록 시간 + 논리 페이지의 페이지 오프셋 * k
    (여기서, k≥0, k는 실수)
  6. 제 1항에 있어서,
    상기 블록에는 상기 블록에 저장된 논리 페이지의 개수보다 작은 n개의 기록 시간이 저장되는 저장 장치의 데이터 관리 방법.
  7. 제 6항에 있어서,
    상기 근사 기록 시간을 계산하는 것은,
    상기 블록의 기록 시간 인덱스(index)를 결정하고,
    상기 블록의 기록 시간, 상기 블록의 기록 시간 인덱스, 및 상기 페이지 오프셋을 이용하여, 상기 근사 기록 시간을 계산하는 것을 포함하는 저장 장치의 데이터 관리 방법.
  8. 제 7항에 있어서,
    상기 블록의 기록 시간 인덱스는 다음의 수학식에 의해 결정되는 저장 장치의 데이터 관리 방법.
    <수학식>
    기록 시간 인덱스 = [페이지 오프셋 * n / 블록에 저장 가능한 최대 논리 페이지 개수]
    (여기서, [a]는 a보다 작은 최대 정수)
  9. 제 8항에 있어서,
    상기 근사 기록 시간은 다음의 수학식에 의해 계산되는 저장 장치의 데이터 관리 방법.
    <수학식>
    근사 기록 시간 = 기록 시간 인덱스를 고려한 블록의 기록 시간 + (논리 페이지의 오프셋 % (블록에 저장 가능한 최대 논리 페이지 개수 / n)) * k
    (여기서, b%c = b를 c로 나누었을 때의 나머지, k≥0, k는 실수)
  10. 삭제
  11. 삭제
KR1020120000237A 2012-01-02 2012-01-02 저장 장치의 데이터 관리 방법 KR101861545B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120000237A KR101861545B1 (ko) 2012-01-02 2012-01-02 저장 장치의 데이터 관리 방법
US13/684,263 US9122585B2 (en) 2012-01-02 2012-11-23 Method for managing data in storage device and memory system employing such a method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120000237A KR101861545B1 (ko) 2012-01-02 2012-01-02 저장 장치의 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20130079007A KR20130079007A (ko) 2013-07-10
KR101861545B1 true KR101861545B1 (ko) 2018-05-29

Family

ID=48695903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120000237A KR101861545B1 (ko) 2012-01-02 2012-01-02 저장 장치의 데이터 관리 방법

Country Status (2)

Country Link
US (1) US9122585B2 (ko)
KR (1) KR101861545B1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102116258B1 (ko) 2013-12-24 2020-06-05 삼성전자주식회사 메모리 시스템 및 그것을 포함하는 유저 장치
US9501393B2 (en) 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
JP6135529B2 (ja) * 2014-02-04 2017-05-31 横河電機株式会社 情報表示装置、情報処理装置、情報表示システム、および情報表示方法
KR102222463B1 (ko) * 2014-03-14 2021-03-03 삼성전자주식회사 저장 장치 및 그것의 타이머 설정 방법 및 구동 방법들
KR102233808B1 (ko) * 2014-03-14 2021-03-30 삼성전자주식회사 저장 장치 및 그것의 테이블 관리 방법
KR200482491Y1 (ko) 2014-05-15 2017-02-01 계문애 다양한 종류의 알약 이송이 가능한 알약정량공급장치
KR20160005264A (ko) 2014-07-04 2016-01-14 삼성전자주식회사 저장 장치 및 그것의 읽기 방법들
CN105574022B (zh) * 2014-10-14 2020-04-17 阿里巴巴集团控股有限公司 一种基于关系数据库的业务对象的处理方法和装置
CN104391804B (zh) * 2014-10-28 2017-11-28 陕西千山航空电子有限责任公司 一种nand flash数据存储方法
US9996297B2 (en) * 2014-11-14 2018-06-12 SK Hynix Inc. Hot-cold data separation method in flash translation layer
CN104461916A (zh) * 2014-11-19 2015-03-25 福建新大陆通信科技股份有限公司 一种图片节省内存存储的方法及系统
CN107102819B (zh) * 2014-12-12 2021-02-23 西安三星电子研究有限公司 向固态硬盘写入数据的方法及设备
US10459639B2 (en) * 2015-04-28 2019-10-29 Hitachi, Ltd. Storage unit and storage system that suppress performance degradation of the storage unit
US20170139826A1 (en) * 2015-11-17 2017-05-18 Kabushiki Kaisha Toshiba Memory system, memory control device, and memory control method
US9977597B2 (en) * 2016-05-10 2018-05-22 Seagate Technology Llc Enhanced read recovery based on write time information
CN112470227B (zh) * 2018-07-26 2022-11-01 华为技术有限公司 一种数据块处理的方法及控制器
JP2021140464A (ja) 2020-03-05 2021-09-16 キオクシア株式会社 ストレージ装置、ストレージシステム及び方法
US11200162B2 (en) * 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
US11494101B2 (en) * 2020-10-14 2022-11-08 Western Digital Technologies, Inc. Storage system and method for time-duration-based efficient block management and memory access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100191922A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
US20110252210A1 (en) * 2010-04-13 2011-10-13 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
KR100941423B1 (ko) 2008-02-21 2010-02-11 인하대학교 산학협력단 메모리의 페이지 할당 방법 및 이를 수행하기 위한프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100191922A1 (en) * 2009-01-29 2010-07-29 International Business Machines Corporation Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata
US20110252210A1 (en) * 2010-04-13 2011-10-13 Dot Hill Systems Corporation Method and apparatus for rebalancing storage components within a storage tier

Also Published As

Publication number Publication date
KR20130079007A (ko) 2013-07-10
US20130173854A1 (en) 2013-07-04
US9122585B2 (en) 2015-09-01

Similar Documents

Publication Publication Date Title
KR101861545B1 (ko) 저장 장치의 데이터 관리 방법
KR101907059B1 (ko) 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
KR101867282B1 (ko) 비휘발성 메모리 장치의 가비지 컬렉션 방법
KR20140050941A (ko) 비휘발성 메모리 장치의 데이터 관리 방법
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system&#39;s unit of memory allocation is coordinated with a storage system&#39;s read/write operation unit
US11237742B2 (en) Apparatus and method for controlling data stored in memory system
KR101811297B1 (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
US9851904B2 (en) Garbage collection while maintaining predetermined writing speed
EP2665065A2 (en) Electronic device employing flash memory
TWI607448B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN107818808B (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
TW201403316A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
KR20190044873A (ko) 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
US9600209B2 (en) Flash storage devices and methods for organizing address mapping tables in flash storage devices
CN111399750B (zh) 闪存数据写入方法及计算机可读取存储介质
US20180129416A1 (en) Storage device and data processing system including the same
KR20130081526A (ko) 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
KR20210112557A (ko) 메모리 장치에서 연속으로 수행되는 다수의 커맨드 동작에 필요한 파워값을 정확하게 예측할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법
CN106055488B (zh) 数据储存设备及其操作方法
TWI554884B (zh) 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US20140095558A1 (en) Computing system and method of managing data thereof
US20200183830A1 (en) Method for gabage collecting for non-volatile memory
KR20150017601A (ko) 저장 시스템 및 그 동작 방법
US10732845B2 (en) Data search method, memory storage apparatus, and memory control circuit unit

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant