KR101839664B1 - 데이터 기억 시스템 및 그 제어 방법 - Google Patents

데이터 기억 시스템 및 그 제어 방법 Download PDF

Info

Publication number
KR101839664B1
KR101839664B1 KR1020157032750A KR20157032750A KR101839664B1 KR 101839664 B1 KR101839664 B1 KR 101839664B1 KR 1020157032750 A KR1020157032750 A KR 1020157032750A KR 20157032750 A KR20157032750 A KR 20157032750A KR 101839664 B1 KR101839664 B1 KR 101839664B1
Authority
KR
South Korea
Prior art keywords
memory
control unit
data
page
page address
Prior art date
Application number
KR1020157032750A
Other languages
English (en)
Other versions
KR20150145242A (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 KR20150145242A publication Critical patent/KR20150145242A/ko
Application granted granted Critical
Publication of KR101839664B1 publication Critical patent/KR101839664B1/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
    • 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
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • 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)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

가비지 컬렉션 시에서의 카피 처리에 기인하는 처리 능력의 저하를 억제한다. 본 발명에 관한 데이터 기억 시스템(100)은, 페이지 단위로 데이터가 기입되는 메모리(114)와, 메모리(114)에의 데이터의 기입을 제어하는 메모리 제어부(112)를 구비하는 메모리 유닛(110)과, 메모리 제어부(112)에, 데이터를 기입하는 논리 페이지 어드레스를 지시하는 제어부(120)를 구비하고, 메모리 제어부(112)는 다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 블록인 타깃 블록을 결정하고, 타깃 블록 내의 유효 페이지의 물리 페이지 어드레스에 대응하는 논리 페이지 어드레스의 정보를 제어부(120)에 제공하고, 제어부(120)는 메모리 제어부(112)로부터 수취한 논리 페이지 어드레스에 데이터를 기입하도록 메모리 제어부(112)에 지시한다.

Description

데이터 기억 시스템 및 그 제어 방법{DATA STORAGE SYSTEM AND CONTROL METHOD THEREOF}
본 출원은, 일본 특허 출원 제2013-105094호(2013년 5월 17일 출원)의 우선권을 주장하는 것이며, 당해 출원의 개시 전체를, 여기에 참조를 위해 원용한다.
본 발명은 데이터 기억 시스템 및 그 제어 방법에 관한 것으로, 특히, 가비지 컬렉션을 행하는 데이터 기억 시스템 및 그 제어 방법에 관한 것이다.
최근, 빅 데이터를 취급하는 애플리케이션, 예를 들어, SQL(Structured Query Language) 데이터베이스 등에 사용하는 데이터 기억 시스템에 있어서, 고속, 저소비 전력 등의 특징을 갖는 SSD(Solid State Drive)를 채용하는 것이 검토되고 있다.
SSD의 구성의 일례로서, 예를 들어, 고속의 ReRAM과 고밀도의 NAND 플래시 메모리를 조합한 하이브리드 SSD가 제안되어 있다(예를 들어, 비특허문헌 1 참조). 그러나, 비용 저감의 관점 등으로부터, NAND 플래시 메모리만을 사용한 SSD도 검토되고 있다.
SQL 등의 데이터베이스에 있어서는, 데이터베이스의 단위로서 행 데이터(row data)가 사용된다. SSD는, 행 데이터를 단위로 하여, 삽입, 소거 또는 갱신 등의 처리(쿼리)를 실행한다. 행 데이터의 사이즈는, 통상 수100바이트 정도이다.
도 8에 논리 어드레스 공간과 물리 어드레스 공간에 있어서의 데이터의 취급의 일례를 나타낸다. 도 8의 (a)는 논리 어드레스 공간을 나타내고, 도 8의 (b)는 물리 어드레스 공간을 나타낸다. NAND 플래시 메모리는 물리 어드레스 공간에 도시하는 바와 같이, 게이트를 공통으로 하는 메모리 셀의 집합으로서 페이지가 구성되고, 복수의 페이지로부터 블록이 구성된다. 도 8에 나타내는 예에 있어서는, 1페이지는 16킬로바이트이다. 또한, 1블록은 256페이지를 포함한다.
NAND 플래시 메모리는 기입 단위가 페이지이다. 도 8에 도시하는 바와 같이, 1페이지의 데이터 사이즈는 16킬로바이트 정도이고, 이것은, 행 데이터의 데이터 사이즈인 수100바이트 정도보다도 크다. 또한, NAND 플래시 메모리의 소거 단위는 블록이다. 도 8에 나타내는 예에 있어서는, 블록 0에 있어서, 물리 페이지 어드레스(PPA:Physical Page Address)가 0 내지 255까지 할당되고, 블록 1에 있어서, 물리 페이지 어드레스가 256 내지 511까지 할당되어 있다.
상술한 바와 같이, NAND 플래시 메모리의 기입 단위는 페이지이므로, NAND 플래시 메모리에 대한 기입 지시는, 도 8의 논리 어드레스 공간에 나타내는 논리 페이지 어드레스(LPA:Logical Page Address)에 의해 행해진다. 논리 페이지 어드레스는, 물리 페이지 어드레스와 동등한 데이터 사이즈를 갖는다. 논리 어드레스(LA:Logical Address)는 행 데이터의 데이터 사이즈로 대응시킨 어드레스이다.
NAND 플래시 메모리의 제어부는, 어느 논리 페이지 어드레스에 대한 기입이 지시되면, 그 논리 페이지 어드레스를 물리 페이지 어드레스로 변환하여, 데이터를 기입한다. 논리 페이지 어드레스와 물리 페이지 어드레스와의 대응 관계는 고정된 것이 아니라, NAND 플래시 메모리의 사용 상황에 따라서 바뀌어 간다. 논리 페이지 어드레스와 물리 페이지 어드레스와의 대응 관계는, NAND 플래시 메모리의 제어부가 기억하고 있다.
도 9에 NAND 플래시 메모리에 있어서 행 데이터를 갱신할 때의 처리 모습을 나타낸다. 좌측에 나타내는 블록 201이 갱신 대상의 행 데이터를 포함하는 블록이며, 우측에 나타내는 블록 202가 데이터를 기입하는 것이 가능한 빈 페이지를 포함하는 블록인 것으로 한다.
도 9에 나타내는 예에 있어서는, 블록 201 위에서 3번째의 페이지의 좌측으로부터 5번째의 행 데이터를 갱신하는 예를 나타낸다. 이 경우, NAND 플래시 메모리는 행 단위로 데이터를 기입할 수 없으므로, 갱신하는 행 데이터를 포함하는 페이지를 판독한다(S101). 계속해서, 판독한 페이지 데이터에 대해, 좌측으로부터 5번째의 데이터를 갱신 데이터로 치환한다(S102). 또한, 갱신한 1페이지분의 데이터를 블록 202에 기입한다(S103). 그 후, 블록 201 내의 원래의 페이지(위에서 3번째의 페이지)를 무효 페이지로 한다(S104).
이와 같이, NAND 플래시 메모리를 채용한 SSD에 있어서는, 데이터의 기입 단위가 페이지이기 때문에, 데이터의 갱신 처리를 행할 때마다 무효 페이지가 발생한다. 이것은, 데이터의 갱신이 아니라, 페이지의 빈 영역에 데이터를 삽입하는 경우도 마찬가지이다. 따라서, NAND 플래시 메모리에 있어서는, 삽입 또는 갱신 처리를 할 때마다 무효 페이지가 늘어나 빈 용량이 감소해 간다. 그로 인해, SSD는 빈 용량이 감소해서 소정의 임계값보다 작아지면 가비지 컬렉션을 실행하여 빈 용량을 생성한다.
도 10은 가비지 컬렉션의 처리의 일례를 나타내는 흐름도이다.
SSD는 NAND 플래시 메모리의 빈 용량이 소정의 임계값보다 작아지면, 소거 대상으로 하는 블록(이하, 「타깃 블록」이라고 함)을 선택하고, 타깃 블록 내의 모든 유효 페이지의 데이터를 판독한다(스텝 S201). 계속해서, SSD는 판독한 유효 페이지의 데이터를, 빈 페이지를 갖는 기입 대상 블록에 기입한다(스텝 S202). 계속해서, SSD는 타깃 블록의 데이터를 소거한다(스텝 S203).
이와 같이, SSD는 NAND 플래시 메모리의 빈 용량이 저감한 경우, 가비지 컬렉션을 실행하여 타깃 블록 내의 데이터를 소거함으로써, 빈 용량을 증가시킬 수 있다.
그러나, NAND 플래시 메모리는 소거 단위가 블록이므로, 빈 블록을 생성하기 위해서는, 가비지 컬렉션 시에 웨어 레벨링 등에 의해 선택된 타깃 블록 내의 유효 페이지를 다른 블록의 빈 페이지에 카피하고, 타깃 블록 내의 페이지를 모두 무효 페이지로 하고 나서, 블록 전체를 소거할 필요가 있다.
이 경우, 타깃 블록 내의 유효 페이지의 페이지수가 많으면, 모든 유효 페이지를 카피하기 위해서는 장시간이 걸린다. 예를 들어, 1개의 페이지의 카피에 1.7㎳ 정도의 시간이 걸리고, 유효 페이지수가 100개 정도 있는 경우, 카피에 필요로 하는 시간은 100㎳ 이상의 장시간이 된다.
이와 같이, 종래의 데이터 기억 시스템은, 가비지 컬렉션 시에서의 유효 페이지의 카피에 시간이 걸리기 때문에, 처리 능력이 저하된다고 하는 문제가 있었다. 또한, 메모리의 빈 용량이 감소해 가면, 빈번히 가비지 컬렉션이 기동되므로, 메모리의 빈 용량의 감소에 수반하여, 처리 능력의 저하가 현저해진다고 하는 문제가 있었다.
따라서, 이러한 점을 감안하여 이루어진 본 발명의 목적은, 가비지 컬렉션 시에서의 카피 처리에 기인하는 처리 능력의 저하를 억제할 수 있는 데이터 기억 시스템 및 그 제어 방법을 제공하는 데 있다.
상기 과제를 해결하기 위해, 본 발명에 관한 데이터 기억 시스템은, 페이지 단위로 데이터가 기입되는 메모리와, 상기 메모리에의 데이터의 기입을 제어하는 메모리 제어부를 구비하는 메모리 유닛과, 상기 메모리 제어부에, 데이터를 기입하는 논리 페이지 어드레스를 지시하는 제어부를 구비하고, 상기 메모리 제어부는, 다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 블록인 타깃 블록을 결정하고, 상기 타깃 블록 내의 유효 페이지의 물리 페이지 어드레스에 대응하는 논리 페이지 어드레스의 정보를 상기 제어부에 제공하고, 상기 제어부는, 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 데이터를 기입하도록 상기 메모리 제어부에 지시하는 것을 특징으로 한다.
또한, 본 발명에 관한 데이터 기억 시스템에 있어서, 상기 제어부는, 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 분산시켜 데이터를 기입하도록 상기 메모리 제어부에 지시하는 것이 바람직하다.
또한, 본 발명에 관한 데이터 기억 시스템에 있어서, 상기 제어부는, 상기 메모리 내에 기억되어 있는 데이터를 갱신할 때에, 갱신 전의 데이터를 소거하고, 새롭게 갱신하는 데이터를 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 기입하도록 상기 메모리 제어부에 지시하는 것이 바람직하다.
또한, 본 발명에 관한 데이터 기억 시스템에 있어서, 상기 메모리 제어부는, 상기 메모리의 빈 용량이 소정의 임계값보다 작아지면, 가비지 컬렉션을 개시하는 것이 바람직하다.
또한, 상기 과제를 해결하기 위해, 본 발명에 관한 데이터 기억 시스템의 제어 방법은, 페이지 단위로 데이터가 기입되는 메모리를 구비하는 데이터 기억 시스템의 제어 방법으로서, 다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 블록인 타깃 블록을 결정하는 결정 스텝과, 상기 타깃 블록 내의 유효 페이지의 물리 페이지 어드레스를 대응하는 논리 페이지 어드레스로 변환하는 변환 스텝과, 변환된 상기 논리 페이지 어드레스에 데이터를 기입하는 기입 스텝을 포함하는 것을 특징으로 한다.
본 발명에 따르면, 가비지 컬렉션 시에서의 카피 처리에 기인하는 처리 능력의 저하를 억제할 수 있는 데이터 기억 시스템 및 그 제어 방법을 제공할 수 있다.
도 1은 본 발명의 일 실시 형태에 관한 데이터 기억 시스템의 개략 구성을 도시하는 도면이다.
도 2는 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서의 메모리의 모습의 일례를 나타내는 도면이다.
도 3은 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서 행 데이터를 삽입하는 모습의 일례를 나타내는 도면이다.
도 4는 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서 행 데이터를 갱신하는 모습의 일례를 나타내는 도면이다.
도 5는 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 여러 특성의, 메모리의 빈 용량에 대한 의존성을 시뮬레이션한 결과를 도시하는 도면이다.
도 6은 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 여러 특성의, 메모리 내의 블록 사이즈에 대한 의존성을 시뮬레이션한 결과를 도시하는 도면이다.
도 7은 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 처리 능력의 시간 의존성을 시뮬레이션한 결과를 도시하는 도면이다.
도 8은 논리 어드레스 공간과 물리 어드레스 공간에 있어서의 데이터의 취급의 일례를 나타내는 도면이다.
도 9는 NAND 플래시 메모리에 있어서 행 데이터를 갱신할 때의 처리의 일례를 나타내는 도면이다.
도 10은 가비지 컬렉션의 처리의 일례를 나타내는 흐름도이다.
이하, 본 발명에 관한 실시 형태에 대해서, 도면을 참조하여 설명한다.
도 1은, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템의 개략 구성을 도시하는 도면이다. 데이터 기억 시스템(100)은 메모리 유닛(110) 및 제어부(120)를 구비하고 있다. 메모리 유닛(110)은, 예를 들어, SSD이다. 또한, 제어부(120)는, 예를 들어, 일반적으로 데이터 스토리지 엔진이라고 불리는 것이며, CPU(Central Processing Unit) 등에 의해 실행되는 소프트웨어로서 실현해도 좋다.
메모리 유닛(110)은 메모리 제어부(112) 및 NAND 플래시 메모리로 구성되는 메모리(114)를 구비하고 있다.
메모리 제어부(112)는 예를 들어, 웨어 레벨링의 관점 등에 기초하여, 다음번의 가비지 컬렉션 시에 소거 대상으로 하는 블록인 메모리(114) 내의 타깃 블록을 결정한다.
메모리 제어부(112)는 타깃 블록 내에 있는 유효 페이지의 물리 페이지 어드레스를 논리 페이지 어드레스로 변환하고, 그 논리 페이지 어드레스의 정보를 제어부(120)에 제공한다.
메모리 제어부(112)는 메모리(114)의 빈 용량을 감시한다. 메모리 제어부(112)는 메모리(114)의 빈 용량이 소정의 임계값보다 적어지면, 사전에 결정된 타깃 블록에 대해 가비지 컬렉션을 개시한다.
메모리 제어부(112)는 제어부(120)로부터, 어느 논리 페이지 어드레스에 대한 삽입, 소거 또는 갱신 처리의 지시를 받으면, 그 논리 페이지 어드레스를 물리 페이지 어드레스로 변환하고, 메모리(114) 내의 그 물리 페이지 어드레스에 대해 삽입, 소거 또는 갱신 처리를 실행한다.
메모리 제어부(112)는 메모리(114)에의 기입 시, 소거를 사전에 행하지 않고 동일한 물리 페이지 어드레스에 덮어 쓸 수 없으므로, 기입 대상의 논리 페이지 어드레스의 데이터를 페이지 단위로 판독하여, 삽입하는 행 데이터를 페이지에 추가하고, 타 블록 내의 빈 페이지에 기입한다. 그 후, 메모리 제어부(112)는 카피원의 유효 페이지를 무효 페이지로 한다.
메모리(114)는 NAND 플래시 메모리로 구성되어 있다. 메모리(114)는 기입 단위가 페이지이며, 소거 단위가 블록이다.
제어부(120)는 메모리 제어부(112)로부터, 다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 타깃 블록 내의 유효 페이지에 대응하는 논리 페이지 어드레스의 정보를 수취한다.
제어부(120)는 메모리(114)에 행 데이터의 삽입을 할 때, 메모리 제어부(112)로부터 수취한 타깃 블록 내의 유효 페이지에 대응하는 논리 페이지 어드레스에 대해, 행 데이터 삽입의 지시를 낸다. 제어부(120)가 행 데이터를 삽입할 때의 처리 상세에 대해서는 후술한다.
또한, 제어부(120)는 메모리(114) 내의 행 데이터의 갱신을 할 때, 원래의 행 데이터를 소거하고, 새로운 갱신 데이터를, 메모리 제어부(112)로부터 수취한 타깃 블록 내의 유효 페이지에 대응하는 논리 페이지 어드레스에 대해 삽입하도록 지시를 낸다. 즉, 제어부(120)는 행 데이터의 갱신 처리를 소거와 삽입을 조합한 처리로서 실행한다. 제어부(120)가 행 데이터를 갱신할 때의 처리 상세에 대해서는 후술한다.
도 2는, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서의 메모리의 모습의 일례를 나타내는 도면이다.
도 2의 (a)는 기입 페이즈에 있어서의 메모리(114) 내의 블록(21), 블록(22) 및 블록(23)의 모습의 일례를 나타내는 도면이다. 도 2의 (a)에 있어서는, 블록(21)이 타깃 블록이며, 블록(23)이 빈 페이지를 갖는 블록인 것으로 한다.
도 2의 (a)의 상태에 있어서는, 타깃 블록이 블록(21)이므로, 메모리 제어부(112)는 타깃 블록(21) 내의 유효 페이지의 물리 페이지 어드레스를 논리 페이지 어드레스로 변환하여 그 논리 페이지 어드레스의 정보를 제어부(120)에 제공한다. 제어부(120)는 행 데이터를 삽입할 때, 메모리 제어부(112)로부터 수취한 타깃 블록(21) 내의 유효 페이지의 논리 페이지 어드레스를 지정한다. 이때, 타깃 블록(21) 내의 유효 페이지는 덮어쓰기를 할 수 없으므로, 메모리 제어부(112)는 제어부(120)로부터 지정된 타깃 블록(21) 내의 유효 페이지의 데이터를 판독하여, 삽입하는 데이터를 추가하고, 블록(23) 내의 빈 페이지에 기입한다.
기입 페이즈에 있어서, 도 2의 (a)에서 설명한 처리를 반복하면, 메모리 제어부(112)가 가비지 컬렉션을 개시하는 가비지 컬렉션 페이즈에 있어서는, 도 2의 (b)에 도시하는 바와 같이, 타깃 블록(21) 내의 페이지가 모두 무효 페이지로 되어 있다. 따라서, 가비지 컬렉션 시에, 타깃 블록(21) 내의 유효 페이지의 카피를 실행할 필요가 없어, 가비지 컬렉션 시에서의 처리 능력의 저하를 억제할 수 있다.
도 3은, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서 행 데이터를 삽입하는 모습의 일례를 나타내는 도면이다. 도 3의 (a)는 논리 어드레스 공간을 나타내고, 도 3의 (b)는 물리 어드레스 공간을 나타낸다.
도 3에 도시하는 예에 있어서는, 제어부(120)는 메모리 제어부(112)로부터, 타깃 블록(31) 내의 유효 페이지에 상당하는 논리 페이지 어드레스의 정보로서, LPA0 내지 LPA3을 수취하고 있다. 예를 들어, 4개의 행 데이터를 삽입할 때, 도 3의 (a)에 도시하는 바와 같이, 제어부(120)는 논리 페이지 어드레스 LPA0 내지 LPA3을 지정하여, 행 데이터를 삽입하도록 지시한다.
메모리 제어부(112)는 제어부(120)로부터, 논리 페이지 어드레스 LPA0 내지 LPA3에 대한 행 데이터 삽입의 지시를 받으면, 예를 들어, 도 3의 (b)에 도시하는 바와 같이, 타깃 블록(31)으로부터, 논리 페이지 어드레스에 대응하는 물리 페이지 어드레스의 데이터를 판독하고, 각각의 페이지에 행 데이터를 삽입하고, 기입 대상 블록(32)에 기입한다. 그 후, 메모리 제어부(112)는 타깃 블록(31) 내의 원래의 페이지를 무효 페이지로 한다.
이때, 제어부(120)는, 예를 들어, LPA0에 대해 4개의 행 데이터를 모두 삽입등과 바와 같이, 순서대로 앞에서부터 채워서 행 데이터를 삽입하는 것이 아니라, LPA0 내지 LPA3에 분산시켜 행 데이터를 삽입한다. 이와 같이, 제어부(120)가 행 데이터를 분산시켜 삽입함으로써, 메모리(114)의 용량이 완전히 핍박될 때까지, 각 페이지가 빈 스페이스를 갖는 상태를 유지할 수 있다. 그 결과, 타깃 블록 내의 유효 페이지에 빈 스페이스가 없으므로, 제어부(120)가, 타깃 블록 내의 유효 페이지를 행 데이터의 삽입처로서 지정할 수 없게 된다고 하는 상황을 방지할 수 있다.
도 4는, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서 행 데이터를 갱신하는 모습의 일례를 나타내는 도면이다. 도 4의 (a)는 논리 어드레스 공간을 나타내고, 도 4의 (b)는 물리 어드레스 공간을 나타낸다.
제어부(120)는 행 데이터의 갱신 처리를 행할 때, 도 9에 도시된 바와 같은 방법에 의해, 그대로 행 데이터를 갱신하는 것이 아니라, 갱신 처리를, 소거와 삽입을 조합한 처리로 하여 실행한다.
예를 들어, 도 4의 (a)에 나타내는 예에 있어서는, 제어부(120)는 메모리 제어부(112)로부터, 타깃 블록(41) 내의 유효 페이지에 상당하는 논리 페이지 어드레스의 정보로서, LPA0 내지 LPA3을 수취하고 있다. 여기서, 예를 들어, LPA1의 3번째의 행 데이터를 갱신하는 경우, 제어부(120)는, 도 9에 도시된 바와 같은 방법에 의해 LPA1의 3번째의 행 데이터를 갱신하는 것이 아니라, LPA1의 3번째의 행 데이터를 소거하고, 논리 페이지 어드레스 LPA3을 지정하여, 새롭게 갱신하는 행 데이터를 삽입하도록 지시한다.
메모리 제어부(112)는 제어부(120)로부터, 논리 페이지 어드레스 LPA3에 대해, 새롭게 갱신하는 행 데이터의 삽입의 지시를 받으면, 예를 들어, 도 4의 (b)에 도시하는 바와 같이, 타깃 블록(41)으로부터, 논리 페이지 어드레스 LPA3에 대응하는 물리 페이지 어드레스의 데이터를 판독하고, 새롭게 갱신하는 행 데이터를 삽입하고, 기입 대상 블록(42)에 기입한다. 그 후, 메모리 제어부(112)는 타깃 블록(41) 내의 원래의 페이지를 무효 페이지로 한다.
이와 같이, 제어부(120)가, 갱신 처리를 소거와 삽입을 조합한 처리로 하여 실행함으로써, 갱신 처리에 있어서도 삽입 처리와 마찬가지로, 타깃 블록 내의 유효 페이지를 무효 페이지로 할 수 있다. 그 결과, 데이터 기억 시스템(100)에 있어서 실행되는 처리에 있어서 갱신 처리의 비율이 높은 경우에 있어서도, 갱신 처리 및 삽입 처리를 반복함으로써, 타깃 블록 내의 모든 유효 페이지를 무효 페이지로 할 수 있다.
도 5는, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 여러 특성의, 메모리의 빈 용량에 대한 의존성을 시뮬레이션한 결과를 도시하는 도면이다. 도 5에 있어서, 백색 기호는 종래 기술의 시뮬레이션 결과, 흑색 기호는 본 실시 형태의 시뮬레이션 결과를 나타낸다. 또한, 삼각, 사각 및 동그라미의 3종류의 기호는, 시뮬레이션에서 사용된 데이터의 삽입/소거/갱신 처리의 비율 차이를 나타내고, 각각, 삽입/소거/갱신 비율이, 10%/10%/80%, 30%/30%/40% 및 50%/50%/0%인 경우를 나타낸다.
도 5의 (a)는 종축이 처리 능력이다. 도 5의 (a)를 참조하면, 백색 기호로 표시되는 종래 기술은 메모리(114)의 빈 용량의 감소에 수반하여 처리 능력이 저하된다. 이에 반해, 흑색 기호로 표시되는 본 실시 형태에서는, 처리 능력이 메모리(114)의 빈 용량에 거의 의존하지 않는다. 이것은, 도 5의 (a)에 도시한 3종류의 삽입/소거/갱신 비율의 모든 경우에 대해서도 성립한다. 예를 들어, 삽입/소거/갱신 비율이 50%/50%/0%이고 메모리(114)의 빈 용량이 20%인 경우에 있어서 비교하면, 본 실시 형태의 처리 능력은 종래 기술의 처리 능력의 3.8배이다.
도 5의 (b)는 종축이 소비 전력이다. 도 5의 (b)를 참조하면, 백색 기호로 표시되는 종래 기술은 메모리(114)의 빈 용량의 감소에 수반하여 소비 전력이 증대한다. 이에 반해, 흑색 기호로 표시되는 본 실시 형태에서는, 소비 전력이 메모리(114)의 빈 용량에 거의 의존하지 않는다. 이것은, 도 5의 (b)에 도시한 3종류의 삽입/소거/갱신 비율의 모든 경우에 대해서도 성립한다. 예를 들어, 삽입/소거/갱신 비율이 50%/50%/0%이고 메모리(114)의 빈 용량이 20%인 경우에 있어서 비교하면, 본 실시 형태의 소비 전력은 종래 기술로부터 46% 감소하고 있다.
도 5의 (c)는 종축이 소정의 데이터 처리를 했을 때의 재기입 횟수이다. 도 5의 (c)를 참조하면, 백색 기호로 표시되는 종래 기술은 메모리(114)의 빈 용량의 감소에 수반하여 재기입 횟수가 증대한다. 이에 대해, 흑색 기호로 표시되는 본 실시 형태에서는, 재기입 횟수가 메모리(114)의 빈 용량에 거의 의존하지 않는다. 이것은, 도 5의 (c)에 도시한 3종류의 삽입/소거/갱신 비율의 모든 경우에 대해서도 성립한다. 예를 들어, 삽입/소거/갱신 비율이 50%/50%/0%이고 메모리(114)의 빈 용량이 20%인 경우에 있어서 비교하면, 본 실시 형태의 재기입 횟수는 종래 기술로부터 62% 감소하고 있다.
도 6은, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 여러 특성의, 메모리(114) 내의 블록 사이즈에 대한 의존성을 시뮬레이션한 결과를 도시하는 도면이다.
도 6의 (a)는 좌측의 종축이 처리 능력, 우측의 종축이 소비 전력이다. 도 6의 (a)에 있어서 처리 능력의 특성을 참조하면, 백색 사각으로 표시되는 종래 기술은 블록 사이즈가 커짐에 따라서 처리 능력이 저하된다. 이에 반해, 흑색 사각으로 표시되는 본 실시 형태는 블록 사이즈에의 의존성이 작다. 예를 들어, 블록 사이즈가 8메가바이트인 경우에 있어서 비교하면, 본 실시 형태의 처리 능력은 종래 기술의 처리 능력의 6.3배이다.
또한, 도 6의 (a)에 있어서 소비 전력의 특성을 참조하면, 흰색 동그라미로 표시되는 종래 기술은 블록 사이즈가 커짐에 따라서 소비 전력이 증대한다. 이에 반해, 흑색 동그라미로 표시되는 본 실시 형태는 블록 사이즈에의 의존성이 작다. 예를 들어, 블록 사이즈가 8메가바이트인 경우에 있어서 비교하면, 본 실시 형태의 소비 전력은 종래 기술에 대해 65% 저하되어 있다.
도 6의 (b)의 종축은 재기입 횟수이다. 도 6의 (b)에 있어서 재기입 횟수의 특성을 참조하면, 백색 삼각으로 표시되는 종래 기술은 블록 사이즈가 커짐에 따라서 재기입 횟수가 증대한다. 이에 반해, 흑색 삼각으로 표시되는 본 실시 형태는 블록 사이즈에의 의존성이 작다. 예를 들어, 블록 사이즈가 8메가바이트인 경우에 있어서 비교하면, 본 실시 형태의 재기입 횟수는 종래 기술에 대해 78% 저하되어 있다.
도 6의 (a) 및 (b)에 도시하는 바와 같이, 본 실시 형태에 관한 데이터 기억 시스템(100)은, 여러 특성의 블록 사이즈에의 의존성이 작기 때문에, 블록 사이즈가 큰 3D-NAND 플래시 메모리 등을 메모리(114)에 채용해도, 여러 특성이 열화되지 않는다.
도 7은, 본 발명의 일 실시 형태에 관한 데이터 기억 시스템에 있어서, 처리 능력의 시간 의존성을 시뮬레이션한 결과를 도시하는 도면이다. 도 7은 행 데이터의 사이즈를 119바이트, NAND 페이지 사이즈를 16킬로바이트로서 시뮬레이션한 결과이다.
도 7에 도시하는 바와 같이, 종래 기술은, 시간의 경과와 함께 처리 능력이 저하된다. 이것은, 시간의 경과와 함께 메모리 빈 용량이 저감하면, 그에 수반하여 가비지 컬렉션의 빈도가 증가하고, 가비지 컬렉션 시에 발생하는 타깃 블록 내의 유효 페이지의 카피가 빈번히 실행되기 때문이라고 생각된다. 이에 대해, 본 실시 형태에 관한 데이터 기억 시스템(100)은, 가비지 컬렉션 시에 타깃 블록 내의 유효 페이지의 카피를 실행하지 않으므로, 시간의 경과와 함께 메모리 빈 용량이 저감해도 처리 속도는 거의 변함없다.
이와 같이, 본 실시 형태에 따르면, 제어부(120)가 메모리 제어부(112)로부터 타깃 블록 내의 유효 페이지의 논리 페이지 어드레스의 정보를 수취하고, 그 논리 페이지 어드레스에 대해 데이터를 기입하도록 지시함으로써, 타깃 블록 내의 유효 페이지를 무효 페이지로 할 수 있다. 그 결과, 가비지 컬렉션 시에는, 타깃 블록 내의 유효 페이지가 없어지게 되므로, 타깃 블록 내의 유효 페이지를 카피하는 처리가 불필요하게 되어, 처리 능력, 소비 전력 및 재기입 횟수의 어느 것에 대해서도, 종래 기술로부터 개선시킬 수 있다.
또한, 제어부(120)가, 메모리 제어부(112)로부터 수취한 논리 페이지 어드레스에, 분산시켜 데이터를 기입하도록 지시함으로써, 타깃 블록 내의 유효 페이지에 빈 스페이스가 없어져 기입 대상으로서 지정할 수 없게 되는 상황을 저감할 수 있다.
또한, 제어부(120)가, 갱신 처리를, 소거와 삽입을 조합한 처리로서 실행함으로써, 갱신 처리에 있어서도 삽입 처리와 마찬가지로, 타깃 블록 내의 유효 페이지를 무효 페이지로 할 수 있다.
또한, 메모리 제어부(112)가, 메모리(114)의 빈 용량이 소정의 임계값보다 작아지면 가비지 컬렉션을 개시함으로써, 메모리(114)의 빈 용량이 소정의 값보다 감소하는 것을 억제할 수 있다.
본 발명을 여러 도면이나 실시예에 기초하여 설명해 왔지만, 당업자이면 본 개시에 기초하여 다양한 변형이나 수정을 행하는 것이 용이하다는 것에 주의하기 바란다. 따라서, 이들 변형이나 수정은 본 발명의 범위에 포함되는 것에 유의하기 바란다.
예를 들어, 상기 실시 형태는, 메모리로서 NAND 플래시 메모리를 사용하는 경우를 예로 들어 설명했지만, 본 발명은 이에 한정되는 것은 아니며, 마찬가지의 특성을 갖는 메모리이면, 본 발명을 적용 가능하다.
100 : 데이터 기억 시스템
110 : 메모리 유닛
112 : 메모리 제어부
114 : 메모리
120 : 제어부

Claims (6)

  1. 페이지 단위로 데이터가 기입되는 메모리와, 상기 메모리에의 데이터의 기입을 제어하는 메모리 제어부를 구비하는 메모리 유닛과,
    상기 메모리 제어부에, 데이터를 기입하는 논리 페이지 어드레스를 지시하는 제어부를 구비하고,
    상기 메모리 제어부는,
    다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 블록인 타깃 블록을 결정하고,
    상기 타깃 블록 내의 유효 페이지의 물리 페이지 어드레스에 대응하는 논리 페이지 어드레스의 정보를 상기 제어부에 제공하고,
    상기 제어부는, 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 데이터를 기입하도록 상기 메모리 제어부에 지시하고, 이에 의해 상기 타깃 블록 내의 유효 페이지를 무효 페이지로 하는 것을 특징으로 하는 데이터 기억 시스템.
  2. 제1항에 있어서,
    상기 제어부는, 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 분산시켜 데이터를 기입하도록 상기 메모리 제어부에 지시하는 것을 특징으로 하는 데이터 기억 시스템.
  3. 제1항에 있어서,
    상기 제어부는, 상기 메모리 내에 기억되어 있는 데이터를 갱신할 때에, 갱신 전의 데이터를 소거하고, 새롭게 갱신하는 데이터를 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 기입하도록 상기 메모리 제어부에 지시하는 것을 특징으로 하는 데이터 기억 시스템.
  4. 제2항에 있어서,
    상기 제어부는, 상기 메모리 내에 기억되어 있는 데이터를 갱신할 때에, 갱신 전의 데이터를 소거하고, 새롭게 갱신하는 데이터를 상기 메모리 제어부로부터 수취한 상기 논리 페이지 어드레스에 기입하도록 상기 메모리 제어부에 지시하는 것을 특징으로 하는 데이터 기억 시스템.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 메모리 제어부는, 상기 메모리의 빈 용량이 소정의 임계값보다 작아지면, 가비지 컬렉션을 개시하는 것을 특징으로 하는 데이터 기억 시스템.
  6. 페이지 단위로 데이터가 기입되는 메모리를 구비하는 데이터 기억 시스템의 제어 방법으로서,
    다음에 실행하는 가비지 컬렉션 시에 소거 대상으로 하는 블록인 타깃 블록을 결정하는 결정 스텝과,
    상기 타깃 블록 내의 유효 페이지의 물리 페이지 어드레스를 대응하는 논리 페이지 어드레스로 변환하는 변환 스텝과,
    변환된 상기 논리 페이지 어드레스에 데이터를 기입하고, 이에 의해 상기 타깃 블록 내의 유효 페이지를 무효 페이지로 하는 기입 스텝을 포함하는 것을 특징으로 하는 제어 방법.
KR1020157032750A 2013-05-17 2014-05-08 데이터 기억 시스템 및 그 제어 방법 KR101839664B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013105094A JP6008325B2 (ja) 2013-05-17 2013-05-17 データ記憶システムおよびその制御方法
JPJP-P-2013-105094 2013-05-17
PCT/JP2014/002450 WO2014185037A1 (ja) 2013-05-17 2014-05-08 データ記憶システムおよびその制御方法

Publications (2)

Publication Number Publication Date
KR20150145242A KR20150145242A (ko) 2015-12-29
KR101839664B1 true KR101839664B1 (ko) 2018-03-16

Family

ID=51898029

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157032750A KR101839664B1 (ko) 2013-05-17 2014-05-08 데이터 기억 시스템 및 그 제어 방법

Country Status (4)

Country Link
US (1) US20160147652A1 (ko)
JP (1) JP6008325B2 (ko)
KR (1) KR101839664B1 (ko)
WO (1) WO2014185037A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6482322B2 (ja) * 2014-12-29 2019-03-13 東芝メモリ株式会社 メモリ装置及びプログラム
KR20170015760A (ko) * 2015-07-31 2017-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6529941B2 (ja) 2016-08-30 2019-06-12 東芝メモリ株式会社 メモリシステム
JP6697410B2 (ja) * 2017-03-21 2020-05-20 キオクシア株式会社 メモリシステムおよび制御方法
US10621084B2 (en) 2018-03-05 2020-04-14 International Business Machines Corporation Efficient garbage collection in the presence of block dependencies
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들
US10824556B2 (en) 2018-11-05 2020-11-03 International Business Machines Corporation Adaptive garbage collection (GC) utilization for grid storage systems
JP6751177B2 (ja) * 2019-05-09 2020-09-02 キオクシア株式会社 メモリシステムの制御方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050166102A1 (en) * 2004-01-13 2005-07-28 Micron Technologies, Inc. CAM expected address search testmode
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
US20120303868A1 (en) * 2010-02-10 2012-11-29 Tucek Joseph A Identifying a location containing invalid data in a storage media

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820179B2 (en) * 2000-12-04 2004-11-16 Hitachi Hokkai Semiconductor, Ltd. Semiconductor device and data processing system
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US8069269B2 (en) * 2004-08-04 2011-11-29 Emc Corporation Methods and apparatus for accessing content in a virtual pool on a content addressable storage system
JP2007193883A (ja) * 2006-01-18 2007-08-02 Sony Corp データ記録装置及び方法、及びデータ再生装置及び方法、並びにデータ記録再生装置及び方法
US7366028B2 (en) * 2006-04-24 2008-04-29 Sandisk Corporation Method of high-performance flash memory data transfer
US7577803B2 (en) * 2007-02-16 2009-08-18 Seagate Technology Llc Near instantaneous backup and restore of disc partitions
KR100929371B1 (ko) * 2009-03-18 2009-12-02 한국과학기술원 페이지-디퍼런셜을 이용하여 dbms에 독립적인 방법으로 플래시 메모리에 데이터를 저장하는 방법
JP2012008651A (ja) * 2010-06-22 2012-01-12 Toshiba Corp 半導体記憶装置、その制御方法および情報処理装置
JP2012208543A (ja) * 2011-03-29 2012-10-25 Sony Corp 制御装置、記憶装置、読出制御方法
US8984032B2 (en) * 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
US9135161B2 (en) * 2012-06-12 2015-09-15 International Business Machines Corporation Flash translation layer system for maintaining data versions in solid state memory
WO2014039923A1 (en) * 2012-09-06 2014-03-13 Pi-Coral, Inc. Storage translation layer
US8938597B2 (en) * 2012-10-23 2015-01-20 Seagate Technology Llc Restoring virtualized GCU state information
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US20150339058A1 (en) * 2013-03-26 2015-11-26 Hitachi, Ltd. Storage system and control method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050166102A1 (en) * 2004-01-13 2005-07-28 Micron Technologies, Inc. CAM expected address search testmode
JP2011159044A (ja) * 2010-01-29 2011-08-18 Toshiba Corp 不揮発性メモリのコントローラ及び不揮発性メモリの制御方法
US20120303868A1 (en) * 2010-02-10 2012-11-29 Tucek Joseph A Identifying a location containing invalid data in a storage media

Also Published As

Publication number Publication date
JP6008325B2 (ja) 2016-10-19
KR20150145242A (ko) 2015-12-29
US20160147652A1 (en) 2016-05-26
WO2014185037A1 (ja) 2014-11-20
JP2014225197A (ja) 2014-12-04

Similar Documents

Publication Publication Date Title
KR101839664B1 (ko) 데이터 기억 시스템 및 그 제어 방법
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
JP5295286B2 (ja) 記憶装置およびそれを搭載した計算機
CN105701021B (zh) 数据储存装置及其数据写入方法
US9678676B2 (en) Method for storage devices to achieve low write amplification with low over provision
US9690695B2 (en) Data storage device and flash memory control method thereof
US9600408B2 (en) Data storage device and method for flash block management
US7844772B2 (en) Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
KR101270281B1 (ko) 메모리 관리 장치, 정보 처리 장치 및 메모리 관리 방법
US11573717B2 (en) Storage device having a controller configured to select modes as write modes based on received instructions, storage system, and control method
CN104423894B (zh) 数据储存装置以及快闪存储器控制方法
US20170139826A1 (en) Memory system, memory control device, and memory control method
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
EP1909184A2 (en) Mapping information managing apparatus and method for non-volatile memory supporting different cell types
US8510502B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
CN106802867B (zh) 固态储存装置及其数据编程方法
US10168940B2 (en) Data storage using SLC and TLC memory banks and data maintenance method thereof
KR20080085574A (ko) 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
JP2005242897A (ja) フラッシュディスク装置
US10073771B2 (en) Data storage method and system thereof
EP3196767B1 (en) Method for writing data into flash memory device, flash memory device and storage system
JP5570406B2 (ja) メモリコントローラ、及びデータ記録装置
JP2016024678A (ja) メモリシステム
JP2009205689A (ja) フラッシュディスク装置
KR20100063495A (ko) 플래시 메모리를 포함하는 반도체 장치 및 이의 어드레스 사상 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant