KR101718888B1 - 메모리 시스템 및 그것의 가비지 컬렉션 방법 - Google Patents

메모리 시스템 및 그것의 가비지 컬렉션 방법 Download PDF

Info

Publication number
KR101718888B1
KR101718888B1 KR1020150134039A KR20150134039A KR101718888B1 KR 101718888 B1 KR101718888 B1 KR 101718888B1 KR 1020150134039 A KR1020150134039 A KR 1020150134039A KR 20150134039 A KR20150134039 A KR 20150134039A KR 101718888 B1 KR101718888 B1 KR 101718888B1
Authority
KR
South Korea
Prior art keywords
write
time
memory
garbage collection
data
Prior art date
Application number
KR1020150134039A
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 KR1020150134039A priority Critical patent/KR101718888B1/ko
Application granted granted Critical
Publication of KR101718888B1 publication Critical patent/KR101718888B1/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/0253Garbage collection, i.e. reclamation of unreferenced 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 빌명은 메모리 시스템 및 그의 가비지 컬렉션 방법에 관한 것이다. 본 발명의 제1 측면에 따르면, 본 발명의 실시예에 따른 메모리 시스템은, 캐쉬 메모리에 저장된 쓰기 데이터에 기초하여, 쓰기 스케줄을 예측하는 호스트 장치 및 비휘발성 메모리를 포함하는 스토리지 장치를 포함하고, 스토리지 장치는, 쓰기 스케줄로부터 예측된 쓰기 동작이 수행되지 않는 쓰기 유휴 시간에 비휘발성 메모리의 가비지 컬렉션을 수행한다.

Description

메모리 시스템 및 그것의 가비지 컬렉션 방법{MEMORY SYSTEM AND GARBAGE COLLECTION METHOD THEREOF}
본 발명은 메모리 시스템 및 그것의 가비지 컬렉션 방법에 관한 것이다. 보다 상세하게는 예측되는 쓰기 스케줄에 기초하여 가비지 컬렉션을 수행하는 메모리 시스템 및 그것의 가비지 컬렉션 방법에 관한 것이다.
메모리 중에서도 불휘발성 메모리 장치는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소멸되지 않고 남아있다. 불휘발성 메모리들 중에서도 플래시 메모리는, 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지고 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는, 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장장치로서 널리 사용되고 있다.
플래시 메모리는 셀과 비트 라인의 연결 상태에 따라 NOR형과 NAND형으로 구분된다. NOR형 플래시 메모리는 읽기 속도가 빠른데 반하여 쓰기 속도가 느리기 때문에, 주로 코드용 메모리로 사용된다. 그리고, NAND형 플래시 메모리는 쓰기 속도가 빠르고 단위 면적당 단가가 낮기 때문에, 주로 대용량 데이터 저장장치로 사용된다. 플래시 메모리는 다른 메모리 소자와 비교할 때, 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있다.
플래시 메모리 장치는 데이터의 갱신이 발생하는 경우, 기존 데이터가 기록되어있던 유효(valid) 데이터 페이지는 무효(invalid) 데이터 페이지로 변경되고, 새로운 데이터 페이지가 할당되어 갱신될 데이터를 기록하게 된다. 이때, 무효 데이터 페이지 모아 프리 세그먼트(free segment)를 생성하는 가비지 컬렉션(Garbage Collection)이 수행된다. 프리 세그먼트가 생성되면, 가비지 컬렉션이 수행된 무효 상태의 페이지는 프리 상태로 변경된다.
이러한 메모리의 가비지 컬렉션에 관한 특허로 공개특허 10-2008-0038363 호가 있다.
그러나 플래시 메모리 장치는 블록의 데이터 소거 횟수에 대한 한계가 있어, 가비지 컬렉션 횟수와 플래시 메모리 장치의 수명과 연관이 되어 있다. 또한 가비지 컬렉션을 수행하지 않을 경우, 플래시 메모리의 성능을 저하시키는 문제가 발생될 수도 있다.
따라서 근래에는 수명 및 성능을 고려하여, 가비지 컬렉션을 효율적으로 수행할 수 있는 메모리 시스템 및 방법이 요구되어 있는 실정이다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명의 일실시예는 효율적으로 가비지 컬렉션을 수행하는 메모리 시스템 및 그것의 가비지 컬렉션 방법을 제공하는 데에 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따르면, 본 발명의 실시예에 따른 메모리 시스템은, 캐쉬 메모리에 저장된 쓰기 데이터에 기초하여, 쓰기 스케줄을 예측하는 호스트 장치; 및 비휘발성 메모리를 포함하는 스토리지 장치를 포함하고, 상기 스토리지 장치는, 상기 쓰기 스케줄로부터 예측된 쓰기 동작이 수행되지 않는 쓰기 유휴 시간에 상기 비휘발성 메모리의 가비지 컬렉션을 수행한다.
본 발명의 제 2 측면에 따르면, 본 발명의 실시예에 따른 메모리 시스템이 가비지 컬렉션을 수행하는 방법은 호스트 장치에 포함된 캐쉬 메모리에 저장된 쓰기 데이터에 기초하여, 쓰기 스케줄을 예측하는 단계; 및 상기 쓰기 스케줄로부터 예측된 쓰기 동작이 수행되지 않는 쓰기 유휴 시간에 상기 비휘발성 메모리의 가비지 컬렉션을 수행하는 단계를 포함한다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일실시예는 효율적으로 가비지 컬렉션을 수행하는 메모리 시스템 및 그것의 가비지 컬렉션 방법을 제공할 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 캐쉬 메모리에 저장된 쓰기 데이터에 기초하여, 쓰기 스케줄을 예측하고, 예측된 쓰기 스케줄에 기초하여 가비지 컬렉션을 수행하여 메모리 시스템의 성능을 높일 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 예측되는 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 켈력션을 수행하여 메모리 시스템의 수명을 향상 시킬 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템을 설명하기 위한 구성도이다.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리의 구성에 대한 개념도이다.
도 3은 본 발명의 실시예에 따른 가비지 컬렉션 방법에 대한 흐름도이다.
도 4는 쓰기 스케줄을 설명하기 위한 참고도이다.
도 5 및 도 6은 가비지 컬렉션 수행의 효과를 설명하기 위한 참고도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
먼저 도 1을 참조하여, 본 발명의 실시예에 따른 메모리 시스템을 설명한다.
도 1은 본 발명의 일실시예에 따른 메모리 시스템을 설명하기 위한 구성도이다.
본 발명의 실시예에 따른 메모리 시스템은 호스트 장치(100) 및 스토리지 장치(200)를 포함한다.
본 발명의 실시예에 따른 호스트 장치(100)는 퍼스널 컴퓨터(personal computer), 스마트 폰(smart phone), 모바일 폰(mobile phone), 디지털 카메라(digital camera), 비디오 레코더(video recorder), 태블릿 컴퓨터(tablet computer), 퍼스널 디지털 어시스턴트(personal digital assistant) 및 IPTV(Internet Protocol Television) 등 내부에 스토리지 장치(200)를 포함하거나, 외부의 스토리지 장치(200)와 연결되어 통신할 수 있는 단말기를 일 수 있다.
본 발명의 실시예에 따른 호스트 장치(100)는 스토리지 장치(200)를 이용하여 데이터를 저장하고 독출할 수 있다. 호스트 장치(100)는 스토리지 장치(200)에 전원을 공급하고, 스토리지 장치(200)와 신호를 교환할 수 있다. 호스트 장치(100)는 스토리지 장치(200)에 데이터를 저장하고, 스토리지 장치(200)로부터 데이터를 읽고, 그리고 스토리지 장치(200)에 저장된 데이터를 소거할 수 있다.
호스트 장치(100)의 각 구성에 대하여 설명하면, 호스트 장치(100)는 프로세서(110)를 포함할 수 있다.
프로세서(110)는 호스트 장치(100)의 제반 동작을 제어하고, 논리 연산을 수행할 수 있다. 예를 들어, 프로세서(110)는 시스템-온-칩(SoC, System-on-Chip)으로 구성될 수 있다. 프로세서(110)는 범용 컴퓨터에 사용되는 범용 프로세서, 특수 목적 컴퓨터에 사용되는 특수 목적 프로세서, 또는 모바일 컴퓨팅 장치에 사용되는 어플리케이션 프로세서일 수 있다.
프로세서(110)는 본 발명의 실시 예에 따른 가비지 컬렉션에 관련된 동작(operation) 또는 기능(function)을 수행할 수 있는 프로그램, 예컨대 운영 체제(operating system, OS), 애플리케이션 프로그램(application program), 또는 API(application programming interface)를 실행시킬 수 있다.
본 발명의 실시예에 따른 호스트 장치(100)는 캐쉬 메모리(120)를 더 포함할 수 있다. 캐쉬 메모리(120)는 프로세서(110)와 통신할 수 있다. 캐쉬 메모리(120)는 프로세서(110) 또는 호스트 장치(100)의 메인 메모리일 수 있다. 프로세서(110)는 캐쉬 메모리(120)에 코드 또는 데이터를 임시로 저장할 수 있다. 프로세서(110)는 캐쉬 메모리(120)를 이용하여 코드를 실행하고, 데이터를 처리할 수 있다. 프로세서(110)는 캐쉬 메모리(120)를 이용하여 운영체제, 어플리케이션과 같은 다양한 소프트웨어들을 실행할 수 있다. 또한 프로세서(110)는 캐쉬 메모리(120)를 이용하여 호스트 장치(100)의 제반 동작을 제어할 수 있다. 캐쉬 메모리(120)는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다. 또한 캐쉬 메모리(120)는 랜덤 액세스 메모리로 구성될 수 있다.
프로세서(110)는 스토리지 장치(200)로 플러시(flush)될 데이터를 캐쉬 메모리(120)에 미리 저장할 수도 있다. 즉 프로세서(110)는 라이트 백(write back) 동작을 수행할 수 있다. 또한 여기서 플러시는 캐쉬 메모리(120)에 저장된 데이터를 스토리지 장치(200)에 쓰는 동작을 포함할 수 있다.
또한 프로세서(110)는 스토리지 장치(200)로 쓰여질 데이터를 캐쉬 메모리(120)에 저장하지 않고, 스토리지 장치(200)에 저장될 수 있도록 스토리지 장치(200)로 전송할 수도 있다. 즉 프로세서(110)는 라이트 스루(write through) 동작을 수행할 수도 있다.
본 발명의 실시예에 따른 스토리지 장치(200)의 각 구성에 대하여 설명하면, 스토리지 장치(200)는 메모리 컨트롤러(210) 및 비휘발성 메모리(220)를 포함할 수 있다.
메모리 컨트롤러(210)는 비휘발성 메모리(220)를 제어한다. 메모리 컨트롤러 (210)는 호스트 장치(100)의 제어를 받아 비휘발성 메모리(220)를 제어할 수 있다. 이때 비휘발성 메모리(220)는 프로세서(110)의 제어를 받아 비휘발성 메모리(220)를 제어할 수도 있다. 또한 메모리 컨트롤러(210)는 비휘발성 메모리(220)의 액세스 동작(예를 들며, 읽기/쓰기/소거 동작들)을 제어할 수도 있다. 또한 메모리 컨트롤러(210)는 비휘발성 메모리(220)에 제어 신호를 전송할 수 있으며, 비휘발성 메모리(220)와 데이터를 교환할 수도 있다.
비휘발성 메모리(220)는 비휘발성 메모리(220)는 메모리 컨트롤러(210)의 제어에 따라 쓰기, 읽기 및 소거를 수행할 수 있다. 비휘발성 메모리(220)는 낸드 플래시 메모리를 포함할 수 있다. 그러나, 비휘발성 메모리(220)는 낸드 플래시 메모리를 포함하는 것으로 한정되지 않는다. 비휘발성 메모리(220)는 PRAM, MRAM, RRAM, FeRAM 등과 같은 다양한 비휘발성 메모리들 중 적어도 하나를 포함할 수도 있다.
도 2를 참조하여 본 발명의 실시예에 따른 비휘발성 메모리(220)에 동작에 대해 설명하겠다.
도 2는 본 발명의 실시예에 따른 비휘발성 메모리(220)의 구성에 대한 개념도이다.
비휘발성 메모리(220)는 적어도 하나의 블록(block)을 포함한다. 각각의 블록은 적어도 하나의 페이지(page)를 포함한다. 비휘발성 메모리(220)에 대한 쓰기 동작은 페이지 단위로 수행되며, 삭제 등의 소거 동작은 블록 단위로 수행된다. 따라서 본 발명의 실시예에 따른 가비지 컬렉션은 블록(block) 단위로 수행된다. 가비지 컬렉션이 수행되면, 가비지 컬렉션이 수행된 블록(block)의 각 페이지는 무효(invalid) 상태에서 프리(free) 상태로 변경된다. 비휘발성 메모리(220)에 있어서, 데이터는 프리(free) 상태인 페이지에만 쓰여진다.
비휘발성 메모리(220)는 데이터가 저장되는 저장 영역(223)을 포함한다. 또한 비휘발성 메모리(220)는 예비 영역(225)을 더 포함할 수도 있다. 저장 영역(223)과 예비 영역(225)의 저장 용량은 기 설정되어 있을 수 있다. 예를 들어 비휘발성 메모리(220)의 용량이 256GB인 경우, 저장 영역(223)의 총량은 240GB이고, 예비 영역(225)의 용량은 16GB일 수 있다. 본 발명의 실시예에 따른 예비 영역(225)은 오버 프로비저닝(over provisioning) 공간일 수 있다.
메모리 컨트롤러(210)는 저장 영역(223)의 프리(free) 상태의 페이지가 부족한 경우, 예비 영역(225)을 이용할 수 있다. 또한 메모리 컨트롤러(210)는 저장 영역(225)의 특정 블록의 페이지가 모두 프리 상태인 경우 해당 블록을 예비 영역(225)으로 지정하며, 예비 영역(225)의 특정 블록을 저장 영역(223)으로 재지정할 수도 있다.
본 발명의 실시예에 따르면, 데이터에 대한 쓰기 동작은 페이지의 상태가 프리 상태인 경우에만 가능하며, 페이지가 무효(invalid) 상태인 경우, 해당 페이지에 데이터를 쓰기 위해서는 해당 페이지의 데이터를 삭제(erase)하는 과정이 필요하다.
비휘발성 메모리(220)의 삭제 가능 횟수가 유한하므로, 비휘발성 메모리(220)의 수명을 늘리기 위해, 메모리 컨트롤러(210)는 기 설정된 동작을 수행할 수 있다.
예를 들어 설명하면, 메모리 컨트롤러(210)는 무효(invalid) 상태인 페이지를 모아서 블록 단위로 삭제를 수행할 수도 있다.
구체적으로, 메모리 컨트롤러(210)는 블록에 대한 삭제 횟수를 줄이기 위해 페이지에 데이터가 저장되어 있고(이 상태를 페이지가 유효한 상태라고 함), 이후 해당 페이지에 대한 쓰기 요청이 있는 경우, 해당 페이지를 바로 삭제하지 않고, 프리 페이지에 쓰기 요청에 대한 데이터를 저장할 수 있다. 또한 이때 메모리 컨트롤러(210) 해당 페이지를 유효 상태에서 무효 상태로 변경한다. 이후 메모리 컨트롤러(210)는 무효 상태로 변경된 페이지를 모아 가비지 컬렉션을 수행할 수 있다.
비휘발성 메모리(220)의 특정 블록에 대하여 가비지 컬렉션이 수행되는 중에는 비휘발성 메모리(220)의 성능은 떨어지게 된다. 쓰기 요청된 데이터의 용량 보다, 저장 영역(223)의 저장 공간이 부족한 경우, 가비지 컬렉션이 선 수행되어야 하는데 이때의 가비지 컬렉션을 포그라운드 가비지 컬렉션(Foreground Garbage Collection, FGC)라고 한다. FGC의 경우, 블록의 삭제를 대기하여야 하므로 즉 가비지 컬렉션이 수행되는 것을 대기하여야 하므로, 비휘발성 메모리(220)의 성능 저하는 불가피하다.
이러한 단점을 극복하기 위해, 메모리 컨트롤러(210)는 메모리 시스템이 유휴 상태일 때 미리 가비지 컬렉션을 수행하는 백그라운드 가비지 컬렉션(Background Garbage Collection, BGC)을 수행할 수도 있다.
앞서 검토한 바와 같이, 비휘발성 메모리(220)에 성능을 위해 BGC를 빈번하게 수행하는 경우, 비휘발성 메모리(220)의 삭제 횟수는 유한하므로, 비휘발성 메모리(220)의 수명은 저하될 수 있다.
따라서 비휘발성 메모리(220)의 성능 및 수명을 위해서는 BGC수행 횟수를 최소화하면서, 최적의 시기에 BGC를 수행하는 것이 중요하다.
본 발명은 이를 위해, 메모리 컨트롤러(210)가 예측된 쓰기 스케줄에 기초하여 BGC를 수행한다. 본 발명의 실시예에 따른 메모리 컨트롤러(210)는 호스트(100)에서 제공된 쓰기 스케줄에 기초하여 BGC를 수행할 수 있다.
다음은 도 3 내지 도 6을 참조하여 본 발명의 실시예에 따른 메모리 시스템의 가비지 컬렉션 방법에 대해 설명한다. 특히 이하에서는 메모리 시스템의 BGC 수행 방법에 대해서 설명하겠다.
도 3은 본 발명의 실시예에 따른 가비지 컬렉션 방법에 대한 흐름도이다.
프로세서(110)는 쓰기 방식을 판단한다(S301). 이 때 쓰기 방식은 기 설정되어 있을 수 있다.
도 3 도시된 실시예에 따른 가비지 컬렉션 방법은 도 1에 도시된 시스템에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1에 도시된 시스템에 관하여 이상에서 기술한 내용은 도 3에 도시된 실시예에 따른 가비지 컬렉션 방법에도 적용될 수 있다.
쓰기 방식이 라이트 백 방식인 경우, 프로세서(110)는 쓰기 스케줄을 예측할 수 있다(S303). 프로세서(110)는 캐쉬 메모리(120)에 저장된 쓰기 데이터에 기초하여, 쓰기 스케줄을 예측할 수 있다.
보다 상세하게, 프로세서(110)는 캐쉬 메모리(120)에 저장된 각각의 쓰기 데이터가 각각 검색된 시점 및 검색된 각각의 쓰기 데이터가 스토리지 장치(200)로 전송될 각각의 시점에 기초하여, 쓰기 스케줄을 예측할 수 있다. 쓰기 데이터가 스토리지 장치(200)로 전송되면, 쓰기 메모리에 대한 플러쉬가 수행된다.
본 발명의 실시예에 따른 쓰기 데이터는 비휘발성 메모리(220)에 쓰여질 데이터를 의미한다. 또한 여기서 쓰기 데이터는 스토리지 장치(200)에 전송되기 전에 캐쉬 메모리(120)에 미리 저장되는 데이터 일 수 있다. 또한 쓰기 데이터는 쓰기 요청을 더 포함할 수 있다.
프로세서(110)는 기 설정된 시간을 검색 주기로 하여 캐쉬 메모리(120)를 검색할 수 있다. 기 설정된 시간이 5초인 경우, 프로세서(110)는 캐쉬 메모리(120)를 5초 마다 검색할 수 있다.
프로세서(110)는 캐쉬 메모리(120) 검색 결과, 쓰기 데이터가 존재하는 경우, 프로세서(110)는 기 설정된 지연 시간이 경과하면 검색된 쓰기 데이터를 스토리지 장치(200)로 전송한다. 여기서 기 설정된 지연 시간이 30초라고 하면, 프로세서(110)는 쓰기 데이터가 검색된 시점부터 30초가 경과된 시점에 스토리지 장치(200)로 전송한다.
이하에서는 프로세서(110)가 캐쉬 메모리(120)를 검색하는 검색 주기를 5초로, 지연 시간을 30초로 하여 설명하도록 하겠다. 그러나 본 발명은 이에 한정되지 않고, 얼마든지 검색 주기 및 지연 시간이 다른 시간으로 설정된 경우라도 본 발명의 적용이 가능하다.
이하에서는 도 4를 참조하여, 프로세서(110)가 쓰기 스케줄을 예측하는 과정을 상세히 설명하겠다.
도 4는 쓰기 스케줄을 설명하기 위한 참고도이다.
도 4의 (a)를 참조하면, 각각의 쓰기 데이터(A, B, C, D, E, E'가 캐쉬 메모리(120)에 저장되는 시간이 도시되어 있다. (a)를 참조하면, A, B, C는 현재시간(Current time)을 기준으로35초 전부터 30초 전까지 사이에 캐쉬 메모리(120)에 저장되고, D는 현재시간(Current time)을 기준으로 30초 전부터 25초 전까지 사이에 캐쉬 메모리(120)에 저장되고, E는 현재시간(Current time)을 기준으로 25초 전부터 20초 전까지 사이에 캐쉬 메모리(120)에 저장되었다.
여기서 A,B,C는 현재시간보다 30초 전에 검색된다. 따라서 A,B,C는 현재시간에 플러쉬된다. 즉 현재시간에 A,B,C는 스토리지 장치(200)에 전송되어 메모리 컨트롤러(210)에 의해 비휘발성 메모리(220)에 저장된다.
또한 D는 현재시간보다 25초 전에 검색된다. 따라서 D는 현재시간보다 5초 뒤에 플러쉬된다.
또한 (a)에서 E'는 E가 교체된 쓰기 데이터이다. E는 지연시간 내에 E'로 교체되므로, 플러쉬되지 않는다. E'는 현재시간(Current time)을 기준으로 10초 전부터 5초 전까지 사이에 캐쉬 메모리(120)에 저장되므로, 현재시간보다 5초 전에 검색된다. 따라서 E'는 별도의 교체가 없으면, 현재시간보다 25초 뒤에 플러쉬된다.
정리하면, 도 4의 (b)에 도시된 바와 같이, 현재시간에 A,B,C가 플러쉬되고, 현재시간으로부터 5초 뒤 D가 플러쉬 되고, 현재시간으로부터 25초 뒤 E'가 플러쉬된다.
이에 따라, 도 4의 (c)에 도시된 바와 같이, 현재시간에 A,B,C가 비휘발성 메모리(220)에 저장되고, 현재시간으로부터 5초 뒤 D가, 현재시간으로부터 25초 뒤 E'가 저장된다.
A, B, C가 플러쉬된 이후, D가 플러쉬 되기 직전까지의 시간(410)을 제1 시간이라 하고, D가 플러쉬된 이후, E'가 플러쉬 되기 직전까지의 시간(420)을 제2 시간이라 할 때, 메모리 컨트롤러(210)는 제1 시간(410) 또는 제2 시간(420)에 가비지 컬렉션을 수행할 수 있다. 제1 시간(410) 및 제2 시간(420)에는 비휘발성 메모리(220)에 데이터 저장 등의 쓰기 동작이 수행되지 않을 것이 예측되므로, 제1 시간(410) 또는 제2 시간(420)에 가비지 컬렉션을 수행하는 경우에는, 비휘발성 메모리(220)의 성능이 저하가 발생되지 않을 수 있다.
위에서 설명한 방식에 기초하여, 프로세서(110)는 주기적으로 캐쉬 메모리(120)에 저장된 쓰기 데이터를 감지하고, 감지된 쓰기 데이터가 플러쉬 될 지연 시간을 고려하여, 미래의 쓰기 스케줄 즉 미래에 쓰기 데이터가 플러쉬 될 시간을 예측할 수 있다. 또한 쓰기 스케줄이 예측되므로, 프로세서(110)는 쓰기 데이터가 플러쉬 되지 않을 시간, 즉 비휘발성 메모리(220)에 쓰기 동작이 수행되지 않을 시간(410, 420)을 예측할 수도 있다. 이하에서는 쓰기 데이터가 플러쉬 되지 않을 시간을 쓰기 유휴 시간으로 하여 설명하겠다.
다시 도 3을 참조하여 가비지 컬렉션 방법에 대하여 설명한다.
메모리 컨트롤러(210)는 예측된 쓰기 스케줄에 기초하여, 가비지 컬렉션을 수행한다(S305).
메모리 컨트롤러(210)는 예측된 쓰기 유휴 시간에 가비지 컬렉션을 수행할 수 있다. 또한 프로세서(110)는 쓰기 유휴 시간에 메모리 컨트롤러(210)로 하여금 가비지 컬렉션을 수행하도록 제어할 수 있다.
도 4를 참조하여 예를 들어 설명하면, 메모리 컨트롤러(210)는 제1 시간(410) 또는 제2 시간(420)에 가비지 컬렉션을 수행할 수 있다.
이때 메모리 컨트롤러(210)는 예측되는 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행할 수 있다. 도 4를 참조하면, 메모리 컨트롤러(210)는 제2 시간(420)에 가비지 컬렉션을 수행하여, 비휘발성 메모리(220)의 수명 향상에 기여할 수 있다.
본 발명의 실시예에 따르면, 예측되는 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행하는 경우는 특히 비휘발성 메모리(220)의 블록의 페이지 중 곧 무효 상태로 변경될 페이지(Soon to be Invalidated Page, SIP)가 존재하는 경우 비휘발성 메모리(220)의 데이터 삭제 횟수를 줄여 비휘발성 메모리(220)의 수명 향상에 기여할 수 있다. 이러한 SIP는 특정 페이지에 대응하는 데이터의 교체가 있을 때 주로 발생된다. 특정 페이지에 대응하는 데이터의 교체가 있을 때, 상기 데이터가 저장되어 있던 특정 페이지의 상태를 무효로 먼저 변경하기 때문이다.
다음은 도 5 및 도 6을 참조하여, 예측되는 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행하는 것의 효과에 대하여 설명하도록 하겠다.
도 5 및 도 6은 가비지 컬렉션 수행의 효과를 설명하기 위한 참고도이다.
도 5 및 도 6에서는 비휘발성 메모리(220)가 4개의 블록을 포함하고, 각각의 블록은 5개의 페이지를 포함하는 것을 예로 들어 설명하겠다.
도 5 및 도 6에는 각각의 행(a,b,c)은 비휘발성 메모리(220)의 4개의 블록에 저장된 데이터 상태를 도시되어 있으며, 도5 및 도 6의 (a), (b) 및 (c)는 (a) 에서 (c)로 순차적으로 변화하는 비휘발성 메모리(220)의 저장된 데이터를 도시하고 있다.
먼저 도 5를 참조하여, 가비지 컬렉션이 데이터의 교체보다 먼저 수행되는 경우를 설명하겠다.
일반적으로 가비지 컬렉션은 가장 많은 무효 페이지가 포함된 블록을 대상으로 수행된다. 따라서 (a)에서 가장 좌측의 블록에서 가비지 컬렉션이 수행된다. 가비지 컬렉션을 위해 데이터(Valid 0, Valid 1)는 프리 페이지로 이동된다(도 5의 (b)에서는 가장 우측의 블록으로 이동됨) 그 후 가장 좌측의 블록에서 가비지 컬렉션이 수행되면, (b) 에 도시된 것과 같이 가장 좌측의 블록의 페이지는 모두 프리 상태가 된다.
이후 데이터 교체가 수행되면, 교체 전 데이터가 저장된 페이지는 무효 상태로 변경되고, 다른 프리 페이지에 교체 데이터(Valid 0', Valid 1')가 저장된다.
도 5에 도시된 케이스에서, 페이지 복사(Page copy)는 2번 발생된다.
다음 도 6을 참조하여, 가비지 컬렉션이 데이터의 교체보다 늦게 수행되는 경우를 설명하겠다.
데이터가 교체됨에 따라, (a) 및 (b)에 도시된 바와 같이, 교체될 데이터(Valid 0, Valid 1)가 저장된 페이지는 무효 상태로 변경되고, 다른 프리 페이지에 교체 데이터(Valid 0', Valid 1')가 저장된다. 이후 가비지 컬렉션이 수행되면, (c)에 도시된 것과 같이, 가장 많은 무효 페이지를 포함하는 가장 좌측의 블록의 페이지가 모두 프리 상태로 변경된다.
도 6에 도시된 케이스에서, 페이지 복사(Page copy)는 발생되지 않았다.
도 5 및 도 6의 케이스를 비교하면, 도 5에서 더 많은 페이지 복사가 발생되었다. 즉 도 5의 케이스에서 더 많은 메모리 페이지에 대한 메모리 사용이 발생되었다. 메모리의 수명은 한정적이므로, 따라서 메모리 사용량에 반비례하여 메모리 수명은 줄어든다.
본 발명은 예측되는 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행할 수 있다. 본 발명의 실시예에 따르면, 특히 도 5 및 도 6을 참조하여 설명한 데이터 교체 케이스에서, 메모리 컨트롤러(210)는 데이터 교체 이후 가비지 컬렉션을 수행해 메모리 사용량을 줄일 수 있다.
본 발명의 일 실시예에 따르면, SIP가 존재하는 경우라고 할지라도 메모리 시스템 상SIP가 너무 많아서 연산상의 부하가 많이 발생하거나, 단위 시간당 전송할 수 있는 SIP의 개수에 제약이 발생하는 경우, 메모리 컨트롤러(210)는 SIP를 선별적으로 선택하여 데이터 교체 이후 가비지 컬렉션을 수행할 수도 있다.
쓰기 방식이 라이트 스루 방식인 경우, 메모리 컨트롤러(210)는 누적 데이터 히스토리에 기초하여 가비지 컬렉션을 수행할 수 있다(S307).
프로세서(110)는 기 설정된 기간 동안, 쓰기 동작이 수행된 데이터의 크기에 대한 누적 히스토리에 기초하여, 다음 쓰기 동작이 수행될 데이터의 크기를 예측할 수 있다. 구체적으로 프로세서(110)는 쓰기 동작이 수행된 데이터의 누적 크기에서 기 설정된 비율에 해당하는 크기를 다음 쓰기 동작이 수행될 데이터의 크기로 예측할 수 있다.
메모리 컨트롤러(210)는 예측된 다음 쓰기 데이터의 크기에 기초하여 가비지 컬렉션을 수행할 수도 있다. 프로세서(110)는 메모리 컨트롤러(210)가 예측된 다음 쓰기 데이터의 크기에 기초하여 가비지 컬렉션을 수행할 수 있도록 제어할 수 있다.
보다 상세하게는, 프로세서(110)는 비휘발성 메모리(220)의 페이지 중 프리 상태에 있는 페이지의 용량을 검색하고, 프리 상태에 있는 페이지의 용량이 예측되는 다음 쓰기 동작이 수행될 데이터의 크기보다 작은 경우, 메모리 컨트롤러(210)가 가비지 컬렉션을 수행할 수 있도록 제어할 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100: 호스트 장치 110: 프로세서
120: 캐쉬 메모리 200: 스토리지 장치
210: 메모리 컨트롤러 220: 비휘발성 메모리

Claims (11)

  1. 캐쉬 메모리에 저장된 각각의 쓰기 데이터가 각각 검색된 시점 및 검색된 각각의 쓰기 데이터가 전송될 각각의 시점에 기초하여, 상기 쓰기 데이터가 플러쉬될 시간을 예측하여 쓰기 스케줄을 예측하는 호스트 장치; 및
    비휘발성 메모리를 포함하는 스토리지 장치를 포함하고,
    상기 스토리지 장치는, 상기 쓰기 스케줄로부터 예측된 쓰기 동작이 수행되지 않는 쓰기 유휴 시간에 상기 비휘발성 메모리의 가비지 컬렉션을 수행하되, 예측된 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행하고,
    상기 호스트 장치는,
    상기 쓰기 스케쥴로부터 상기 쓰기 데이터가 플러쉬 되지 않을 시간의 예측을 통해 상기 쓰기 유휴 시간을 예측하는, 메모리 시스템.
  2. 제1항에 있어서,
    상기 호스트 장치는,
    상기 캐쉬 메모리를 포함하는, 메모리 시스템.
  3. 제1항에 있어서,
    상기 호스트 장치는,
    기 설정된 시간을 주기로 상기 캐쉬 메모리에 상기 비휘발성 메모리에 대한 쓰기 데이터의 저장 여부를 검색하고,
    상기 쓰기 데이터가 검색되면 검색된 쓰기 데이터를 기 설정된 시간의 경과 후 상기 스토리지 장치로 전송하는, 메모리 시스템.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 호스트 장치는,
    상기 쓰기 데이터를 상기 스토리지 장치로의 전송 전 상기 캐쉬 메모리에 선 저장하는, 메모리 시스템.
  7. 메모리 시스템이 가비지 컬렉션을 수행하는 방법에 있어서,
    호스트 장치에 포함된 캐쉬 메모리에 저장된 각각의 쓰기 데이터가 각각 검색된 시점 및 검색된 각각의 쓰기 데이터가 전송될 각각의 시점에 기초하여, 상기 쓰기 데이터가 플러쉬될 시간을 예측하여 쓰기 스케줄을 예측하는 단계;
    상기 쓰기 스케쥴의 예측을 통해 상기 쓰기 데이터가 플러쉬 되지 않을 시간을 예측하여 쓰기 유휴 시간을 예측하는 단계; 및
    상기 쓰기 스케줄로부터 예측된 쓰기 동작이 수행되지 않는 쓰기 유휴 시간에 비휘발성 메모리의 가비지 컬렉션을 수행하는 단계를 포함하고,
    상기 가비지 컬렉션을 수행하는 단계는,
    예측된 쓰기 유휴 시간 중 최후의 쓰기 유휴 시간에 가비지 컬렉션을 수행하는, 가비지 컬렉션 방법.
  8. 제7항에 있어서,
    상기 호스트 장치는,
    기 설정된 시간을 주기로 상기 캐쉬 메모리에 상기 비휘발성 메모리에 대한 쓰기 데이터의 저장 여부를 검색하고,
    상기 쓰기 데이터가 검색되면 검색된 쓰기 데이터를 기 설정된 시간의 경과 후 상기 비휘발성 메모리를 포함하는 스토리지로 전송하는, 가비지 컬렉션 방법.
  9. 제8항에 있어서,
    상기 쓰기 스케줄을 예측하는 단계는,
    상기 캐쉬 메모리에 저장된 각각의 쓰기 데이터가 각각 검색된 시점 및 검색된 각각의 쓰기 데이터가 전송될 각각의 시점에 기초하여, 상기 쓰기 스케줄을 예측하는, 가비지 컬렉션 방법.
  10. 삭제
  11. 제7항에 있어서,
    상기 호스트 장치는,
    상기 쓰기 데이터를 상기 비휘발성 메모리를 포함하는 스토리지 장치로의 전송 전 상기 캐쉬 메모리에 선 저장하는, 가비지 컬렉션 방법.
KR1020150134039A 2015-09-22 2015-09-22 메모리 시스템 및 그것의 가비지 컬렉션 방법 KR101718888B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150134039A KR101718888B1 (ko) 2015-09-22 2015-09-22 메모리 시스템 및 그것의 가비지 컬렉션 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150134039A KR101718888B1 (ko) 2015-09-22 2015-09-22 메모리 시스템 및 그것의 가비지 컬렉션 방법

Publications (1)

Publication Number Publication Date
KR101718888B1 true KR101718888B1 (ko) 2017-04-04

Family

ID=58588666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150134039A KR101718888B1 (ko) 2015-09-22 2015-09-22 메모리 시스템 및 그것의 가비지 컬렉션 방법

Country Status (1)

Country Link
KR (1) KR101718888B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061815B2 (en) 2019-07-05 2021-07-13 SK Hynix Inc. Memory system, memory controller and operating method

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130084988A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치
KR20140145063A (ko) * 2013-06-12 2014-12-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130084988A (ko) * 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 호스트를 포함하는 메모리 시스템 및 모바일 장치
KR20140145063A (ko) * 2013-06-12 2014-12-22 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동적 접근 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11061815B2 (en) 2019-07-05 2021-07-13 SK Hynix Inc. Memory system, memory controller and operating method

Similar Documents

Publication Publication Date Title
KR101257691B1 (ko) 메모리 컨트롤러 및 이의 데이터 관리방법
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
KR102467032B1 (ko) 메모리 스케줄링 방법 및 메모리 시스템의 동작방법
KR20200064499A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR101297563B1 (ko) 스토리지 관리 방법 및 관리 시스템
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
KR20170035155A (ko) 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
JP2008181380A (ja) メモリシステムおよびその制御方法
US10740013B2 (en) Non-volatile data-storage device with spare block pools using a block clearing method
US11392309B2 (en) Memory system for performing migration operation and operating method thereof
CN110377599B (zh) 键值存储装置及其操作方法
US20220004496A1 (en) Memory system, memory controller, and method of operating memory system
US10452280B2 (en) Hybrid storage system employing reconfigurable memory
JP2009099149A (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
US11200178B2 (en) Apparatus and method for transmitting map data in memory system
US20130054878A1 (en) Solid state drive and wear-leveling control method thereof
KR102304130B1 (ko) 비휘발성 랜덤 액세스 메모리를 이용한 세그먼트 클리닝 방법 및 이를 구현하기 위한 메모리 관리 장치
CN113110799A (zh) 用于针对损耗均衡操作选择牺牲块的控制器和方法
US11422930B2 (en) Controller, memory system and data processing system
KR20160050394A (ko) 메모리 시스템 및 상기 메모리 시스템의 동작 방법
JP2011070365A (ja) メモリシステム
JP2009037317A (ja) メモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システム
KR20210051873A (ko) 컨트롤러 및 메모리 시스템
WO2017022082A1 (ja) フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
KR101070511B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법

Legal Events

Date Code Title Description
AMND Amendment
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200302

Year of fee payment: 4