KR20180064198A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20180064198A
KR20180064198A KR1020160164549A KR20160164549A KR20180064198A KR 20180064198 A KR20180064198 A KR 20180064198A KR 1020160164549 A KR1020160164549 A KR 1020160164549A KR 20160164549 A KR20160164549 A KR 20160164549A KR 20180064198 A KR20180064198 A KR 20180064198A
Authority
KR
South Korea
Prior art keywords
memory areas
candidate
memory
areas
management unit
Prior art date
Application number
KR1020160164549A
Other languages
English (en)
Inventor
이영식
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020160164549A priority Critical patent/KR20180064198A/ko
Priority to US15/441,375 priority patent/US10157127B2/en
Priority to CN201710264384.1A priority patent/CN108153680B/zh
Publication of KR20180064198A publication Critical patent/KR20180064198A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Abstract

데이터 저장 장치는 복수의 메모리 영역들을 포함하는 비휘발성 메모리 장치; 및 상기 복수의 메모리 영역들의 소거 카운트 정보에 근거하여 상기 복수의 메모리 영역들 중에서 하나 이상의 후보 메모리 영역들을 선택하고, 상기 후보 메모리 영역들의 개수에 근거하여 조절 값을 결정하고, 상기 후보 메모리 영역들 중 상기 조절 값만큼 빅팀 메모리 영역들을 선택하고, 상기 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행하도록 구성된 컨트롤러를 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 비휘발성 메모리 장치를 포함하는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는 웨어 레벨링 동작 및 메모리 확보 동작을 효율적으로 수행하는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 메모리 영역들을 포함하는 비휘발성 메모리 장치; 및 상기 복수의 메모리 영역들의 소거 카운트 정보에 근거하여 상기 복수의 메모리 영역들 중에서 하나 이상의 후보 메모리 영역들을 선택하고, 상기 후보 메모리 영역들의 개수에 근거하여 조절 값을 결정하고, 상기 후보 메모리 영역들 중 상기 조절 값만큼 빅팀 메모리 영역들을 선택하고, 상기 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법은 복수의 메모리 영역들의 소거 카운트들에 근거하여 상기 복수의 메모리 영역들 중에서 하나 이상의 후보 메모리 영역들을 선택하는 단계; 상기 후보 메모리 영역들의 개수에 근거하여 조절 값을 결정하는 단계; 상기 후보 메모리 영역들 중 상기 조절 값만큼 하나 이상의 빅팀 메모리 영역들을 선택하는 단계; 및 상기 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 웨어 레벨링 동작 및 메모리 확보 동작을 효율적으로 수행할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도2는 도1의 메모리 관리부가 복수의 메모리 영역들 중 후보 메모리 영역들을 선택하는 방법을 설명하기 위한 도면,
도3은 도1의 메모리 관리부가 웨어 레벨링 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면,
도4는 도1의 데이터 저장 장치의 동작 방법을 도시하는 순서도,
도5는 본 발명의 실시 예에 따른 데이터 저장 장치를 예시적으로 도시한 블록도,
도6은 도5의 메모리 관리부의 웨어 레벨링 동작의 모드들을 도시하는 테이블,
도7은 도5의 메모리 관리부가 도6의 테이블에 근거하여 웨어 레벨링 동작을 수행하는 방법을 설명하기 위한 도면,
도8은 도1의 데이터 저장 장치의 동작 방법을 도시하는 순서도,
도9는 도5의 메모리 관리부의 웨어 레벨링 동작 및 메모리 확보 동작의 모드들을 도시하는 테이블,
도10은 도5의 메모리 관리부가 도9의 테이블에 근거하여 웨어 레벨링 동작 및 메모리 확보 동작을 수행하는 방법을 설명하기 위한 도면,
도11은 도5의 데이터 저장 장치의 동작 방법을 도시하는 순서도,
도12는 도5의 메모리 관리부의 웨어 레벨링 동작 및 메모리 확보 동작의 모드들을 도시하는 테이블,
도13은 도5의 메모리 관리부가 도12의 테이블에 근거하여 웨어 레벨링 동작 및 메모리 확보 동작을 수행하는 다른 방법을 설명하기 위한 도면,
도14는 도5의 데이터 저장 장치의 동작 방법을 도시하는 순서도,
도15는 본 발명의 실시 예에 따른 SSD를 도시하는 블록도,
도16은 본 발명의 실시 예에 따른 데이터 저장 장치들이 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)를 도시한 블록도이다.
데이터 저장 장치(10)는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치(10)는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다.
데이터 저장 장치(10)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
데이터 저장 장치(10)는 컨트롤러(100) 및 저장 매체(500)를 포함할 수 있다.
컨트롤러(100)는 데이터 저장 장치(10)를 제어할 수 있다. 컨트롤러(100)는 외부 장치로부터 전송된 라이트 요청에 응답하여 저장 매체(500)에 데이터를 저장하고, 외부 장치로부터 전송된 리드 요청에 응답하여 저장 매체(500)에 저장된 데이터를 리드하여 외부 장치로 출력할 수 있다.
컨트롤러(100)는 메모리 관리부(110)를 포함할 수 있다. 메모리 관리부(110)는 저장 매체(500)의 성능을 유지하고 수명을 연장하기 위해서 다양한 메모리 관리 동작을 수행할 수 있다. 특히, 메모리 관리부(110)는 저장 매체(500)에 포함된 복수의 메모리 영역들(MR0~MRn)을 고르게 사용하기 위해서, 조절 값(112)에 근거하여 후보 메모리 영역들(111)에 대해 웨어 레벨링 동작을 수행할 수 있다.
구체적으로, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들을 관리할 수 있다. 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn) 각각을 소거할 때마다 소거된 메모리 영역에 대응하는 소거 카운트를 증가시킬 수 있다. 이때, 낮은 소거 카운트를 가진 메모리 영역은 적게 마모된 메모리 영역이고, 높은 소거 카운트를 가진 메모리 영역은 많이 마모된 메모리 영역일 수 있다.
그리고, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들에 근거하여 복수의 메모리 영역들(MR0~MRn) 중 하나 이상의 후보 메모리 영역들(111)을 선택할 수 있다. 예를 들어, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn) 중 비교적 작은 소거 카운트를 가진 메모리 영역들을 후보 메모리 영역들(111)로 선택할 수 있다. 즉, 선택되는 후보 메모리 영역들(111)은 적게 마모된 메모리 영역들일 수 있다.
이어서, 메모리 관리부(110)는 선택된 후보 메모리 영역들(111)의 개수에 근거하여 조절 값(112)을 결정할 수 있다. 특히, 메모리 관리부(110)는, 조절 값(112)이 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(111)의 비율에 비례하도록 조절 값(112)을 결정할 수 있다. 즉, 후보 메모리 영역들(111)의 개수가 증가할수록, 조절 값(112)은 증가할 수 있다.
이어서, 메모리 관리부(110)는 후보 메모리 영역들(111) 중 조절 값(112)만큼 빅팀 메모리 영역들을 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 가비지 수집 동작은 빅팀 메모리 영역들에 저장된 유효 데이터를 복수의 메모리 영역들(MR0~MRn) 중 프리 메모리 영역으로 이동시키고, 빅팀 메모리 영역들을 프리 메모리 영역들로 전환함으로써 수행될 수 있다. 결국, 빅팀 메모리 영역들은 프리 메모리 영역들로 전환되어 사용이 촉진될 수 있고, 따라서 복수의 메모리 영역들(MR0~MRn)은 웨어 레벨링될 수 있다.
한편, 일단 선택된 후보 메모리 영역들(111)에 대한 가비지 수집 동작은 소정의 관리 조건이 만족할 때마다 조절 값(112) 단위로 수행될 수 있다. 예를 들어, 메모리 관리부(110)는 외부 장치로부터 라이트 요청을 수신할 때마다 라이트 데이터의 크기를 누적하고, 누적된 라이트 데이터의 크기가 임계 크기에 도달할 때마다 가비지 수집 동작을 수행할 수 있다. 이러한 관리 조건이 만족할 때마다, 메모리 관리부(110)는 아직 가비지 수집되지 않은 후보 메모리 영역들(111)이 존재하는지 여부를 판단할 수 있다. 메모리 관리부(110)는 가비지 수집되지 않은 후보 메모리 영역들(111)이 존재할 때, 후보 메모리 영역들(111) 중 조절 값(112)만큼 빅팀 메모리 영역들을 또 선택하고, 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 그리고, 메모리 관리부(110)는 가비지 수집되지 않은 후보 메모리 영역들(111)이 더 이상 존재하지 않을 때, 즉, 모든 후보 메모리 영역들(111)이 가비지 수집되었을 때, 새로운 후보 메모리 영역들(111)을 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들에 근거하여 선택할 수 있다.
실시 예에 따라, 메모리 관리부(110)는 가비지 수집 동작을 수행한 뒤, 프리 메모리 영역들로 전환된 빅팀 메모리 영역들을 후보 메모리 영역들(111)로부터 제거할 수 있다. 또한, 메모리 관리부(110)는 가비지 수집 동작을 수행한 뒤, 관리 조건으로서 체크되는 누적된 라이트 데이터의 크기를 초기화시킬 수 있다.
정리하면, 웨어 레벨링 동작을 위해서 선택된 후보 메모리 영역들(111)은 일시에 처리되지 않고, 관리 조건이 만족할 때마다 조절 값(112) 단위로 분할되어 가비지 수집될 수 있다. 조절 값(112)은 후보 메모리 영역들(111)의 개수에 비례하고, 따라서, 적게 마모된 메모리 영역들의 비율에 비례할 수 있다. 이와 같이 웨어 레벨링 동작을 수행할 경우, 컨트롤러(100)의 오버헤드가 감소되고 동작 효율이 증가될 수 있다.
저장 매체(500)는 컨트롤러(100)의 제어에 따라, 컨트롤러(100)로부터 전송된 데이터를 저장하고, 저장된 데이터를 리드하여 컨트롤러(100)로 전송할 수 있다. 저장 매체(500)는 하나 이상의 비휘발성 메모리 장치들을 포함할 수 있다. 비휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
저장 매체(500)는 복수의 메모리 영역들(MR0~MRn)을 포함할 수 있다. 복수의 메모리 영역들(MR0~MRn)은 하나의 비휘발성 메모리 장치에 포함될 수 있다. 실시 예에 따라, 복수의 메모리 영역들(MR0~MRn) 각각은 복수의 비휘발성 메모리 장치들에 걸쳐 형성된 논리적 유닛일 수 있다.
도2는 도1의 메모리 관리부(110)가 복수의 메모리 영역들(MR0~MRn) 중 후보 메모리 영역들(111)을 선택하는 방법을 설명하기 위한 도면이다. 도2의 그래프에서 가로축은 복수의 메모리 영역들(MR0~MRn)의 인덱스를 의미하고, 세로축은 메모리 영역들 각각의 소거 카운트를 의미할 수 있다. 따라서, 도2의 그래프에서 점들은 메모리 영역들(MR0~MRn)에 각각 대응할 수 있다.
도2를 참조하면, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들에 근거하여 웨어 레벨링 동작을 위한 후보 메모리 영역들(111)을 선택할 수 있다. 구체적으로, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들 중 최소 소거 카운트(MIN)에 제1 값(VL1)을 더한 제2 값(VL2)보다 작은 소거 카운트를 가진 메모리 영역들을 후보 메모리 영역들(111)로 선택할 수 있다. 따라서, 복수의 메모리 영역들(MR0~MRn) 중 적게 마모된 메모리 영역들이 후보 메모리 영역들(111)로 선택될 수 있다.
한편, 제1 값(VL1)은 컨트롤러(100)의 오버헤드를 고려하여 동작 환경에 따라 적절한 값으로 설정될 수 있다. 즉, 제1 값(VL1)이 높을수록 한번에 많은 후보 메모리 영역들(111)이 선택되므로 시간 경과에 따른 메모리 영역들의 상태 변화가 잘 반영되지 않을 수 있다. 반면에 제1 값(VL1)이 낮을수록 후보 메모리 영역들(111)을 선택하는 과정이 자주 수행되므로 컨트롤러(100)의 오버헤드를 증가시킬 수 있다.
상술한 방법에 따라 선택되는 후보 메모리 영역들(111)의 개수는, 저장 매체(500)를 사용하는 동안 후보 메모리 영역들(111)을 선택할 때마다 다를 수 있다. 메모리 관리부(110)는 선택된 후보 메모리 영역들(111)의 개수에 근거하여 조절 값(112)을 결정할 수 있다. 구체적으로, 메모리 관리부(110)는 아래 식에 근거하여 조절 값(112)을 결정할 수 있다.
조절 값 = (후보 메모리 영역들(111)의 개수/전체 메모리 영역들(MR0~MRn)의 개수) * p.
이때, "p"는 컨트롤러(100)의 오버헤드를 고려하여 동작 환경에 따라 적절한 값으로 설정될 수 있다. 즉, "p"가 너무 높으면, 관리 조건이 만족할 때마다 너무 많은 빅팀 메모리 영역들이 처리되므로 컨트롤러(100)의 오버헤드를 증가시킬 수 있다. 반대로, "p"가 너무 낮으면, 웨어 레벨링 효율이 낮아질 수 있다.
도3은 도1의 메모리 관리부(110)가 웨어 레벨링 동작을 수행하는 방법을 예시적으로 설명하기 위한 도면이다.
시간(T1)에서, 메모리 관리부(110)는 관리 조건이 만족한 것으로, 즉, 시간(T0)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 이때, 메모리 관리부(110)는 선택된 후보 메모리 영역들이 존재하지 않는 것으로 판단하고, 도2를 참조하여 설명한 방법에 따라 복수의 메모리 영역들(MR0~MRn) 중에서 후보 메모리 영역들(310)을 선택할 수 있다. 후보 메모리 영역들(310)로 표시된 막대의 길이는 후보 메모리 영역들(310)의 개수에 비례하고, 따라서, 이후 막대 길이의 변화는 후보 메모리 영역들(310)의 개수의 변화를 의미할 수 있다. 이어서, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(310)의 비율에 근거하여 조절 값(α1)을 결정할 수 있다. 그리고, 메모리 관리부(110)는 후보 메모리 영역들(310) 중 조절 값(α1)만큼 빅팀 메모리 영역들을 임의적으로 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(110)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(310)로부터 제거할 수 있다.
시간(T2)에서, 메모리 관리부(110)는 시간(T1)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(110)는 남아있는 후보 메모리 영역들(310) 중 시간(T1)에서 결정되었던 조절 값(α1)만큼 빅팀 메모리 영역들을 임의적으로 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(110)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(310)로부터 제거할 수 있다.
시간(T3)에서, 메모리 관리부(110)는 시간(T2)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(110)는 남아있는 후보 메모리 영역들(310) 중 앞서 결정되었던 조절 값(α1)만큼 빅팀 메모리 영역들을 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(110)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(310)로부터 제거할 수 있다.
시간(T4)에서, 메모리 관리부(110)는 시간(T3)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(110)는 더 이상 후보 메모리 영역들(310)이 존재하지 않는 것으로 판단하고, 새로운 후보 메모리 영역들(320)을 선택할 수 있다. 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(320)의 비율에 근거하여 조절 값(α2)을 새롭게 결정할 수 있다. 예를 들어, 시간(T)에서 선택된 후보 메모리 영역들(320)의 개수는 시간(T)에서 선택된 후보 메모리 영역들(310)의 개수보다 작고, 결과적으로 조절 값(α2)은 시간(T)에서 더 작게 결정될 수 있다. 그리고, 메모리 관리부(110)는 후보 메모리 영역들(320) 중 조절 값(α2)만큼 빅팀 메모리 영역들을 임의적으로 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(110)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(320)로부터 제거할 수 있다.
도4는 도1의 데이터 저장 장치(10)의 동작 방법을 도시하는 순서도이다.
도4를 참조하면, 단계(S110)에서, 메모리 관리부(110)는 관리 조건이 만족하는지 여부를 판단할 수 있다. 예를 들어, 메모리 관리부(110)는 라이트 데이터의 크기를 누적하면서 누적된 라이트 데이터의 크기가 임계 크기에 도달했는지 여부를 판단할 수 있다. 관리 조건이 만족하지 않을 때, 절차는 종료할 수 있다. 관리 조건이 만족할 때, 절차는 단계(S120)로 이동할 수 있다.
단계(S120)에서, 메모리 관리부(110)는 후보 메모리 영역들(111)이 존재하는지 여부를 판단할 수 있다. 즉, 메모리 관리부(110)는 앞서 선택되고 아직 가비지 수집되지 않은 후보 메모리 영역들(111)이 존재하는지 여부를 판단할 수 있다. 후보 메모리 영역들(111)이 존재할 때, 절차는 단계(S150)로 이동할 수 있다. 이때, 후보 메모리 영역들(111)이 존재한다면, 조절 값(112)은 후보 메모리 영역들(111)을 선택할 당시 결정되었을 것이고, 단계(S150)에서 해당 조절 값(112)에 따라 빅팀 메모리 영역들이 선택될 수 있다. 그러나, 후보 메모리 영역들(111)이 존재하지 않을 때, 절차는 단계(S130)로 이동할 수 있다.
단계(S130)에서, 메모리 관리부(110)는 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들에 근거하여 하나 이상의 후보 메모리 영역들(111)을 선택할 수 있다. 예를 들어, 메모리 관리부(110)는 소거 카운트들 중 최소 소거 카운트에 제1 값을 더한 제2 값보다 작은 소거 카운트를 가진 메모리 영역들을 후보 메모리 영역들(111)로 선택할 수 있다.
단계(S140)에서, 메모리 관리부(110)는 후보 메모리 영역들(111)의 개수에 근거하여 조절 값(112)을 결정할 수 있다. 구체적으로, 조절 값(112)은 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(111)의 비율에 비례하도록 결정될 수 있다. 결정된 조절 값(112)은, 단계(S130)에서 선택된 후보 메모리 영역들(111)이 모두 가비지 수집될 때까지 유지될 수 있다.
단계(S150)에서, 메모리 관리부(110)는 후보 메모리 영역들(111) 중에서 조절 값(112)만큼 빅팀 메모리 영역들을 선택할 수 있다. 이때, 후보 메모리 영역들(111) 중 빅팀 메모리 영역들을 임의적으로 선택하는 것은 웨어 레벨링 효과를 극대화시킬 수 있다.
단계(S160)에서, 메모리 관리부(110)는 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 구체적으로, 메모리 관리부(110)는 빅팀 메모리 영역들에 저장된 유효 데이터를 복수의 메모리 영역들(MR0~MRn) 중 프리 메모리 영역으로 이동시키고, 빅팀 메모리 영역들을 프리 메모리 영역들로 전환할 수 있다. 메모리 관리부(110)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(111)로부터 제거할 수 있다.
도4에 도시된 절차는 반복적으로 수행될 수 있다.
도5는 본 발명의 실시 예에 따른 데이터 저장 장치(20)를 예시적으로 도시한 블록도이다.
데이터 저장 장치(20)는 컨트롤러(200) 및 저장 매체(500)를 포함할 수 있다. 컨트롤러(200)는 메모리 관리부(210)를 포함할 수 있다.
메모리 관리부(210)는 도1의 메모리 관리부(110)와 동일한 방법으로, 복수의 메모리 영역들(MR0~MRn)의 소거 카운트들에 근거하여 후보 메모리 영역들(211)을 선택할 수 있다. 또한, 메모리 관리부(210)는 도1의 메모리 관리부(110)와 동일한 방법으로, 선택된 후보 메모리 영역들(211)의 개수에 근거하여 조절 값(212)을 결정할 수 있다. 다만, 메모리 관리부(210)는 조절 값(212)뿐만 아니라 모드 값(213)에 근거하여 후보 메모리 영역들(211) 중 빅팀 메모리 블록들을 선택할 수 있다. 즉, 메모리 관리부(210)는 조절 값(212)과 모드 값(213)의 합만큼 후보 메모리 영역들(211) 중 빅팀 메모리 블록들을 선택할 수 있다.
구체적으로, 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn) 중 프리 메모리 영역들의 개수를 판단하고, 프리 메모리 영역들의 개수에 근거하여 모드 값(213)을 결정할 수 있다. 모드 값(213)은, 관리 동작의 복수의 모드들 중 프리 메모리 영역들의 개수에 따라 선택되는 모드에 대응할 수 있다. 이때, 각각의 모드들은 더 큰 프리 메모리 영역들의 개수에 대응할수록 더 큰 모드 값(213)에 대응할 수 있다. 모드 값(213)은, 관리 조건이 만족함으로써 웨어 레벨링 동작이 수행될 때마다, 프리 메모리 영역들의 개수에 따라 선택될 수 있다.
즉, 적게 마모된 빅팀 메모리 영역들은 유효 데이터를 상대적으로 많이 가지므로 그러한 빅팀 메모리 영역들에 대한 가비지 컬렉션 동작은 컨트롤러의 오버헤드를 증가시킬 수 있다. 따라서, 프리 메모리 영역들의 개수가 많을 때, 많은 빅팀 메모리 영역들에 대해 가비지 컬렉션 동작이 수행됨으로써 오버헤드가 분산될 수 있다.
한편, 웨어 레벨링 동작의 모드들은 서로 다른 관리 조건들에 대응할 수 있다. 예를 들어, 누적된 라이트 데이터의 크기와 비교되는 임계 크기들이 모드들에 따라 서로 다르게 설정될 수 있다. 예를 들어, 복수의 모드들은 더 큰 프리 메모리 영역들의 개수에 대응할수록 더 큰 임계 크기에 대응할 수 있다. 따라서, 프리 메모리 영역들의 개수가 많을 수록 웨어 레벨링 동작은 긴 간격으로 수행되므로, 컨트롤러(200)의 오버헤드가 조절될 수 있다.
도6은 도5의 메모리 관리부(210)의 웨어 레벨링 동작의 모드들(MODE1~MODE3)을 도시하는 테이블이다.
도6을 참조하면, 웨어 레벨링 동작은 모드 조건, 즉, 프리 메모리 영역들의 개수(f)에 따라 모드들(MODE1~MODE3) 중 어느 하나의 모드로 수행될 수 있다. 이때, 각각의 모드들(MODE1~MODE3)은 모드 값들(m1~m3)에 각각 대응하고, 더 큰 프리 메모리 영역들의 개수(f)에 대응할수록 더 큰 모드 값에 대응할 수 있다. 메모리 관리부(210)는 프리 메모리 영역들의 개수(f)에 따라 결정된 모드의 모드 값을 선택할 수 있다. 한편, 후보 메모리 영역들(211)의 개수에 따라 결정된 조절 값(α)은, 모드에 무관하게, 후보 메모리 영역들(211)이 모두 가비지 수집될 때까지 유지될 수 있다.
그리고, 각각의 모드들(MODE1~MODE3)은 임계 크기들(s1~s3)에 각각 대응하고, 더 큰 프리 메모리 영역들의 개수(f)에 대응할수록 더 큰 임계 크기에 대응할 수 있다.
따라서, 예를 들어, 프리 메모리 영역들의 개수(f)가 값들(f2, f1)의 사이에 포함될 때, 메모리 관리부(210)는 모드(MODE2)를 선택하고, 조절 값(α)과 모드 값(m2)의 합만큼 후보 메모리 영역들(211) 중에서 빅팀 메모리 영역들 선택할 수 있다. 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작이 수행된 이후, 모드(MODE2)에 대응하는 임계 크기(s2)에 근거하여 그 다음 웨어 레벨링 동작을 위한 관리 조건이 만족하는지 여부가 판단될 수 있다.
실시 예에 따라, 모드들(MODE1~MODE3)은 프리 메모리 영역들의 개수(f)가 아니라, 전체 메모리 영역들(MR0~MRn)에 대한 프리 메모리 영역들의 비율에 따라 구분될 수도 있다.
한편, 도6은 웨어 레벨링 동작이 3개의 모드들(MODE1~MODE3)로 수행되는 경우를 도시하나, 실시 예에 따라 모드들의 개수는 이에 제한되지 않는다.
도7은 도5의 메모리 관리부(210)가 도6의 테이블에 근거하여 웨어 레벨링 동작을 수행하는 방법을 설명하기 위한 도면이다.
시간(T11)에서, 메모리 관리부(210)는 관리 조건이 만족한 것으로, 즉, 시간(T0)부터 누적된 라이트 데이터의 크기가 설정된 임계 크기에 도달한 것으로 판단할 수 있다. 이때, 메모리 관리부(210)는 선택된 후보 메모리 영역들(211)이 존재하지 않는 것으로 판단하고, 도2를 참조하여 설명한 방법에 따라 복수의 메모리 영역들(MR0~MRn) 중에서 후보 메모리 영역들(710)을 선택할 수 있다. 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(710)의 비율에 근거하여 조절 값(α1)을 결정할 수 있다. 또한, 메모리 관리부(210)는 프리 메모리 영역들의 개수(f)에 근거하여 모드(MODE1) 및 모드(MODE1)에 대응하는 모드 값(m1)을 결정할 수 있다. 그리고, 메모리 관리부(210)는 후보 메모리 영역들(710) 중 조절 값(α1)과 모드 값(m1)의 합만큼 빅팀 메모리 영역들을 선택하고, 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(710)로부터 제거할 수 있다. 메모리 관리부(210)는 모드(MODE1)에 대응하는 임계 크기(s1)를 새로운 관리 조건으로 설정할 수 있다.
시간(T12)에서, 메모리 관리부(210)는 시간(T11)부터 누적된 라이트 데이터의 크기가 임계 크기(s1)에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 프리 메모리 영역들의 개수(f)에 근거하여 모드(MODE2) 및 모드(MODE2)에 대응하는 모드 값(m2)을 결정할 수 있다. 그리고, 메모리 관리부(210)는 남아있는 후보 메모리 영역들(710) 중 시간(T11)에서 결정되었던 조절 값(α1)과 모드 값(m2)의 합만큼 빅팀 메모리 영역들을 선택하고, 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(710)로부터 제거할 수 있다. 메모리 관리부(210)는 모드(MODE2)에 대응하는 임계 크기(s2)를 새로운 관리 조건으로 설정할 수 있다.
도8은 도5의 데이터 저장 장치(20)의 동작 방법을 도시하는 순서도이다. 이하에서 도5, 도6 및 도8을 참조하여, 데이터 저장 장치(20)의 동작 방법이 설명될 것이다.
도8을 참조하면, 단계들(S210~S240)은 도4의 단계들(S110~S140)과 실질적으로 동일할 수 있다.
단계(S250)에서, 메모리 관리부(210)는 프리 메모리 영역들의 개수(f)에 근거하여 모드 값(213)을 결정할 수 있다. 모드 값(213)은, 복수의 모드들 중 프리 메모리 영역들의 개수(f)에 대응하는 모드의 모드 값일 수 있다. 이때, 각각의 모드들은 더 많은 프리 메모리 영역들의 개수(f)에 대응할수록 더 큰 모드 값에 대응할 수 있다.
단계(S260)에서, 메모리 관리부(210)는 후보 메모리 영역들(211) 중에서 조절 값(212)과 모드 값(213)의 합만큼 빅팀 메모리 영역들을 선택할 수 있다.
단계(S270)는 도4의 단계(S160)와 실질적으로 동일할 수 있다.
도9는 도5의 메모리 관리부(210)의 웨어 레벨링 동작 및 메모리 확보 동작의 모드들(MODE1~MODE4)을 도시하는 테이블이다.
실시 예에 따라, 메모리 관리부(210)는 관리 조건이 만족할 때, 프리 메모리 영역들의 개수에 근거하여, 웨어 레벨링 동작보다 효율적으로 프리 메모리 영역들을 확보할 수 있는 메모리 확보 동작을 우선하여 수행할 수 있다. 다른 말로 하면, 메모리 관리부(210)는 관리 조건이 만족할 때, 프리 메모리 영역들의 개수에 근거하여, 후보 메모리 영역들(211) 중 빅팀 메모리 영역들을 선택하는 것 대신에 복수의 메모리 영역들(MR0~MRn) 각각의 유효 데이터량에 따라 복수의 메모리 영역들(MR0~MRn) 중 빅팀 메모리 영역들을 선택할 수 있다.
메모리 관리부(210)는, 예를 들어, 프리 메모리 영역들의 개수가 임계 개수 미만일 때, 웨어 레벨링 동작 대신 메모리 확보 동작을 수행할 것으로 판단할 수 있다. 메모리 관리부(210)는 메모리 확보 동작을 수행할 때, 복수의 메모리 영역들(MR0~MRn) 중 유효 데이터를 적게 가지는 메모리 영역들을 빅팀 메모리 영역들로 선택할 수 있다. 그리고, 메모리 관리부(210)는 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 즉, 메모리 확보가 우선시될 때는 가비지 수집 비용을 최소화하기 위해 유효 데이터량에 근거하여 빅팀 메모리 영역들이 선택될 수 있다.
실시 예에 따라, 메모리 관리부(210)는 프리 메모리 영역들의 개수 대신에 전체 메모리 영역들에 대한 프리 메모리 영역들의 비율에 근거하여, 웨어 레벨링 동작 대신 메모리 확보 동작을 우선하여 수행할지 여부를 판단할 수도 있다. 즉, 메모리 관리부(210)는 전체 메모리 영역들에 대한 프리 메모리 영역들의 비율이 임계 비율 미만일 때, 메모리 확보 동작을 우선하여 수행할 것으로 판단할 수 있다.
따라서, 도9를 참조하면, 메모리 관리 동작, 즉, 웨어 레벨링 동작 및 메모리 확보 동작은 모드 조건, 즉, 프리 메모리 영역들의 개수(f)에 따라 모드들(MODE1~MODE4) 중 어느 하나의 모드로 수행될 수 있다. 구체적으로, 프리 메모리 영역들의 개수(f)가 임계 개수(f3) 미만일 때 메모리 확보 동작이 모드(MODE4)에서 수행되고, 임계 개수(f3) 이상일 때 웨러 레벨링 동작이 모드들(MODE1~MODE3) 중 어느 하나에서 수행될 수 있다. 모드들(MODE1~MODE3)에서 웨어 레벨링 동작이 수행되는 방법은 도6을 참조하여 설명한 방법과 동일할 수 있다. 모드(MODE4)에서 메모리 관리부(210)는 웨어 레벨링 동작을 위해 선택되었던 후보 메모리 영역들(211)로부터 빅팀 메모리 영역들을 선택하지 않고, 복수의 메모리 영역들(MR0~MRn) 중에서 유효 데이터량이 작은 메모리 영역들을 빅팀 메모리 영역들로 선택할 수 있다.
실시 예에 따라, 모드(MODE4)에서 선택되는 빅팀 메모리 영역들의 개수는 제한되지 않을 수 있다. 메모리 관리부(210)는 메모리 확보 동작을 개시한 때로부터 소정 시간이 경과할 때까지, 가능한 많은 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다.
한편, 도9는 웨어 레벨링 동작이 3개의 모드들(MODE1~MODE3)로 수행되고, 메모리 확보 동작이 1개의 모드(MODE4)로 수행되는 경우를 도시하나, 실시 예에 따라 모드들의 개수는 이에 제한되지 않는다.
도10은 도5의 메모리 관리부(210)가 도9의 테이블에 근거하여 웨어 레벨링 동작 및 메모리 확보 동작을 수행하는 방법을 설명하기 위한 도면이다.
시간(T21)에서, 메모리 관리부(210)는 관리 조건이 만족한 것으로, 즉, 시간(T0)부터 누적된 라이트 데이터의 크기가 설정된 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 임계 개수(f3) 이상인 프리 메모리 영역들의 개수에 근거하여 모드(MODE1)를 결정하고, 웨어 레벨링 동작을 수행할 것으로 판단할 수 있다. 메모리 관리부(210)는 선택된 후보 메모리 영역들이 존재하지 않는 것으로 판단하고, 복수의 메모리 영역들(MR0~MRn) 중에서 후보 메모리 영역들(1010)을 선택할 수 있다. 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(1010)의 비율에 근거하여 조절 값(α1)을 결정할 수 있다. 그리고, 메모리 관리부(210)는 후보 메모리 영역들(1010) 중 조절 값(α1)과 모드(MODE1)에 대응하는 모드 값(m1)의 합만큼 빅팀 메모리 영역들을 선택하고, 선택된 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(1010)로부터 제거할 수 있다. 메모리 관리부(210)는 모드(MODE1)에 대응하는 임계 크기(s1)를 새로운 관리 조건으로 설정할 수 있다.
시간(T22)에서, 메모리 관리부(210)는 시간(T21)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 임계 개수(f3) 미만인 프리 메모리 영역들의 개수에 근거하여 모드(MODE4)를 결정하고, 메모리 확보 동작을 수행할 것으로 결정할 수 있다. 따라서, 메모리 관리부(210)는 후보 메모리 영역들(1010)이 아니라, 복수의 메모리 영역들(MR0~MRn) 중에서 유효 데이터량에 근거하여 빅팀 메모리 영역들(1020)을 선택하고, 소정 시간 동안 빅팀 메모리 영역들(1020)에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 모드(MODE4)에 대응하는 임계 크기(s4)를 새로운 관리 조건으로 설정할 수 있다.
시간(T23)에서, 메모리 관리부(210)는 시간(T22)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 임계 개수(f3) 이상인 프리 메모리 영역들의 개수에 근거하여 모드(MODE2)를 결정하고, 웨어 레벨링 동작을 수행할 것으로 판단할 수 있다. 따라서, 메모리 관리부(210)는 남아있는 후보 메모리 영역들(1010) 중 시간(T21)에서 결정되었던 조절 값(α1)과 모드(MODE2)에 대응하는 모드 값(m2)의 합만큼 빅팀 메모리 영역들을 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(1010)로부터 제거할 수 있다. 메모리 관리부(210)는 모드(MODE2)에 대응하는 임계 크기(s2)를 새로운 관리 조건으로 설정할 수 있다.
시간(T24)에서, 메모리 관리부(210)는 시간(T23)부터 누적된 라이트 데이터의 크기가 임계 크기에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 임계 개수(f3) 이상인 프리 메모리 영역들의 개수에 근거하여 모드(MODE2)를 결정하고, 웨어 레벨링 동작을 수행할 것으로 판단할 수 있다. 메모리 관리부(210)는 더 이상 후보 메모리 영역들(1010)이 존재하지 않는 것으로 판단하고, 새로운 후보 메모리 영역들(1030)을 선택할 수 있다. 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn)에 대한 후보 메모리 영역들(1030)의 비율에 근거하여 조절 값(α2)을 새롭게 결정할 수 있다. 따라서, 메모리 관리부(210)는 후보 메모리 영역들(1030) 중 조절 값(α2)과 모드(MODE2)에 대응하는 모드 값(m2)의 합만큼 빅팀 메모리 영역들을 선택하고, 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 가비지 수집된 빅팀 메모리 영역들을 후보 메모리 영역들(1030)로부터 제거할 수 있다. 메모리 관리부(210)는 모드(MODE2)에 대응하는 임계 크기(s2)를 새로운 관리 조건으로 설정할 수 있다.
도11은 도5의 데이터 저장 장치(20)의 동작 방법을 도시하는 순서도이다. 이하에서 도5, 도9 및 도11을 참조하여, 데이터 저장 장치(20)의 동작 방법이 설명될 것이다.
도11을 참조하면, 단계(S310)는 도8의 단계(S210)와 실질적으로 동일할 수 있다.
단계(S320)에서, 메모리 관리부(210)는 프리 메모리 영역들의 개수(f)가 임계 개수 미만인지 여부를 판단할 수 있다. 프리 메모리 영역들의 개수(f)가 임계 개수 미만일 때 절차는 메모리 확보 동작을 위해 단계(S330)로 진행될 수 있다. 프리 메모리 영역들의 개수(f)가 임계 개수 이상일 때 절차는 웨어 레벨링 동작을 위해 단계(S350)로 진행될 수 있다.
단계(S330)에서, 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn) 중에서 유효 데이터량에 근거하여 빅팀 메모리 영역들을 선택할 수 있다.
단계들(S340~S390)은 도8의 단계들(S220~S270)과 실질적으로 동일할 수 있다.
도12는 도5의 메모리 관리부(210)의 웨어 레벨링 동작 및 메모리 확보 동작의 모드들(MODE1~MODE4)을 도시하는 테이블이다.
앞선 실시 예들에서, 메모리 관리부(210)는 웨어 레벨링 동작을 수행할 것으로 결정했지만 후보 메모리 영역들(211)이 존재하지 않을 때, 새로운 후보 메모리 영역들(211)을 곧바로 선택할 수 있었다. 실시 예에 따라, 메모리 관리부(210)는 후보 메모리 영역들(211)을 후보 선택 조건이 만족할 때마다 선택할 수 있다. 따라서, 메모리 관리부(210)는 후보 선택 조건이 만족하기 전에 후보 메모리 영역들(211)이 모두 가비지 수집된 경우에는 프리 메모리 영역들의 개수가 충분하더라도 웨어 레벨링 동작 대신 메모리 확보 동작을 수행할 수 있다. 후보 선택 조건은, 예를 들어, 관리 조건과 유사하게, 누적된 라이트 데이터의 크기가 소정의 임계 크기에 도달했는지 여부일 수 있다. 메모리 관리부(210)는 관리 조건이 만족한 것을 전제로 후보 선택 조건을 판단할 수 있다. 그러나 실시 예에 따라, 메모리 관리부(210)는 관리 조건과 독립적으로 후보 선택 조건을 판단할 수도 있다.
따라서, 도12를 참조하면, 모드들(MODE1~MODE4)은 관리 조건이 만족했을 때 선택될 수 있고, 도9의 모드들(MODE1~MODE4)과 실질적으로 유사할 수 있다. 다만, 메모리 확보 동작을 위한 모드(MODE4)는 새로운 모드 조건, 즉, 후보 선택 조건이 아직 만족되지 않았지만 후보 메모리 영역들(211)이 부존재할 때 선택될 수 있다.
도13은 도5의 메모리 관리부(210)가 도12의 테이블에 근거하여 웨어 레벨링 동작 및 메모리 확보 동작을 수행하는 다른 방법을 설명하기 위한 도면이다.
시간들(T31~T33)에서 메모리 관리부(210)의 동작은, 도10의 시간들(T21~T23)에서 메모리 관리부(210)의 동작과 동일할 수 있다.
시간(T34)에서, 메모리 관리부(210)는 시간(T33)부터 누적된 라이트 데이터의 크기가 모드(MODE2)에 대응하는 임계 크기(s2)에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 프리 메모리 영역들의 개수가 임계 개수(f3) 이상이지만 시간(T31)에서 선택된 후보 메모리 영역들(1310)이 존재하지 않고, 시간(T31)부터 누적된 라이트 데이터의 크기가 후보 선택 조건에 대응하는 임계 크기에 도달하지 않은 것으로 판단할 수 있다. 따라서, 메모리 관리부(210)는 메모리 확보 동작을 수행할 것으로 결정할 수 있다. 메모리 관리부(210)는 복수의 메모리 영역들(MR0~MRn) 중에서 유효 데이터량에 근거하여 빅팀 메모리 영역들(1330)을 선택하고, 소정 시간 동안 빅팀 메모리 영역들(1330)에 대해 가비지 수집 동작을 수행할 수 있다. 메모리 관리부(210)는 모드(MODE4)에 대응하는 임계 크기(s4)를 새로운 관리 조건으로 설정할 수 있다.
시간(T35)에서, 메모리 관리부(210)는 시간(T34)부터 누적된 라이트 데이터의 크기가 모드(MODE4)에 대응하는 임계 크기(s4)에 도달한 것으로 판단할 수 있다. 메모리 관리부(210)는 임계 개수(f3) 이상인 프리 메모리 영역들의 개수에 근거하여 모드(MODE2)를 결정하고, 후보 메모리 영역들(1310)을 선택했던 시간(T31)부터 누적된 라이트 데이터의 크기가 후보 선택 조건에 대응하는 임계 크기에 도달한 것으로 판단할 수 있다. 따라서, 메모리 관리부(210)는 새로운 후보 메모리 영역들(1340)을 선택할 수 있다. 그 후 메모리 관리부(210)가 웨어 레벨링 동작을 수행하는 방법은 앞서 설명된 바와 유사하므로 생략될 것이다.
도14는 도5의 데이터 저장 장치(10)의 동작 방법을 도시하는 순서도이다. 이하에서 도5, 도12 및 도14를 참조하여, 데이터 저장 장치(20)의 동작 방법이 설명될 것이다.
도14를 참조하면, 단계들(S410~S440)은 도11의 단계(S310~S340)들과 실질적으로 동일할 수 있다.
단계(S450)에서, 메모리 관리부(210)는 후보 선택 조건이 만족하는지 여부를 판단할 수 있다. 예를 들어, 메모리 관리부(110)는 라이트 데이터의 크기를 누적하면서 누적된 라이트 데이터의 크기가 후보 선택 조건에 대응하는 임계 크기에 도달했는지 여부를 판단할 수 있다. 후보 선택 조건이 만족할 때, 절차는 단계(S460)로 진행될 수 있다. 후보 선택 조건이 만족하지 않을 때, 절차는 단계(S430)로 진행될 수 있다.
단계들(S460~S500)은 도11의 단계(S350~S390)들과 실질적으로 동일할 수 있다.
도15는 본 발명의 실시 예에 따른 SSD(1000)를 도시하는 블록도이다.
SSD(1000)는 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. 컨트롤러(1100)는 내부 버스(1170)을 통해 연결된 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스(1150) 및 저장 매체 인터페이스(1160)를 포함할 수 있다.
컨트롤러(1100)는 도1 또는 도5에 도시된 컨트롤러(100, 200)와 실질적으로 유사하게 동작할 수 있다.
프로세서(1110)는 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 데이터 처리 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
램(1120)은 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다.
롬(1130)은 프로세서(1110)에 의해 리드되는 프로그램 코드를 저장할 수 있다. 프로그램 코드는 프로세서(1110)가 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다.
호스트 인터페이스(1150)는 호스트 장치(1500)와 데이터 처리 요청 및 데이터 등을 교환할 수 있다.
저장 매체 인터페이스(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 저장 매체 인터페이스(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체(1200)는 복수의 비휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 비휘발성 메모리 장치들(NVM0~NVMn) 각각은 컨트롤러(1100)의 제어에 따라 라이트 동작 및 리드 동작을 수행할 수 있다.
도16은 본 발명의 실시 예에 따른 데이터 저장 장치들(10, 20)이 적용된 데이터 처리 시스템(2000)을 도시하는 블록도이다.
데이터 처리 시스템(2000)은 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션 등을 포함할 수 있다. 데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 데이터 저장 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다.
메인 메모리 장치(2200)는 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 데이터 저장 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
데이터 저장 장치(2300)는 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 데이터 저장 장치(2300)는 도1 또는 도5의 데이터 저장 장치(10, 20)와 실질적으로 유사하게 구성되고 동작할 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린, 스크린 모니터, 프린터 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치
100: 컨트롤러
110: 메모리 관리부
111: 후보 메모리 영역들
112: 조절 값
500: 저장 매체
MR0~MRn: 메모리 영역들

Claims (18)

  1. 복수의 메모리 영역들을 포함하는 비휘발성 메모리 장치; 및
    상기 복수의 메모리 영역들의 소거 카운트 정보에 근거하여 상기 복수의 메모리 영역들 중에서 하나 이상의 후보 메모리 영역들을 선택하고, 상기 후보 메모리 영역들의 개수에 근거하여 조절 값을 결정하고, 상기 후보 메모리 영역들 중 상기 조절 값만큼 빅팀 메모리 영역들을 선택하고, 상기 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행하도록 구성된 컨트롤러를 포함하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 컨트롤러는, 상기 조절 값이 상기 복수의 메모리 영역들에 대한 상기 후보 메모리 영역들의 비율에 비례하도록, 상기 조절 값을 결정하는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 컨트롤러는, 상기 소거 카운트들 중 최소 소거 카운트에 제1 값을 더한 제2 값보다 작은 소거 카운트를 가진 메모리 영역들을 상기 후보 메모리 영역들로 선택하는 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 컨트롤러는, 누적된 라이트 데이터의 크기를 참조하여 관리 조건을 만족하는지 여부를 판단하고, 상기 관리 조건을 만족할 때마다 상기 후보 메모리 영역들 중 상기 조절 값만큼 새롭게 선택된 빅팀 메모리 영역들에 대해 상기 가비지 수집 동작을 수행하는 데이터 저장 장치.
  5. 제4항에 있어서,
    상기 컨트롤러는, 상기 관리 조건을 만족할 때마다, 상기 후보 메모리 영역들 중 상기 가비지 수집 동작이 수행되지 않은 후보 메모리 영역들이 존재하는지 여부를 판단하고, 판단 결과에 따라 상기 소거 카운트들에 근거하여 상기 복수의 메모리 영역들 중 하나 이상의 후보 메모리 영역들을 새롭게 선택하는 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 컨트롤러는, 상기 가비지 수집 동작이 수행되지 않은 상기 후보 메모리 영역들이 존재하지 않을 때 후보 선택 조건이 만족하는지 여부를 판단하고, 상기 후보 선택 조건이 불만족할 때 상기 후보 메모리 영역들 중 상기 빅팀 메모리 영역들을 선택하는 것 대신에 상기 복수의 메모리 영역들 각각의 유효 데이터량에 따라 상기 복수의 메모리 영역들 중 빅팀 메모리 영역들을 선택하는 데이터 저장 장치.
  7. 제1항에 있어서,
    상기 컨트롤러는, 상기 복수의 메모리 영역들 중 프리 메모리 영역들의 개수에 근거하여, 상기 후보 메모리 영역들 중 상기 빅팀 메모리 영역들을 선택하는 것 대신에 상기 복수의 메모리 영역들 각각의 유효 데이터량에 따라 상기 복수의 메모리 영역들 중 빅팀 메모리 영역들을 선택하는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 컨트롤러는, 상기 복수의 메모리 영역들 중 프리 메모리 영역들의 개수에 근거하여 모드 값을 결정하고, 상기 조절 값과 상기 모드 값의 합만큼 상기 빅팀 메모리 영역들을 선택하는 데이터 저장 장치.
  9. 제8항에 있어서,
    상기 모드 값은 복수의 모드들 중 상기 프리 메모리 영역들의 상기 개수에 대응하는 모드의 모드 값이고,
    상기 각각의 모드들은 더 큰 프리 메모리 영역들의 개수에 대응할수록 더 큰 모드 값에 대응하는 데이터 저장 장치.
  10. 복수의 메모리 영역들의 소거 카운트들에 근거하여 상기 복수의 메모리 영역들 중에서 하나 이상의 후보 메모리 영역들을 선택하는 단계;
    상기 후보 메모리 영역들의 개수에 근거하여 조절 값을 결정하는 단계;
    상기 후보 메모리 영역들 중 상기 조절 값만큼 하나 이상의 빅팀 메모리 영역들을 선택하는 단계; 및
    상기 빅팀 메모리 영역들에 대해 가비지 수집 동작을 수행하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  11. 제10항에 있어서,
    상기 조절 값을 결정하는 단계는,
    상기 조절 값이 상기 복수의 메모리 영역들에 대한 상기 후보 메모리 영역들의 비율에 비례하도록, 상기 조절 값을 결정하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  12. 제10항에 있어서,
    상기 후보 메모리 영역들을 선택하는 단계는,
    상기 소거 카운트들 중 최소 소거 카운트에 제1 값을 더한 제2 값보다 작은 소거 카운트를 가진 메모리 영역들을 상기 후보 메모리 영역들로 선택하는 단계를 포함하는 데이터 저장 장치의 동작 방법.
  13. 제10항에 있어서,
    누적된 라이트 데이터의 크기를 참조하여 관리 조건을 만족하는지 여부를 판단하는 단계; 및
    상기 관리 조건을 만족할 때마다 상기 후보 메모리 영역들 중 상기 조절 값만큼 새롭게 선택된 빅팀 메모리 영역들에 대해 상기 가비지 수집 동작을 수행하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  14. 제13항에 있어서,
    상기 관리 조건을 만족할 때마다 상기 후보 메모리 영역들 중 상기 가비지 수집 동작이 수행되지 않은 후보 메모리 영역들이 존재하는지 여부를 판단하는 단계; 및
    판단 결과에 따라 상기 소거 카운트들에 근거하여 상기 복수의 메모리 영역들 중 하나 이상의 후보 메모리 영역들을 새롭게 선택하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  15. 제14항에 있어서,
    상기 가비지 수집 동작이 수행되지 않은 상기 후보 메모리 영역들이 존재하지 않을 때 후보 선택 조건이 만족하는지 여부를 판단하는 단계; 및
    상기 후보 선택 조건이 불만족할 때 상기 후보 메모리 영역들 중 상기 빅팀 메모리 영역들을 선택하는 것 대신에 상기 복수의 메모리 영역들 각각의 유효 데이터량에 따라 상기 복수의 메모리 영역들 중 빅팀 메모리 영역들을 선택하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  16. 제10항에 있어서,
    상기 복수의 메모리 영역들 중 프리 메모리 영역들의 개수에 근거하여, 상기 후보 메모리 영역들 중 상기 빅팀 메모리 영역들을 선택하는 것 대신에 상기 복수의 메모리 영역들 각각의 유효 데이터량에 따라 상기 복수의 메모리 영역들 중 빅팀 메모리 영역들을 선택하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
  17. 제10항에 있어서,
    상기 복수의 메모리 영역들 중 프리 메모리 영역들의 개수에 근거하여 모드 값을 결정하는 단계를 더 포함하되,
    상기 빅팀 메모리 영역들은 상기 조절 값과 상기 모드 값의 합만큼 선택되는 데이터 저장 장치의 동작 방법.
  18. 제17항에 있어서,
    상기 모드 값은 복수의 모드들 중 상기 프리 메모리 영역들의 상기 개수에 대응하는 모드의 모드 값이고,
    상기 각각의 모드들은 더 큰 프리 메모리 영역들의 개수에 대응할수록 더 큰 모드 값에 대응하는 데이터 저장 장치의 동작 방법.
KR1020160164549A 2016-12-05 2016-12-05 데이터 저장 장치 및 그것의 동작 방법 KR20180064198A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160164549A KR20180064198A (ko) 2016-12-05 2016-12-05 데이터 저장 장치 및 그것의 동작 방법
US15/441,375 US10157127B2 (en) 2016-12-05 2017-02-24 Data storage device and method including selecting a number of victim memory regions for garbage collection based on erase counts and the number of candidate memory regions
CN201710264384.1A CN108153680B (zh) 2016-12-05 2017-04-21 数据存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160164549A KR20180064198A (ko) 2016-12-05 2016-12-05 데이터 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180064198A true KR20180064198A (ko) 2018-06-14

Family

ID=62243995

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160164549A KR20180064198A (ko) 2016-12-05 2016-12-05 데이터 저장 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US10157127B2 (ko)
KR (1) KR20180064198A (ko)
CN (1) CN108153680B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068189B2 (en) 2019-04-09 2021-07-20 SK Hynix Inc. Storage device and control method thereof

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180108939A (ko) * 2017-03-23 2018-10-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10713155B2 (en) * 2018-07-19 2020-07-14 Micron Technology, Inc. Biased sampling methodology for wear leveling
KR20200043054A (ko) * 2018-10-17 2020-04-27 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11119912B2 (en) * 2019-03-25 2021-09-14 International Business Machines Corporation Ordering data updates for improving garbage collection being performed while performing the set of data updates
US10877882B1 (en) 2019-06-19 2020-12-29 Micron Technology, Inc. Garbage collection adapted to user device access
TWI705331B (zh) * 2019-06-24 2020-09-21 群聯電子股份有限公司 有效資料合併方法、記憶體控制電路單元與記憶體儲存裝置
KR20210089853A (ko) * 2020-01-09 2021-07-19 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
TWI741779B (zh) * 2020-09-04 2021-10-01 群聯電子股份有限公司 資料整併方法、記憶體儲存裝置及記憶體控制電路單元
KR20240010944A (ko) * 2022-07-18 2024-01-25 에스케이하이닉스 주식회사 컨트롤러 및 이의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070208904A1 (en) * 2006-03-03 2007-09-06 Wu-Han Hsieh Wear leveling method and apparatus for nonvolatile memory
CN101231617B (zh) * 2008-01-21 2013-03-20 中兴通讯股份有限公司 闪存设备的数据处理方法
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8621141B2 (en) 2010-04-01 2013-12-31 Intel Corporations Method and system for wear leveling in a solid state drive
TWI587136B (zh) * 2011-05-06 2017-06-11 創惟科技股份有限公司 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法
CN103377152A (zh) * 2012-04-26 2013-10-30 深圳市朗科科技股份有限公司 固态硬盘的写操作控制方法及写操作装置
US9411718B2 (en) * 2012-12-21 2016-08-09 Seagate Technology Llc Method to apply fine grain wear leveling and garbage collection
CN103455435A (zh) * 2013-08-29 2013-12-18 华为技术有限公司 数据写入方法及装置
US9632712B2 (en) * 2014-07-02 2017-04-25 Sandisk Technologies Llc System and method of updating metablocks associated with multiple memory dies
IN2015CH01601A (ko) * 2015-03-28 2015-05-01 Wipro Ltd
US10296452B2 (en) * 2015-05-11 2019-05-21 SK Hynix Inc. Data separation by delaying hot block garbage collection
US9911487B2 (en) * 2015-05-19 2018-03-06 EMC IP Holding Company LLC Method and system for storing and recovering data from flash memory
CN105528301A (zh) * 2015-12-07 2016-04-27 中国人民解放军信息工程大学 一种NAND Flash闪存垃圾回收方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068189B2 (en) 2019-04-09 2021-07-20 SK Hynix Inc. Storage device and control method thereof

Also Published As

Publication number Publication date
US10157127B2 (en) 2018-12-18
US20180157586A1 (en) 2018-06-07
CN108153680B (zh) 2021-10-26
CN108153680A (zh) 2018-06-12

Similar Documents

Publication Publication Date Title
KR20180064198A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN111742291B (zh) 具有用户空间闪存转换层的用户空间存储i/o栈的方法和系统
US20160162187A1 (en) Storage System And Method For Processing Writing Data Of Storage System
US9720820B2 (en) Data storage device and flash memory control method
KR20180014975A (ko) 데이터 저장 장치 및 그것의 동작 방법
US10437519B2 (en) Method and mobile terminal for processing write request
JP6968016B2 (ja) ストレージデバイスおよびコンピュータシステム
US20140115239A1 (en) Method of managing data in nonvolatile memory device
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US9081658B2 (en) Storage device and data management method thereof
US10235284B2 (en) Memory system
KR20190030790A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20180143902A1 (en) Data storage device and operating method thereof
KR20180004863A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20210051873A (ko) 컨트롤러 및 메모리 시스템
KR20180126921A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102526104B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
KR20170141298A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN110908595B (zh) 存储装置及信息处理系统
KR102523967B1 (ko) 데이터 저장 장치 및 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템
KR20180076276A (ko) 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
KR20170045406A (ko) 데이터 저장 장치 및 그것의 동작 방법
US11182290B2 (en) Data storage device and operating method thereof for performing a garbage collection operation in consideration of a lifetime of a nonvolatile memory device
KR102507769B1 (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination