KR102033462B1 - 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치 - Google Patents

플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치 Download PDF

Info

Publication number
KR102033462B1
KR102033462B1 KR1020170111936A KR20170111936A KR102033462B1 KR 102033462 B1 KR102033462 B1 KR 102033462B1 KR 1020170111936 A KR1020170111936 A KR 1020170111936A KR 20170111936 A KR20170111936 A KR 20170111936A KR 102033462 B1 KR102033462 B1 KR 102033462B1
Authority
KR
South Korea
Prior art keywords
page
information
garbage collection
pages
flash memory
Prior art date
Application number
KR1020170111936A
Other languages
English (en)
Other versions
KR20180076276A (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 한양대학교 산학협력단
Publication of KR20180076276A publication Critical patent/KR20180076276A/ko
Application granted granted Critical
Publication of KR102033462B1 publication Critical patent/KR102033462B1/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

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

플래시 메모리의 가비지 콜렉션 방법을 제공한다. 본 발명의 일 실시 예에 따른 플래시 메모리의 가비지 콜렉션 방법은,
호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하는 단계; 및 상기 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지(invalid page) 정보에 기반하여 가비지 콜렉션 대상 블록을 선정하는 단계를 포함한다.

Description

플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치{Method for garbage collection of flash memory and storage device using the same}
본 발명은 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치에 관한 것으로, 보다 구체적으로는 복수의 페이지의 변경 예정 정보인 페이지 캐시 정보 및 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정하고, 이를 이용하여 가비지 콜렉션을 수행하는 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치에 관한 것이다.
플래시 메모리는 전기적으로 데이터를 기록하고 저장된 데이터를 지울 수 있으며, 전원 공급이 끊어져도 저장된 정보가 지워지지 않는 비 휘발성 기억장치를 말한다.
이러한 플래시 메모리는 빠른 속도, 낮은 전력, 작은 크기, 내구성의 장점을 가지며 휴대폰, 디지털 카메라, 휴대용 정보 단말기(PDA), 이동식 컴퓨터 장치, 고정식 컴퓨터 장치 및 기타 장치에 사용될 수 있다.
플래시 메모리는 물리적 특성에 따라 데이터의 읽기 및 쓰기 동작은 페이지(page)단위, 지우기 동작은 블록(block)단위로 수행되며, 데이터 덮어쓰기(Data Overwrite) 동작이 불가능하며 수정의 횟수에 제한이 있는 단점이 있다.
이러한 단점을 보완하기 위해 플래시 메모리에서는 플래시 계층 변환(Flash Translation Layer)을 적용하여 논리주소 매핑, 가비지 콜랙션(Garbage Collection), 웨어레벨링(Wear Leveling) 및 오류수정코드(error correction code)등의 부가적인 기능을 수행한다.
이중 가비지 콜랙션(Garbage Collection)은 블록 단위로 수행되며, 지우기 동작을 수행할 블록을 선정하고, 선정된 블록에 포함된 모든 유효한 페이지(valid page)를 다른 블록으로 복사한 후, 선정된 블록을 지우는 동작을 수행한다.
그러나, 블록을 삭제할 때마다 수행되는 유효화 페이지(valid page)에 대한 데이터를 읽고 쓰는 작업(valid copy operation)은 메모리의 처리 속도 저하 및 수명 등 플래시 메모리 장치의 전반적인 성능을 크게 저하시키고 있다.
따라서 페이지(valid page)에 대한 데이터를 읽고 쓰는 작업(valid copy operation)의 횟수를 줄이기 위한 방법에 대한 필요성이 중요시 되고 있다.
관련 선행기술로는 한국등록특허 제10-0789406호(발명의 명칭: 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법, 등록일자: 2007년 12월 20일)가 있다.
본 발명은 플래시 메모리를 구성하는 복수의 페이지의 변경 예정 정보인 페이지 캐시 정보 및 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정함으로써, 블록을 삭제할 때마다 수행되는 유효화 페이지(valid page)에 대한 데이터를 읽고 쓰는 작업(valid copy operation)의 횟수를 줄여 입력 및 출력 성능을 향상시킬 수 있는 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치를 제공하고자 한다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위해, 본 발명에서 제공하는 플래시 메모리의 가비지 콜렉션 방법은 호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하는 단계 및 상기 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지(invalid page)정보에 기반하여 가비지 콜렉션 대상 블록을 선정하는 단계를 포함한다.
바람직하게는, 상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행하는 단계를 더 포함할 수 있다.
바람직하게는, 상기 페이지 캐시 정보는, 상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성될 수 있다.
바람직하게는, 상기 가비지 콜렉션 대상 블록을 선정하는 단계는 상기 페이지 캐시 정보로부터 상기 복수의 페이지 중 내용 변경이 예정되어 있는 페이지에 관한 정보인 예측 페이지(predicted page) 정보를 생성하는 단계, 상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 상기 무효화 페이지의 개수를 기반으로 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출하는 단계 및 상기 복수의 블록 각각에 대해 산출된 코스트를 기반으로 가비지 콜렉션 대상 블록을 선정하는 단계를 포함할 수 있다.
바람직하게는, 상기 코스트를 산출하는 단계는, 상기 예측 페이지 및 상기 무효화 페이지 각각에 대한 가중치에 더 기반하여 상기 코스트를 산출할 수 있다.
또한, 상기 목적을 달성하기 위해, 본 발명에서 제공하는 가비지 콜렉션 대상 블록을 선정하는 컨트롤러를 포함하는 저장 장치는 플래시 메모리 및 호스트로부터 상기 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하고, 상기 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정하는 컨트롤러를 포함한다.
바람직하게는, 상기 컨트롤러는 상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행할 수 있다.
바람직하게는, 상기 페이지 캐시 정보는 상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성될 수 있다.
바람직하게는, 상기 컨트롤러는, 상기 페이지 캐시 정보로부터 상기 복수의 페이지 중 내용 변경이 예정되어 있는 페이지에 관한 정보인 예측 페이지 정보를 생성하고, 상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 상기 무효화 페이지의 개수를 기반으로 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출하여, 상기 복수의 블록 각각에 대해 산출된 코스트를 기반으로 가비지 콜렉션 대상 블록을 선정할 수 있다.
바람직하게는 상기 컨트롤러는, 상기 예측 페이지 및 상기 무효화 페이지의 각각에 대한 가중치에 더 기반하여 상기 코스트를 산출할 수 있다.
또한, 상기 목적을 달성하기 위해, 본 발명에서 제공하는 플래시 플래시 메모리를 제어하는 컨트롤러에 있어서, 호스트로부터 상기 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하는 수신부 및 상기 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정하는 선정부를 포함할 수 있다.
본 발명은 플래시 메모리를 구성하는 복수의 페이지의 변경 예정 정보인 페이지 캐시 정보 및 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정함으로써 블록을 삭제할 때마다 수행되는 유효화 페이지(valid page)에 대한 데이터를 읽고 쓰는 작업(valid copy operation)의 횟수를 줄임으로써 입력 및 출력 성능을 향상시킬 수 있는 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 플래시 메모리의 가비지 콜렉션 방법을 설명하기 위하여 도시한 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 가비지 콜렉션 대상 블록을 선정하는 방법을 설명하기 위하여 도시한 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 컨트롤러를 포함하는 저장 장치를 도시하는 블록도이다.
도 4는 본 발명의 일 실시 예에 따른 플래시 메모리를 포함하는 저장 장치를 제어하는 컨트롤러를 도시하는 블록도이다.
도 5는 리눅스의 커널 I/O 시스템을 설명하기 위하여 도시한 도면이다.
도 6는 본 발명의 일 실시 예에 따른 가비지 콜렉션 대상 블록을 선정한 결과를 설명하기 위하여 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시 예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
또한, 명세서에 기재된 "…부", "…유닛", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시 예에 따른 플래시 메모리의 가비지 콜렉션 방법을 설명하기 위하여 도시한 흐름도이다.
도 1을 참조하면, 단계 S100에서, 컨트롤러(310)는 호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경에 관한 정보인 페이지 캐시 정보를 수신한다.
이때 상기 페이지 캐시 정보는, 복수의 블록 각각에 포함된 복수의 페이지에 대하여, 호스트에서는 내용 변경이 이루어졌으나, 플래시 메모리(320)에서는 내용 변경이 이루어지지 않은 페이지의 내용 변경 예정에 관한 정보를 의미할 수 있다.
이후, 단계 S200에서 컨트롤러(310)는 상기 S100에서 수신된 페이지 캐시 정보 및 무효화 페이지(invalid page)정보에 기반하여 가비지 콜렉션 대상 블록을 선정한다.
이때 상기 무효화 페이지는 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보를 의미한다.
다른 실시 예에서는 컨트롤러(310)는 상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행할 수 있다.
다른 실시 예에서는 상기 페이지 캐시 정보는 상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성될 수 있다.
단계 S200을 수행하는 방법에 대해 도 2에서 더욱 구체적으로 설명하기로 한다.
도 2는 본 발명의 일 실시 예에 따른 가비지 콜렉션 대상 블록을 선정하는 방법을 설명하기 위하여 도시한 흐름도이다.
도 2를 참조하면, 단계 S210에서 컨트롤러(310)는 S100에서 수신한 페이지 캐시 정보로부터 예측 페이지(predicted page)정보를 생성한다.
상기 예측 페이지 정보는 페이지 캐시 정보를 이용하여 생성되며, 내용 변경이 예정되어 있는 페이지에 관한 정보를 의미한다.
이후 단계 S220에서 컨트롤러(310)는 상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 상기 무효화 페이지의 개수를 기반으로 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출한다.
일반적으로 가비지 콜렉션은 복수 개의 블록에 포함된 무효화 페이지만을 이용하여 가비지 콜렉션 대상 블록을 선정하고, 일정한 시점에 블록 단위로 삭제한다.
하지만, 본 발명에서는 무효화 페이지뿐만 아니라, 페이지 내용 변경이 예정되어 있는 예측 페이지정보를 함께 이용하여 가비지 콜렉션 대상 블록을 선정할 수 있다.
다른 실시 예에서는, 상기 가비지 콜렉션 대상 블록은 가비지 콜렉션 코스트를 기반으로 선정되며, 상기 가비지 콜렉션 코스트는 하기 개시된 [수학식 1]을 이용하여 산출된다.
[수학식 1]
가비지 콜렉션 코스트 = [예측 페이지 개수 + 무효화 페이지 개수]
즉, 본 발명에서는 복수의 블록에 대해 예측 페이지의 개수 및 무효화 페이지의 개수의 합을 이용하여 가비지 콜렉션 코스트를 산출한다.
또 다른 실시 예에서는, 컨트롤러(310)는 예측 페이지 및 무효화 페이지 각각에 대한 가중치에 더 기반하여 하기의 [수학식 2]를 이용하여 가비지 콜렉션 코스트를 산출할 수 있다.
[수학식 2]
가비지 콜렉션 코스트 = [(1-α) * 예측 페이지 개수 + α * 무효화 페이지 개수]
이때 상기 α는 가중치에 관한 상수이며, 가비지 콜렉션 코스트를 산출하기 위해 기 설정된 값일 수 있다.
상기와 같이 예측 페이지 및 무효화 페이지 각각에 대해 가중치를 더 적용하여 가비지 콜렉션 코스트를 산출함으로써 블록을 삭제할 때마다 수행되는 유효화 페이지(valid page)에 대한 데이터를 읽고 쓰는 작업(valid copy operation)의 횟수를 줄일 수 있는 효과가 있다.
단계 S230에서는 단계 S200에서 산출된 복수의 블록 각각의 가비지 콜렉션 코스트를 기반으로 가비지 콜렉션 대상 블록을 선정한다.
바람직한 실시 예로는, 컨트롤러(310)는 상기 복수의 블록에 대하여 산출된 가비지 콜렉션 코스트 중 최대값을 갖는 블록을 가비지 콜렉션 대상 블록으로 선정하여 가비지 콜렉션을 수행할 수 있다.
상기 도 1 및 도 2에 개시한 방법을 구현하기 위한 의사코드의 예시로는 하기와 같다.
Input:
- Free 블록 수 Number of BLOCKFREE
- garbage Collection수행 기준점 ThresholdGC
- 각 블록의 상태 정보(FREE, VALID, INVALID, PREDICTED) BLOKC[i].상태정보
- VICTIM 블록 선정 시 예측된 페이지, INVALID 페이지 적정 비율 α
- 현재 GC 수행할 블록 BLOCKcur _victim

Output
-차기 GC 수행할 블록 BLOCKvictim

1. IF(Number of FREE BLOCK < ThresholdGC) THEN
2. BLOCKcur _victim에 대하여 GC 수행
3. FOR 모든 블록에 대하여 DO
4. Find (BLOCK[i].INVALID + BLOCK[i].PREDICTED) OR ((1-α)*BLOCK[i].INVALID + α*BLOCK[i].PREDICTED)의 MAX
5. END FOR
6. BLOCKvictim = BLOCK.MAX
7. END IF
이때 상기 표에 개시된 victim 블록은 본 발명에 기재된‘가비지 콜렉션 대상 블록’을 지칭하는 표현일 수 있다.
도 3은 본 발명의 일 실시 예에 따른 컨트롤러를 포함하는 저장 장치를 도시하는 블록도이다.
도 3을 참조하면 본 발명의 일 실시 예에 따른 가비지 콜렉션 대상 블록을 선정하는 컨트롤러를 포함하는 저장 장치(300)는 컨트롤러(310) 및 플래시 메모리(320)를 포함한다.
호스트는 데이터 입출력 요청을 저장 장치(300)에 송신할 수 있다.. 상기 데이터 입출력 요청은 쓰기(write), 읽기(read), 삭제(erase)등의 데이터 입출력 명령을 포함할 수 있다.
또한, 호스트는 예를 들면 데스크탑을 비롯한 개인용 컴퓨터, 서버 컴퓨터, 노트북을 비롯한 휴대용 컴퓨터 및 셀룰러폰, 스마트폰, 태블릿, MP3, PMP(PortableMultimedia Player), PDA(Personal Digital Assistant), 디지털 카메라, 캠코더 등을 비롯한 휴대용 장치를 포함할 수 있다.
저장 장치(300)는 호스트가 미리 설정된 동작을 수행할 때 생성되는 데이터를 저장할 수 있다. 혹은, 저장 장치(300)에 저장된 데이터에 기반하여 호스트는 미리 설정된 동작을 수행할 수 있다.
또한, 저장 장치(300)는 SSD(Solid State Drive), 범용 플래시 저장 장치(Universal Flash Storage; UFS) 및 메모리 카드(Memory Card)를 포함할 수 있으며, 특히 SSD를 포함하는 것이 바람직할 수 있다.
저장 장치(300)는 호스트에서 처리되는 다양한 데이터를 저장하도록 구성될 수 있으며, 캐시(미도시)를 포함할 수 있다. 상기 캐시(미도시)는 일반적으로 DRAM 혹은 SRAM으로 구성되어 있으며, 호스트로부터 요청된 읽기 및 쓰기 데이터를 임시적으로 보관하는 역할을 할 수 있다.
본 발명에서는 복수의 페이지의 변경 상태에 대한 정보인 페이지 캐시 정보가 상기 캐시(미도시)에 저장될 수 있다.
컨트롤러(310)는 호스트의 요청에 응답하여 플래시 메모리(320)에 엑세스 할 수 있으며, 플래시 메모리(320)에 대한 읽기, 쓰기 및 지우기 동작을 제어할 수 있다.
구체적으로, 컨트롤러(310)는 호스트로부터 읽기 요청을 수신하는 경우, 논리 주소와 물리 주소를 연결해주는 주소 변환용 매핑 테이블을 이용하여 논리적 페이지 번호(LPN, Logical Page Number)의 실제 페이지 주소인 물리적 페이지 번호(PPN, Physical Page Number)정보를 읽어 물리적 페이지 번호에 저장된 데이터를 호스트로 전달할 수 있다.
또한, 컨트롤러(310)는 호스트로부터 쓰기 요청을 수신하는 경우, 플래시 메모리(320)에 포함된 블록 내 유효화 페이지를 무효화 페이지 상태로 처리하고, 새로운 블록의 새롭게 할당 받은 페이지에 새로운 데이터를 저장 후, 해당 물리적 페이지 번호(PPN)를 매핑 테이블에 수정 및 기록할 수 있다.
플래시 메모리(320)내에는 다수의 블록이 존재하며, 하나의 블록은 다수의 페이지로 이루어져 있다. 또한 상기 페이지는 프리 페이지(free page), 유효화 페이지, 및 무효화 페이지로 구분된다.
프리 페이지는 즉시 데이터 삽입이 가능한 상태이며, 유효화 페이지는 의미 있는 데이터가 저장된 상태이며, 무효화 페이지는 의미 없는 데이터가 저장된 상태이다.
또한, 본 발명의 실시 예에서 플래시 메모리(320)는 EEPROM(Electrically ErasableProgrammable Read-Only Memory), FRAM(Ferroelectrics Random Access Memory), PRAM(Phase-change RandomAccess Memory), MRAM(Magnetic Random Access Memory)를 포함하는 비 휘발성 메모리 장치일 수 있다.
컨트롤러(310)는 호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신한다(S100).
그리고 컨트롤러(310)는 상기 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정한다(S200).
다른 실시 예에서는, 컨트롤러(310)는 상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행할 수 있다.
다른 실시 예에서는, 상기 페이지 캐시 정보는 상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성될 수 있다.
예컨대, 호스트의 운영체제가 리눅스인 경우, 페이지의 변경 상태에 대한 정보는 페이지 캐시(Page Cache)에 저장되도록 수행될 수 있다. 그리고, 상기 페이지 캐시에서 특정한 페이지에 대한 플래그 필드(flag field)에 페이지의 변경 여부를 나타내는 더티 플래그(dirty flag)가 설정된 경우, 그 더티 플래그가 설정된 특정한 페이지는 호스트에서는 내용 변경이 이루어졌으나, 플래시 메모리(320)에서는 내용 변경이 이루어지지 않은 페이지일 수 있다.
운영체제는 상기 더티 플래그를 이용하여 상기 페이지 캐시 정보를 생성할 수 있다.
컨트롤러(310)는 상기 페이지 캐시 정보를 수신하여 예측 페이지 (predicted page) 정보를 생성한다(S210).
그리고 컨트롤러(310)는 상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 상기 무효화 페이지의 개수를 기반으로 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출한다(S220).
다른 실시 예에서는 컨트롤러(310)는 앞서 개시한 [수학식 1]을 이용하여 상기 가비지 콜렉션 코스트를 산출할 수 있다.
즉 본 발명에서는 복수의 블록에 대해 예측 페이지의 개수 및 무효화 페이지의 개수 합을 산출하고, 이중 최대 값을 갖는 블록을 가비지 콜렉션 대상 블록으로 선정한다(S230).
또 다른 실시 예에서는, 컨트롤러(310)는 예측 페이지 및 무효화 페이지(invalid page) 각각에 대한 가중치에 더 기반하여 앞서 개시한 [수학식 2]를 이용하여 코스트를 산출할 수 있다.
상기와 같이 본 발명은 예측 페이지 및 무효화 페이지 각각에 대해 가중치를 더 적용하여 코스트를 산출함으로써 블록을 삭제할 때마다 수행되는 유효화 페이지에 대한 데이터를 읽고 쓰는 작업의 횟수를 줄임으로써 입력 및 출력 성능을 향상시킬 수 있는 효과가 있다.
도 4는 본 발명의 일 실시 예에 따른 플래시 메모리를 포함하는 저장 장치를 제어하는 컨트롤러를 도시하는 블록도이다.
도 4를 참조하면 본 발명의 일 실시 예에 따른 저장 장치의 컨트롤러(310)는 수신부(312) 및 선정부(314)를 포함한다.
컨트롤러(310)는 플래시 메모리를 포함하는 저장 장치(300)를 제어한다.
수신부(312)는 호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신한다.
선정부(314)는 수신부(312)에서 수신된 페이지 캐시 정보 및 상기 복수의 페이지 중 내용이 무효화 된 페이지에 관한 정보인 무효화 페이지 정보에 기반하여 가비지 콜렉션 대상 블록을 선정한다.
도 5는 리눅스의 커널 I/O 시스템을 설명하기 위하여 도시한 도면이다.
본 발명의 다른 실시 예로, 리눅스의 운영체제에 적용하여 가비지 콜렉션을 수행할 수 있다.
도 5에 도시된 바와 같이 리눅스의 커널 I/O 시스템은 가상 파일 시스템(virtual file system; VFS), 캐시 및 스왑 캐시를 포함하는 페이지 캐시(page cache), 파일 시스템(file system), 블록 레이어(general block layer), I/O 스케줄러 및 디바이스 드라이버로 구성될 수 있다. 리눅스 커널 I/O 시스템은 이 분야의 통상적인 지식을 습득한 자들에게 있어 자명한 사실이므로, 이에 대한 구체적인 설명은 생략하기로 한다.
또한, 도 5에 도시된 리눅스의 커널 I/O 시스템 또한 호스트 시스템이므로, 본 발명에 적용이 가능하다.
즉, 본 발명에서 복수의 페이지의 변경 상태에 대한 정보인 패이지 캐시 정보는 도 5에 도시된 SSD 내의 SDRAM에 저장될 수 있다.
본 발명의 컨트롤러(310)는 SDRAM에 저장된 페이지 캐시 정보를 수신하고 이를 이용하여 예측 페이지 정보를 생성할 수 있다. 그리고 컨트롤러(310)는 생성된 예측 페이지 정보 및 무효화 페이지 정보를 기반으로 가비지 콜렉션 코스트를 산출하고, 이를 기반으로 가비지 콜렉션을 수행할 수 있다.
또한 본 발명은 상기 개시된 리눅스 운영체제뿐만 아니라 다양한 운영체제에 적용하여 가비지 콜렉션을 수행할 수 있다.
도 6는 본 발명의 일 실시 예에 따른 가비지 콜렉션 대상 블록을 선정한 결과를 설명하기 위하여 도시한 도면이다.
도 6의 좌측에는 종래의 그리디(greedy)정책을 이용하여 가비지 콜렉션 대상 블록을 선정한 결과이며, 우측에는 본 발명에서의 가비지 콜렉션 대상 블록 선정 방법을 이용하여 대상 블록을 선정한 결과를 도시한 도면이다.
종래의 그리디 정책을 이용한 가비지 콜렉션 블록 선정 방법은 무효화 페이지정보만을 이용하여 가비지 콜렉션 대상 블록으로 선정하였다. 따라서 A, B, C 및 D 블록 중 B 블록에 포함된 무효화 페이지 개수가 가장 많으므로 가비지 콜렉션 대상 블록으로 B 블록이 선정된 결과를 나타낸다.
하지만 본 발명에서는 무효화 페이지 및 예측 페이지 정보를 기반으로 가비지 콜렉션 대상 블록을 선정한다.
이에 대한 본 발명에서의 바람직한 실시 예로는, 무효화 페이지의 개수 및 예측 페이지 개수의 합의 최대값이 되는 블록을 가비지 콜렉션 대상 블록으로 선정할 수 있다. 그 결과로, 예측 페이지 및 무효화 페이지의 개수의 합의 최대 값을 갖는 블록은 C 블록이 된다. 따라서 C 블록을 가비지 콜렉션 대상 블록으로 선정하고, 선정된 블록에 대하여 가비지 콜렉션을 수행하게 된다.
본 발명에서의 다른 실시 예로는 무효화 페이지의 개수 및 예측 페이지의 개수 각각의 가중치에 더 기반하여 가비지 콜렉션 코스트를 산출하여 가비지 콜렉션 대상 블록을 선정할 수 있다.
도 6에 도시된 바와 같이 종래의 그리디 정책을 이용하여 가비지 콜렉션 대상 블록을 선정하는 경우 불필요한 유효화 페이지 복사 작업이 수행되어야 한다.
하지만, 본 발명에 따르면, 내용 변경이 예정되어 있는 페이지에 관한 정보인 예측 페이지 정보를 이용함으로써, 불필요한 유효화 페이지 복사 작업을 줄일 수 있으며, 이에 따라 가비지 콜렉션을 더욱 효율적으로 수행할 수 있는 효과가 있다.
한편, 상술한 본 발명의 실시 예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다.
상기 컴퓨터로 읽을 수 있는 기록 매체는 마그네틱저장 매체(예를 들면, 롬, 플로피 디스크, 하드디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
300 : 저장 장치
310 : 컨트롤러
312 : 수신부
314 : 선정부.
320 : 플래시 메모리

Claims (11)

  1. 호스트로부터 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하는 단계;
    상기 페이지 캐시 정보로부터 상기 복수의 페이지 중 내용 변경이 예정되어 있는 페이지에 관한 정보인 예측 페이지(predicted page) 정보를 생성하는 단계;
    상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 무효화 페이지의 개수를 합하여 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출하는 단계; 및
    상기 복수의 블록 각각에 대해 산출된 코스트를 기반으로 가비지 콜렉션 대상 블록을 선정하는 단계를 포함하는 플래시 메모리의 가비지 콜렉션 방법.
  2. 제 1항에 있어서,
    상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행하는 단계를 더 포함하는 플래시 메모리의 가비지 콜렉션 방법.
  3. 제 1항에 있어서,
    상기 페이지 캐시 정보는,
    상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성되는 플래시 메모리의 가비지 콜렉션 방법.
  4. 삭제
  5. 제 1항에 있어서,
    상기 코스트를 산출하는 단계는,
    상기 예측 페이지 및 상기 무효화 페이지의 각각에 대한 가중치에 더 기반하여 상기 코스트를 산출하는 플래시 메모리의 가비지 콜렉션 방법.
  6. 플래시 메모리; 및
    호스트로부터 상기 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하고,
    상기 페이지 캐시 정보로부터 상기 복수의 페이지 중 내용 변경이 예정되어 있는 페이지에 관한 정보인 예측 페이지 정보를 생성하고,
    상기 복수의 블록 각각에 포함된 상기 예측 페이지의 개수 및 무효화 페이지의 개수를 합하여 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출하여, 상기 복수의 블록 각각에 대해 산출된 코스트를 기반으로 가비지 콜렉션 대상 블록을 선정하는 컨트롤러를 포함하는 저장 장치.
  7. 제 6항에 있어서,
    상기 컨트롤러는
    상기 가비지 콜렉션 대상 블록에 대하여 가비지 콜렉션을 수행하는 저장 장치.
  8. 제 6항에 있어서,
    상기 페이지 캐시 정보는
    상기 호스트의 운영체제가 상기 복수의 페이지의 변경 상태에 대한 정보를 저장하는 캐시로부터 생성되는 저장 장치.
  9. 삭제
  10. 제 6항에 있어서,
    상기 컨트롤러는
    상기 예측 페이지 및 상기 무효화 페이지의 각각에 대한 가중치에 더 기반하여 상기 코스트를 산출하는 저장 장치.
  11. 플래시 메모리를 제어하는 컨트롤러에 있어서,
    호스트로부터 상기 플래시 메모리를 구성하는 복수의 블록 각각에 포함된 복수의 페이지의 내용 변경 예정에 관한 정보인 페이지 캐시 정보를 수신하는 수신부; 및
    상기 복수의 블록 각각에 포함된 예측 페이지의 개수 및 무효화 페이지의 개수를 합하여 상기 복수의 블록 각각에 대한 가비지 콜렉션 코스트를 산출하여 가비지 콜렉션 대상 블록을 선정하는 선정부;를 포함하는 플래시 메모리의 컨트롤러.
KR1020170111936A 2016-12-27 2017-09-01 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치 KR102033462B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160179953 2016-12-27
KR20160179953 2016-12-27

Publications (2)

Publication Number Publication Date
KR20180076276A KR20180076276A (ko) 2018-07-05
KR102033462B1 true KR102033462B1 (ko) 2019-10-17

Family

ID=62920359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170111936A KR102033462B1 (ko) 2016-12-27 2017-09-01 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치

Country Status (1)

Country Link
KR (1) KR102033462B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474723B2 (en) 2020-10-08 2022-10-18 SK Hynix Inc. Storage device and operating method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200123912A (ko) 2019-04-23 2020-11-02 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130132647A1 (en) * 2011-11-18 2013-05-23 Stec, Inc. Optimized garbage collection algorithm to improve solid state drive reliability
KR101392174B1 (ko) * 2011-11-09 2014-05-09 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101067018B1 (ko) * 2009-04-17 2011-09-22 서울대학교산학협력단 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
KR20140006299A (ko) * 2012-07-03 2014-01-16 삼성전자주식회사 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101392174B1 (ko) * 2011-11-09 2014-05-09 한양대학교 산학협력단 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법
US20130132647A1 (en) * 2011-11-18 2013-05-23 Stec, Inc. Optimized garbage collection algorithm to improve solid state drive reliability

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474723B2 (en) 2020-10-08 2022-10-18 SK Hynix Inc. Storage device and operating method thereof

Also Published As

Publication number Publication date
KR20180076276A (ko) 2018-07-05

Similar Documents

Publication Publication Date Title
CN108021510B (zh) 操作对多重名称空间进行管理的存储装置的方法
US9304905B2 (en) Memory controller and data management method thereof
US10606761B2 (en) Method for accessing flash memory module and associated flash memory controller and electronic device
US8417872B2 (en) Write and merge methods in memory card systems for reducing the number of page copies
KR101966693B1 (ko) Lba 비트맵 사용
US10789160B2 (en) Utilizing different data storage policies in response to different characteristics of data
US8117374B2 (en) Flash memory control devices that support multiple memory mapping schemes and methods of operating same
US8095723B2 (en) Log-based flash translation layer and operating method thereof
KR20200033985A (ko) 논리적/물리적 매핑
US9645922B2 (en) Garbage collection in SSD drives
US8825946B2 (en) Memory system and data writing method
US10310766B2 (en) Memory system and data relocating method
JP2018160195A (ja) メモリシステムおよび不揮発性メモリの制御方法
JP6034183B2 (ja) 半導体記憶装置
US11204864B2 (en) Data storage devices and data processing methods for improving the accessing performance of the data storage devices
CN110647288A (zh) 数据储存装置及其快取分流方法
JP2010287049A (ja) メモリシステムおよびメモリシステムの管理方法
JP2018160189A (ja) メモリシステム
KR102033462B1 (ko) 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
JP6988445B2 (ja) ストレージシステム、制御装置及び制御方法
KR20150139383A (ko) 반도체 장치
CN108984117B (zh) 一种数据读写方法、介质及设备
CN108509295B (zh) 存储器系统的操作方法
JP2013109404A (ja) 情報処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right