KR101097438B1 - 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법 - Google Patents

웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법 Download PDF

Info

Publication number
KR101097438B1
KR101097438B1 KR1020090103578A KR20090103578A KR101097438B1 KR 101097438 B1 KR101097438 B1 KR 101097438B1 KR 1020090103578 A KR1020090103578 A KR 1020090103578A KR 20090103578 A KR20090103578 A KR 20090103578A KR 101097438 B1 KR101097438 B1 KR 101097438B1
Authority
KR
South Korea
Prior art keywords
target block
block
memory controller
deletions
memory
Prior art date
Application number
KR1020090103578A
Other languages
English (en)
Other versions
KR20110046880A (ko
Inventor
김의진
김경로
김영호
곽정순
Original Assignee
주식회사 하이닉스반도체
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 하이닉스반도체 filed Critical 주식회사 하이닉스반도체
Priority to KR1020090103578A priority Critical patent/KR101097438B1/ko
Priority to US12/648,369 priority patent/US8335887B2/en
Publication of KR20110046880A publication Critical patent/KR20110046880A/ko
Application granted granted Critical
Publication of KR101097438B1 publication Critical patent/KR101097438B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • 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

Landscapes

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

Abstract

반도체 스토리지 시스템이 개시된다. 개시된 반도체 스토리지 시스템은, 맵핑 정보 및 삭제 횟수가 저장된 복수의 맵핑 페이지를 순차적으로 로딩하는 버퍼부 및 웨어된 블록의 교체 대상이 될 타겟 블록을 찾도록 상기 타겟 블록의 삭제 횟수 기준 및 상기 타겟 블록의 검색 대상인 상기 맵핑 페이지의 수를 설정하여 맵핑 페이지들을 샘플링하여 웨어 레벨링을 수행하는 메모리 컨트롤러를 포함한다.
Figure R1020090103578
플래시 메모리, 웨어 레벨링, 검색, 맵핑

Description

웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법{Solid State Storage System For Controlling of Wear-Leveling Flexibly and Method of Controlling the Same}
본 발명은 반도체 스토리지 시스템 및 그 제어 방법에 관한 것으로서, 보다 구체적으로는 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법에 관한 것이다.
일반적으로 비휘발성 메모리를 많은 휴대용 정보 기기의 저장용 메모리로 사용하고 있다. 더 나아가, 최근에는 PC(Personal Computer)에서 HDD(Hard Disk Drive)를 대신하여 낸드(NAND) 플래시 메모리를 사용한 SSD(Solid State Drive)가 출시되고 있어 급속도로 HDD 시장을 잠식할 것으로 전망되고 있다.
통상적으로 이러한 SSD와 같은 반도체 스토리지 시스템에서 데이터 파일을 제어하는 것은, 데이터 파일을 식별할 수 있는 논리적 어드레스(logical address)가 지정하는 페이지에 실제 데이터를 라이트, 삭제 및 갱신하는 것으로 이루어진다. 보다 구체적으로, 논리적 어드레스와 데이터 저장 영역의 물리적 어드레스(physical address)를 FTL(Flash Translation Layer)변환으로 맵핑시킨다. 이후, 호스트(미도시)의 명령에 따라 논리적 어드레스를 참조하면, 논리적 어드레스와 맵핑된 물리적 어드레스가 지정하는 해당 위치에 데이터를 라이트, 삭제 및 리드할 수 있다. 물리적 어드레스란, 메모리 영역의 페이지, 또는 서브 블록의 위치 정보이다.
낸드 플래시 메모리 셀의 데이터를 갱신시, 비휘발성 메모리이므로 해당 셀의 데이터를 일단 소거하고 다시 새로운 데이터를 프로그램해야 한다. 하지만, 데이터 프로그램시에 모든 메모리 셀에 데이터를 고르게 프로그램하는 것이 아니라 특정 셀 영역에 보다 집중적으로 프로그램이 빈번히 이루어질 수 있다. 다시 말하면, 데이터에 따라 특정 셀 영역, 또는 일부의 셀들은 빈번한 프로그램 및 소거 과정으로 인해 셀의 수명이 다해 낡아 없어질(wear out) 수 있다. 그러나, 아직 낡지 않은 생생한(fresh) 상태의 셀들이 존재한다 하여도, 반도체 스토리지 시스템 전체의 성능은 일부의 ‘낡은’셀에 의해 제한될 수 있다.
이로써, 각각의 메모리 셀이 낡아 없어지기(wear out) 전에, 각 메모리 구역(zone), 또는 플레인(plane)내에서 저장 셀의 물리적 위치를 변경해주어 셀의 균등한 사용을 제어하도록 웨어 레벨링(wear leveling)을 수행한다.
이러한 웨어 레벨링을 하기 위해서는 모든 블록의 삭제 횟수 정보를 낸드 플래시 메모리 영역에 저장하고 있다가, 웨어 레벨링 수행이 필요한 때에 이들 정보를 램(RAM) 버퍼에 로딩하여 교체 가능한 블록을 검색(searching)하여 물리적 위치를 변경해주었다.
그러나, 최근의 대용량의 SSD 추세로 메모리 영역의 블록수가 증가함에 따라 이들 전체 블록의 삭제 횟수를 로딩해야 하는 램 버퍼의 메모리 증가도 불가피해졌다. 그러나, 비용 및 칩 면적에 의해 램 버퍼의 메모리 증가는 제한이 될 수 밖에 없다.
본 발명의 기술적 과제는 웨어 레벨링을 제어하는 반도체 스토리지 시스템을 제공하는 것이다.
본 발명의 다른 기술적 과제는 웨어 레벨링을 제어하는 반도체 스토리지 시스템의 제어 방법을 제공하는 것이다.
본 발명의 기술적 과제를 달성하기 위하여, 본 발명의 일 실시예에 따른 반도체 스토리지 시스템은, 맵핑 정보 및 삭제 횟수가 저장된 복수의 맵핑 페이지를 순차적으로 로딩하는 버퍼부 및 웨어된 블록의 교체 대상이 될 타겟 블록을 찾도록 상기 타겟 블록의 삭제 횟수 기준 및 상기 타겟 블록의 검색 대상인 상기 맵핑 페이지의 수를 설정하여 맵핑 페이지들을 샘플링하여 웨어 레벨링을 수행하는 메모리 컨트롤러를 포함한다.
본 발명의 기술적 과제를 달성하기 위하여, 본 발명의 다른 실시예에 따른 반도체 스토리지 시스템은, 웨어 레벨링 시, 상기 메모리 블록 중 웨어된 블록의 교체 대상이 될 블록에 대한 삭제 횟수의 기준 및 상기 웨어된 블록의 정보를 이용하여 상기 교체 대상이 될 블록에 대한 검색 대상 수의 기준을 설정함으로써, 타겟 블록으로서의 상기 교체 대상이 될 최초의 블록을 찾아서 상기 웨어된 블록과 교체시키는 메모리 컨트롤러를 포함한다.
본 발명의 다른 기술적 과제를 달성하기 위하여, 반도체 스토리지 시스템의 제어 방법은, 웨어 레벨링 시, 웨어된 블록에 대응되어 교체될 타겟 블록의 삭제 횟수를 결정하는 제 1 기준 설정하는 단계, 상기 웨어된 블록의 삭제 횟수에 따라 상기 타겟 블록 검색의 제 2 기준 설정하는 단계, 상기 제 1 및 제 2 기준에 의해 상기 타겟 블록을 찾는 단계 및 상기 타겟 블록을 찾지 못했다면, 상기 제 1 기준을 가변시켜 갱신함으로써, 차기(次期)의 상기 타겟 블록 검색 조건에 영향을 주는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 메모리 영역의 사이즈가 증가되어도 맵핑 정보 및 삭제 횟수에 대한 임시 저장을 위한 버퍼부의 크기를 추가하지 않아도 되고, 오히려 종래보다 작은 사이즈로 유지하는 것이 가능하다. 웨어된 블록에 대해서만 맵핑 정보와 삭제 횟수를 로딩하고, 삭제 횟수의 기준에 대한 조건 및 검색 횟수의 기준에 대한 조건을 각각 설정함으로써 웨어 레벨링의 수행 시간을 단축시킬 수 있다. 따라서, 버퍼부의 크기를 감소시키면서도 웨어 레벨링의 수행 시간을 단축시키므로, 반도체 스토리지 시스템의 동작 성능 및 비용 효율을 향상시킬 수 있다.
이하에서는 본 발명의 일 실시예에 따른 반도체 스토리지 시스템에 대하여 첨부된 도면을 참조하여 설명하도록 한다.
먼저, 도 1 및 도 2를 참조하여, 본 발명의 실시예에 따른 반도체 스토리지 시스템에 대해서 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 스토리지 시스템(100)의 블록도 이다. 도 2는 논리적 물리적 어드레스의 맵핑 테이블 및 버퍼부(120)의 관계를 개념적으로 도시한 블록도이다. 여기서, 반도체 스토리지 시스템(100)은 낸드 플래시 메모리를 이용한 스토리지 시스템으로 예시한다.
도 1및 도 2를 참조하면, 반도체 스토리지 시스템(100)은 호스트 인터페이스(110), 버퍼부(120), MCU(130), 메모리 컨트롤러(140) 및 메모리 영역(150)을 포함한다.
우선, 호스트 인터페이스(110)는 버퍼부(120)와 연결된다. 호스트 인터페이스(110)는 외부 호스트 (미도시)와 버퍼부(120)간에 제어 명령, 어드레스 신호 및 데이터 신호를 송수신한다. 호스트 인터페이스(110)와 외부 호스트 (미도시)간의 인터페이스 방식은 직렬 ATA(Serial Advanced Technology Attachment;SATA), 병렬 ATA(Parallel Advanced Technology attachment;PATA) 및 SCSI, Express Card, PCI-Express 방식 중 어느 하나일 수 있으며 제한되지 않는다.
버퍼부(120)는 호스트 인터페이스(110)로부터의 출력 신호들을 버퍼링하거나, 논리적 어드레스 및 물리적 어드레스간의 맵핑 정보 및 메모리 영역의 블록 할당 정보, 블록의 삭제 횟수 및 외부로부터 수신된 데이터를 임시 저장한다. 버퍼부(120)는 SRAM(Static Random Access Memory) 또는 DRAM(Dynamic Random Access Memory)을 이용한 버퍼일 수 있다. 도 2에 도시된 바와 같이, (a) 섹터 측면(view)에서 보면, 논리적인 블록의1000번째 섹터는 메모리 영역(150)의 NAND 측면에서 보면, 실질적인 물리적 블록의 200번째 블록의 30번째 페이지를 나타내고, 버퍼부(120)에는 실질적으로 억세스되는 블록(200번째 블록)의 맵핑 정보 및 삭제 횟수 를 저장하게 된다. 이는 어디까지나 예시일 뿐, 이에 제한되는 것은 아니다. 블록이 삭제될 때마다, 이러한 웨어된 블록(worn block) 또는 마모된 블록의 맵핑 정보 및 삭제 횟수가 로딩된다는 것을 개념적으로 설명하기 위함이다.
특히, 본 발명의 일 실시예에 따른 버퍼부(120)는 종래의 모든 블록의 삭제 횟수를 로딩하는 것이 아니라, 이와 같이 웨어된 블록만 로딩하므로 버퍼부(120)의 사이즈가 작아도 되므로 비용 및 면적 효율을 증대시킨다.
MCU(Micro Control Unit; 130)는 호스트 인터페이스(110)간에 제어 명령, 어드레스 신호 및 데이터 신호등을 송수신하거나, 이러한 신호들에 의해 메모리 컨트롤러(140)를 제어하기도 한다.
메모리 컨트롤러(140)는 메모리 영역(150)의 복수개의 낸드 플래시 메모리 소자 중 소정 낸드 플래시 메모리 소자(ND)를 선택하고, 라이트, 삭제 또는 리드 명령을 제공한다. 특히, 본 발명의 일 실시 예에 따른 메모리 컨트롤러(140)는 웨어 레벨링을 유동적으로 제어할 수 있다. 즉, 메모리 컨트롤러(140)는 두 가지 기준을 이용해서 웨어 레벨링시 필요한 타겟 블록의 검색 조건 및 검색 횟수 등을 제어하여, 효율적으로 메모리 수명의 균등 사용을 관리할 수 있다.
종래에는 모든 블록에 대한 삭제 횟수 정보를 메모리 영역(150)의 소정의 영역에 큰 단위(lump)로 저장하였다. 그리하여, 웨어 레벨링 시점이 되면, 모든 블록의 삭제 횟수 정보를 버퍼부(120)에 로딩하여, 삭제 횟수가 높은 블록을 대신할 블록으로서 삭제 횟수가 최저인 블록을 선택하여 물리적 위치를 변경을 시도했다. 이 때, 버퍼부(120)는 모든 블록의 삭제 횟수를 로딩해야 하므로 메모리 사이즈가 커 야 했다.
그러나, 본 발명의 일 실시예에 따르면, 웨어 레벨링 시점에 메모리 컨트롤러(140)는 모든 블록의 삭제 횟수 정보를 버퍼부(120)로 로딩하는 것이 아니라, 검색 조건에 맞도록 설정된 수개 내의 블록들을 샘플링(sampling)하여 웨어 레벨링을 수행한다. 또한, 본 발명의 일 실시예에 따른 메모리 컨트롤러(140)는 블록의 삭제가 행해질 때마다 삭제 횟수를 가산한다. 그리하여, 블록의 삭제 횟수가 소정 설정치보다 크면 웨어 레벨링을 수행하게 되는데, 이 때 누적 실패 횟수를 블록 검색의 조건 기준으로 이용하고, 웨어된 블록의 삭제 횟수 수치와 평균 삭제 횟수와의 차이(difference)를 검색 횟수의 기준으로 이용하여, 검색 시간 및 검색 조건이 유동적으로 가변되도록 제어할 수 있다. 다시 말하면, 본 발명의 일 실시예에 따르면, 웨어 레벨링의 정보를 최소한으로 이용하면서도, 검색 기준을 이중으로 설정하여 검색 시간을 단축시키고 교체 대상 블록의 검색 확률을 증가시킬 수 있다. 이에 대한 상세한 설명은 후술하기로 한다.
메모리 영역(150)은 메모리 컨트롤러(140)에 의해 제어되어 데이터의 라이트, 삭제 및 리드 동작이 수행된다. 여기서, 메모리 영역(150)은 낸드(NAND) 플래시 메모리일 수 있다. 본 발명의 일 실시 예에서는 낸드(NAND) 플래시 메모리의 셀은 SLC(Single Level Cell) 또는 MLC(Multi Level Cell) 일 수 있다. 이러한 메모리 영역(150)은 다수의 페이지를 포함하는 다수의 블록으로 구성된 칩이 복수개 구비될 수 있다. 한편, 메모리 영역(150)내에는 전술한 맵핑 정보 및 삭제 횟수 정보를 저장하고 있다. 이를 여기서는 ‘맵핑 페이지’라고 별도로 정의하여 지칭하기 로 한다. 즉, 맵핑 페이지의 물리적인 정의는 낸드 플래시 메모리의 처리 단위 또는 저장 단위가 되는 페이지를 의미하며, 이러한 맵핑 페이지는 하나의 블록 정보에 대한 논리적 물리적 어드레스간의 맵핑 정보와 함께 삭제 횟수를 함께 저장하는 것으로 정의한다. 의미상 혼돈을 피하기 위하여 맵핑 페이지 대신 맵핑 저장 영역이라고 명명해도 무방하다.
도 3은 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 순서도이다. 여기서는 삭제시마다 웨어 레벨링의 여부를 결정하는 것으로 예시하기로 하나, 이는 어디까지나 예시일 뿐, 매번의 삭제시마다 웨어 레벨링의 수행 여부를 판단하지 않을 수도 있음은 물론이다.
도 1 내지 도 3을 참조하면, 우선, 임의의 블록의 데이터를 삭제한다.
블록의 데이터를 삭제할 때마다, 삭제 횟수를 가산하여 체크한다(S10).
체크된 삭제 횟수가 소정치보다 큰지(bigger) 여부를 판단한다(S20).
여기서, 소정치는 다음과 같은 식에 의해 산출될 수 있다.
소정치 = (삭제 횟수의 평균값 + 오차범위)
예를 들어, 삭제 횟수의 평균값은 100이라 하고, 오차 범위를 40이라 하면, 소정치는 140이 될 것이다.
상기의 예시된 수는 어디까지나 이해를 돕기 위한 수치적 예시일 뿐, 이에 한정되는 것은 아니다.
그리하여, 웨어된 블록의 합산된 삭제 횟수가 예컨대 140보다 크다면(Y), 메모리 컨트롤러(140)가 웨어 레벨링 수행 시작을 제어한다. 일단, 누적 실패 횟수(accumulated fail count)를 이용해 타겟 블록 검색의 제 1 기준을 설정한다(S30).
누적 실패 횟수란, 웨어된 블록의 교체 대상이 될 타겟 블록(target block)을 찾는데 성공 여부를 나타내는 일종의 플래그 신호이다.
누적 실패 횟수의 초기치는 0으로 설정하고, 이하의 일련 과정을 통해 교체 대상의 블록, 즉 타겟 블록(target block)을 찾지 못하면 누적 실패 횟수가 증가될 것이다. 이는 누적 실패 횟수가 증가할 때마다, 타겟 블록의 삭제 횟수 기준을 완화시키기 위함이다. 다시 말해, 누적 실패 횟수가 증가하면, 교체 대상이 되는 블록의 검색 기준을 보다 완화시키도록 한다. 구체적으로, 초기에는 삭제 횟수가 낮은 블록의 기준을 삭제 횟수의 평균값에서 오차 범위를 감한 값으로 설정한다. 예컨대, 삭제 횟수의 평균값은 100이라 하고, 오차 범위를 40이라 하면, 최초에 설정된 삭제 횟수가 낮은 블록의 기준은 60일 것이다. 하지만, 검색에 실패했다면, 삭제 횟수가 낮은 블록의 기준인 60은 높은 기준이었다고 판단하여, 이보다는 높은 삭제 횟수를 갖는 블록들도 교체 대상의 블록으로 설정하도록 한다. 그리하여, 누적 실패 횟수가 증가할 때마다 예컨대 삭제 횟수 기준을 예컨대 5씩 증가시켜, 삭제 횟수가 낮은 블록의 기준을 45, 50, 55...으로 그 삭제 횟수의 기준을 점차 완화시켜 줄 수 있다. 하지만, 이러한 누적 실패 횟수가 무한정 누적되는 것을 방지 하고, 최소한의 평균 삭제 횟수 이하를 갖는 블록이 타겟 블록으로 선택되도록 누적 실패 허용 횟수도 함께 설정하는 것이 바람직하다. 결론적으로, 여기서 타겟 블록의 검색 제 1 조건이란 타겟 블록의 선택 기준이 되는 교체 대상 블록들의 삭제 횟수이다.
이에 대해서는 이후 나오는 도 4를 참조하여 자세히 설명하기로 한다.
한편, 타겟 블록의 검색 횟수를 타겟 블록 검색의 제 2 기준으로 설정한다(S40).
타겟 블록의 검색 횟수에 대한 조건이라 함은, 메모리 영역의 저장된 맵핑 페이지에 대한 억세스 횟수를 의미한다. 1회 억세스시마다, 메모리 영역의 1개 맵핑 페이지에 저장된 블록을 검색하도록 할 수 있다. 따라서, 1회내에 타겟 블록을 찾지 못한다면, 다른 맵핑 페이지를 억세스하여 타겟 블록이 될 수 있는지 검색한다. 이에 따라, 억세스 횟수가 증가할 때마다 타겟 블록의 검색 대상이 증가된다. 이러한 억세스 횟수는 임의로 설정하거나 획일적으로 설정하는 것이 아니라, 웨어된 블록의 삭제 횟수에 따라 유동적으로 가변시키도록 한다. 즉, 웨어된 블록의 삭제 횟수가, 예컨대 평균 삭제 횟수와 오차 범위를 합한 값보다 높은 정도에 따라, 다시 말해, 웨어된 블록의 교체 시점이 시급한 블록의 경우일수록, 맵핑 페이지의 억세스 횟수를 증가시키도록 유동적으로 제어한다. 이를 위해서는 웨어된 블록의 삭제 횟수가 평균 삭제 횟수와 차이가 얼마나 나는지 아는 것이 중요하다. 또한, 이러한 억세스 횟수는 적용되는 시스템의 중요도에 따라 웨어 레벨링의 수행 감도(sensibility)를 다르게 적용하는 것도 가능하다.
당업자라면, 적용되는 반도체 스토리지 시스템의 구성에 따라, 또는 각각의 적용되는 용도에 따라 웨어 레벨링의 수행 감도가 다를 것이라는 것을 이해하기는 어렵지 않을 것이다. 다만, 이후의 도 5에서 예시적으로 감도와 블록의 삭제 횟수를 도시하고, 그에 대한 자세한 설명은 후술하기로 한다.
이와 같이, 억세스 횟수가 설정된 제 2 검색 조건을 만족하는지 판단한다(S50).
즉, 산출식에 따른 억세스 횟수의 소정치에 도달하지 않았으면(N), 타겟 블록을 찾을 때까지 반복 루프를 수행한다(S60). 만약, 억세스 횟수가 소정치에 도달하였다면(Y), 억세스 횟수 임계치내에 타겟 블록을 찾은 상황인지 판단한다(S70).
또는, 반복 루프를 수행하는 도중에 설정된 삭제 횟수 이하를 만족하는 타겟 블록을 찾았다면(Y), 누적 실패 횟수를 감소시켜 갱신한다(S80). 이는 검색이 설정된 제 1 및 제 2 조건을 만족한 상황이므로, 누적된 실패 횟수를 소정 감소시켜 누적 실패 횟수로부터 누적 실패 허용치와의 마진을 확보하도록 하는 것이다.
억세스 횟수 임계치내에 타겟 블록을 찾지 못한 상황이라면(N), 검색 조건을 보다 완화시켜야 하므로 누적 실패 횟수를 증가시켜 갱신한다(S90). 즉 이러한 상황은, 현재 설정된 제 1 및 제 2 검색 조건에도 불구하고 교체 대상이 될 만한 타겟 블록을 찾지 못한 경우이다. 이러한 경우에는 다음번의 검색 조건에 영향을 주도록, 누적 실패 횟수를 증가시켜 갱신시킨 후, 차기(次期)의 블록 삭제시 웨어 레벨링의 검색 성공률을 높이도록 한다.
이와 같이, 본 발명의 일 실시예에 따르면, 블록들의 각각 분산된 삭제 횟수 정보들을 효율적으로 검색하기 위해, 삭제 횟수의 기준에 대한 조건 및 검색 횟수의 기준에 대한 조건을 각각 설정하는 것을 알 수 있다. 종래와는 달리, 웨어된 블록의 교체 시기가 오면, 최저값의 삭제 횟수를 갖는 블록을 찾는 대신, 최초로 찾은 교체 대상이 될 만한 블록을 희생시켜 웨어된 블록의 웨어 레벨링을 수행하도록 하는 것이다. 여기서 최초로 찾은 블록이라는 것은, 웨어 레벨링 수행시 소정의 검색 횟수내에 찾아 낸(또는 다음번의 웨어 레벨링 수행시 찾아 낸) 블록이 교체 대상이 될 삭제 횟수의 조건을 최초로 만족시켰다는 의미를 내포한다. 이로써, 전체 블록을 대상으로 웨어 레벨링을 수행하는 것보다는 웨어 레벨링의 수행 시간을 단축시킬 수 있다.
도 4는 본 발명의 일 실시예에 따른 타겟 블록의 삭제 횟수 및 누적 실패 횟수의 상관 관계를 나타낸 그래프이다.
도 4를 참조하면, X 축은 누적 실패 횟수를 나타내고, Y축은 교체 대상이 될 타겟 블록의 삭제 횟수를 나타내고 있다.
여기서, 평균 삭제 횟수를 100, 오차 범위를 40 및 누적 실패 허용 횟수의 임계값은 5이하로 설정하는 것으로 예시한다.
이러한 그래프의 ⓐ는 수학식 2에 의해 구현될 수 있다.
타겟 블록의 검색 제 1 조건= (평균 삭제 횟수- 오차 범위)+ 오차 범위/(최대 누적 실패 횟수 허용치- 누적 실패 횟수)
하지만, 이와 같은 수식은, 누적 실패 허용 횟수가 임계치인 5 이하일 때에 적용할 수 있다. 만약, 누적 실패 허용 횟수가 임계값을 넘는다면, 도 4에 도시된 ⓑ와 같이 기울기가 완만한 직선으로 구현되는 타겟 블록의 제 1 조건을 설정할 수 있다.
타겟 블록의 제 1 조건= (평균 삭제 횟수 + 임계 오차의 상한치) - 누적 실패 횟수
즉, 도 4가 나타내고자 하는 것은, 누적 실패 허용치의 임계치인 5이하의 구간에서 보다 적극적으로 타겟 블록을 검색하는 것이 의미가 있고, 누적 실패 허용치가 임계치를 초과시에는, 타겟 블록의 삭제 횟수가 삭제 평균 횟수와 임계치를 합한 값을 이미 초과하게 되는 상황이 초래되므로 타겟 블록의 검색 조건을 낮추는 것에 의미가 크지 않음을 암시하고 있다.
따라서, 본 발명의 일 실시예에서는, 누적 실패 허용치의 임계치를 5로 설정하고, 그 임계치를 초과하는 상황을 허용하지 않도록 관리한다.
도 5는 본 발명의 일 실시예에 따른 감도 및 블록의 삭제 횟수의 상관 관계를 나타낸 표이다.
도 5를 참조하면, 웨어된 블록의 삭제 횟수를 기준으로 보면, 삭제 횟수가 증가될수록 감도에 따른 소정의 검색 수치가 커지도록 설정된 것을 알 수 있다. 또한, 감도를 기준으로 보면, 감도의 세기가 커질수록, 웨어된 블록의 동일 삭제 횟 수에 대한 소정의 검색 수치가 커지는 것을 알 수 있다.
타겟 블록의 검색 제 2 조건= (기본 맵핑 페이지 억세스 회수-1)+(웨어된 블록의 삭제 횟수-(평균 삭제 횟수 + 임계값))*감도
여기서, 기본 맵핑 페이지 억세스 횟수는 7로 설정하고, 평균 삭제 횟수는 100, 임계값은 40으로 설정하기로 한다.
따라서, 평균 삭제 횟수와 임계값을 합한 값보다 웨어된 블록의 삭제 횟수가 높을 수록 웨어된 블록에 대응되는 타겟 블록의 검색은 강화되어야 한다. 따라서, 맵핑 억세스 횟수가 증가되도록 수학식 4와 같은 산출식으로 타겟 블록의 검색의 제 2 조건을 설정할 수 있다.
한편, 고성능의 시스템일수록 감도가 높은 것을 요구하기 때문에, 수학식 4를 감도의 함수로 구현할 수 있다.
도 6은 도 5에 따라 감도 대비 억세스 횟수의 상관 관계를 나타낸 그래프이다.
도 6을 참조하면, X축은 웨어된 블록의 삭제 횟수를 나타내고, Y축은 억세스 횟수를 나타낸다.
전술한 바와 같이, 억세스 횟수는 수학식 4에 의해 산출되며, 이 때 도5의 감도를 적용하면, 감도의 세기에 따라 그래프의 기울기가 급격해지는 것을 알 수 있다. 즉, 도 6의 ① 내지 ⑤ 는 도 5에서 설명한 감도의 세기 1 내지 5에 대응되고, 감도의 세기에 따라 삭제 횟수 대비 억세스 횟수가 달라지는 것을 나타낸 것이다.
예컨대, 삭제 횟수의 150인 조건을 기준으로 보면, 감도의 세기에 따라 억세스 횟수가 18 에서부터 58까지 분포를 갖는 것을 알 수 있다. 고감도의 시스템일수록, 억세스 횟수를 높이더라도 타겟 블록의 검색을 강화하는 것이다.
이와 같이, 웨어 레벨링시, 모든 블록의 삭제 횟수 정보를 로딩할 수 없고, 전체 비교가 불가하므로, 적절하게 검색 조건을 설정하여, 효율적으로 타겟 블록을 검색하도록 제어한다.
여기서, 최저값을 갖는 타겟 블록을 찾는 대신, 최단 시간에 교체 자격이 있는 수치를 갖는 블록을 찾도록 하는 것이다. 즉, 최저값의 타겟 블록 대신 최초로 검색된 교체 자격이 있는 블록을 웨어된 블록의 웨어 레벨링으로 희생시키는 것이다. 이를 위해, 검색 성공률을 향상시키도록 타겟 블록 검색의 제 1 조건인 타겟 블록의 삭제 횟수를 가변시키며 제어할 수 있으며, 웨어된 블록의 교체 시급도에 따라 검색 대상이 되는 타겟 블록의 수를 증가시킬 수 도 있다. 이로써 본 발명의 일 실시예에 따르면, 맵핑 정보 및 삭제 횟수에 대한 임시 저장을 위한 버퍼부의 크기를 추가하지 않아도 되고, 종래보다 작은 사이즈로 유지하는 것이 가능하다.
본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 본 발명의 일 실시예에 따른 반도체 스토리지 시스템의 블록도,
도 2는 도 1에 따른 어드레스 맵핑을 개념적으로 도시한 블록도,
도 3은 도 1에 따른 반도체 스토리지 시스템의 제어 방법을 나타낸 플로우 차트;
도 4는 도 3에 따른 타겟 블록의 삭제 횟수 및 누적 실패 횟수의 상관 관계를 도시한 그래프,
도 5는 도 3에 따른 감도 및 웨어된 블록의 삭제 횟수와의 관계를 정리한 표; 및
도 6은 도 5에 따른 웨어된 블록의 삭제 횟수 및 억세스 횟수가 감도에 따라 변화되는 것을 나타낸 그래프이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 호스트 인터페이스 120: 버퍼부
130: MCU 140: 메모리 컨트롤러
150: 메모리 영역

Claims (21)

  1. 맵핑 정보 및 삭제 횟수가 저장된 복수의 맵핑 페이지를 순차적으로 로딩하는 버퍼부; 및
    웨어된 블록(worn block)의 교체 대상이 될 타겟 블록(target block)을 찾도록 상기 타겟 블록의 삭제 횟수 기준 및 상기 타겟 블록의 검색 대상인 상기 맵핑 페이지의 수를 설정하여 맵핑 페이지들을 샘플링(sampling)하여 웨어 레벨링(wear-leveling)을 수행하는 메모리 컨트롤러를 포함하는 반도체 스토리지 시스템.
  2. 제 1항에 있어서,
    상기 메모리 컨트롤러는 데이터 삭제시마다 웨어 레벨링 수행 여부를 판단하는 반도체 스토리지 시스템.
  3. 제 2항에 있어서,
    상기 메모리 컨트롤러는 상기 웨어 레벨링 수행 시마다 상기 타겟 블록의 삭제 횟수를 가변시킬 수 있는 반도체 스토리지 시스템.
  4. 제 3항에 있어서,
    상기 메모리 컨트롤러는 상기 웨어 레벨링 수행시 상기 타겟 블록을 찾는 것이 실패하면, 차기의 웨어 레벨링 수행시 상기 타겟 블록의 상기 삭제 횟수를 증가 시키는 반도체 스토리지 시스템.
  5. 제 1항에 있어서,
    복수의 메모리 블록을 포함하는 메모리 영역을 더 포함하고,
    상기 복수의 메모리 블록은 상기 복수의 맵핑 페이지를 포함하며,
    상기 메모리 컨트롤러는 웨어 레벨링 수행 시마다 상기 메모리 영역에 억세스 하는 횟수를 가변시키면서 검색 대상의 상기 맵핑 페이지의 수를 다르게 제어할 수 있는 반도체 스토리지 시스템.
  6. 제 5항에 있어서,
    상기 메모리 컨트롤러는 상기 웨어된 블록의 삭제 횟수가 기 설정된 소정치보다 높을수록 상기 메모리 영역에 억세스 하는 횟수를 증가시키는 반도체 스토리지 시스템.
  7. 제 6항에 있어서,
    상기 메모리 컨트롤러는 상기 메모리 영역에 억세스 하는 횟수를 증가시킬수록 상기 버퍼부에 로딩되는 상기 맵핑 페이지의 수를 증가시키는 반도체 스토리지 시스템.
  8. 제 7항에 있어서,
    상기 버퍼부에 로딩되는 상기 맵핑 페이지는 동시에 로딩되지 않고 순차적으로 로딩되는 반도체 스토리지 시스템.
  9. 삭제
  10. 복수의 메모리 블록을 포함하며, 상기 각 메모리 블록 내 맵핑 정보 및 삭제 횟수가 저장된 맵핑 페이지가 저장된 메모리 영역; 및
    웨어 레벨링 시, 상기 메모리 블록 중 웨어된 블록의 교체 대상이 될 블록에 대한 삭제 횟수의 기준 및 상기 웨어된 블록의 정보를 이용하여 상기 교체 대상이 될 블록에 대한 검색 대상 수의 기준을 설정함으로써, 타겟 블록으로서의 상기 교체 대상이 될 최초의 블록을 찾아서 상기 웨어된 블록과 교체시키는 메모리 컨트롤러를 포함하는 반도체 스토리지 시스템.
  11. 제 10항에 있어서,
    상기 메모리 컨트롤러는, 상기 타겟 블록의 검색 성공률을 향상시키도록 상기 타겟 블록의 상기 삭제 횟수 기준을 가변시키며 제어하는 반도체 스토리지 시스템.
  12. 제 11항에 있어서,
    상기 메모리 컨트롤러는 상기 웨어 레벨링 수행시 상기 타겟 블록을 찾는 것이 실패하면, 차기(次期)의 웨어 레벨링 수행시 상기 타겟 블록의 상기 삭제 횟수를 증가시키는 반도체 스토리지 시스템.
  13. 제 10항에 있어서,
    상기 메모리 컨트롤러는, 상기 웨어된 블록의 교체 시급도에 따라 상기 검색 대상의 수를 가변시키는 반도체 스토리지 시스템
  14. 제 13항에 있어서,
    상기 메모리 컨트롤러는 상기 웨어된 블록의 삭제 횟수가 기 설정된 소정치보다 높을수록, 검색 대상이 되는 상기 타겟 블록의 수를 증가시킴으로써 상기 메모리 영역에 접근하는 검색 횟수를 증가시키는 반도체 스토리지 시스템.
  15. 웨어 레벨링 시, 웨어된 블록에 대응되어 교체될 타겟 블록의 삭제 횟수를 결정하는 제 1 기준 설정하는 단계;
    상기 웨어된 블록의 삭제 횟수에 따라 상기 타겟 블록 검색의 제 2 기준 설정하는 단계;
    상기 제 1 및 제 2 기준에 의해 상기 타겟 블록을 찾는 단계; 및
    상기 타겟 블록을 찾지 못했다면, 상기 제 1 기준을 가변시켜 갱신함으로써, 차기(次期)의 상기 타겟 블록 검색 조건에 영향을 주는 단계를 포함하는 반도체 스 토리지 시스템의 제어 방법.
  16. 제 15항에 있어서,
    상기 제 1 기준을 설정하는 단계는,
    상기 타겟 블록으로 선택될 수 있도록 소정 수치의 삭제 횟수를 설정하는 단계를 포함하는 반도체 스토리지 시스템의 제어 방법.
  17. 제 15항에 있어서,
    상기 제 2 기준을 설정하는 단계는,
    상기 웨어된 블록의 삭제 횟수가 높을 수록, 상기 타겟 블록으로 검색될 블록의 수를 증가킴으로써, 메모리 영역에 대한 억세스 횟수를 설정하는 반도체 스토리지 시스템의 제어 방법.
  18. 제 17항에 있어서,
    상기 제 2 기준인 상기 억세스 횟수 동안 상기 제 1 기준의 삭제 횟수 이하를 만족하는 상기 타겟 블록을 찾는 것을 반복 수행하는 반도체 스토리지 시스템의 제어 방법.
  19. 제 15항에 있어서,
    상기 웨어 레벨링 진입 시 상기 타겟 블록의 검색 실패 여부를 알리는 누적 실패 횟수를 설정하는 것을 더 포함하고,
    상기 제 1 기준을 설정하는 것은 상기 누적 실패 횟수를 이용하여, 상기 타겟 블록의 삭제 횟수를 설정하는 반도체 스토리지 시스템의 제어 방법.
  20. 제 19항에 있어서,
    상기 타겟 블록을 찾지 못했다면, 상기 누적 실패 횟수를 증가시켜 상기 타겟 블록의 상기 삭제 횟수 기준을 높이는 반도체 스토리지 시스템의 제어 방법.
  21. 제 19항에 있어서,
    상기 타겟 블록을 찾았다면, 상기 누적 실패 횟수를 감소시키고 상기 타겟 블록의 상기 삭제 횟수 기준을 낮추는 반도체 스토리지 시스템의 제어 방법.
KR1020090103578A 2009-10-29 2009-10-29 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법 KR101097438B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090103578A KR101097438B1 (ko) 2009-10-29 2009-10-29 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US12/648,369 US8335887B2 (en) 2009-10-29 2009-12-29 Solid state storage systems and methods for flexibly controlling wear leveling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090103578A KR101097438B1 (ko) 2009-10-29 2009-10-29 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20110046880A KR20110046880A (ko) 2011-05-06
KR101097438B1 true KR101097438B1 (ko) 2011-12-23

Family

ID=43926598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090103578A KR101097438B1 (ko) 2009-10-29 2009-10-29 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법

Country Status (2)

Country Link
US (1) US8335887B2 (ko)
KR (1) KR101097438B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043180A (ja) * 2010-08-19 2012-03-01 Sony Corp 情報処理装置、情報処理方法およびコンピュータプログラム
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
US9146855B2 (en) 2012-01-09 2015-09-29 Dell Products Lp Systems and methods for tracking and managing non-volatile memory wear
CN103092770B (zh) * 2013-01-18 2015-08-12 山东华芯半导体有限公司 一种磨损均衡处理时减少内存开销的方法
JP6326209B2 (ja) * 2013-09-30 2018-05-16 ラピスセミコンダクタ株式会社 半導体装置及び半導体メモリにおける消去回数の検索方法
US9978440B2 (en) 2014-11-25 2018-05-22 Samsung Electronics Co., Ltd. Method of detecting most frequently accessed address of semiconductor memory based on probability information
KR102258126B1 (ko) 2015-03-19 2021-05-28 삼성전자주식회사 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
CN108563397B (zh) * 2018-01-04 2021-08-24 威盛电子股份有限公司 存储装置以及数据保存方法
CN108089994B (zh) * 2018-01-04 2021-06-01 威盛电子股份有限公司 存储装置以及数据保存方法
KR102534648B1 (ko) * 2018-03-08 2023-05-22 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10713155B2 (en) * 2018-07-19 2020-07-14 Micron Technology, Inc. Biased sampling methodology for wear leveling
US10817187B2 (en) * 2019-01-24 2020-10-27 Western Digital Technologies, Inc. Balancing the block wearing leveling for optimum SSD endurance
US11561883B2 (en) * 2019-12-12 2023-01-24 Sandisk Technologies Llc Pipelined micro controller unit
CN111639041B (zh) * 2020-05-29 2022-04-08 深圳宏芯宇电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制器
US11429543B2 (en) * 2020-10-22 2022-08-30 Micron Technology, Inc. Managed NAND flash memory region control against endurance hacking
US11798643B1 (en) 2022-03-15 2023-10-24 Western Digital Technologies, Inc. Non-volatile storage system with hybrid SLC wear leveling
CN117873406A (zh) * 2024-03-11 2024-04-12 武汉麓谷科技有限公司 一种控制zns固态硬盘的磨损均衡的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100818035B1 (ko) 2000-05-04 2008-03-31 엔엑스피 비 브이 저장 매체 상의 데이터 관리 및 데이터 관리 시스템과 컴퓨터 판독가능한 저장 매체
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6985992B1 (en) * 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7853749B2 (en) 2005-09-01 2010-12-14 Cypress Semiconductor Corporation Flash drive fast wear leveling
KR101185617B1 (ko) 2006-04-04 2012-09-24 삼성전자주식회사 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
TW200828320A (en) 2006-12-28 2008-07-01 Genesys Logic Inc Method for performing static wear leveling on flash memory
US7657701B2 (en) * 2007-01-03 2010-02-02 The General Electric Company System and method of flash memory wear leveling using distributed write cycles
US7882301B2 (en) 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
KR101413736B1 (ko) * 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
TWI366828B (en) * 2007-09-27 2012-06-21 Phison Electronics Corp Wear leveling method and controller using the same
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
KR100857761B1 (ko) 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법

Also Published As

Publication number Publication date
US20110107016A1 (en) 2011-05-05
KR20110046880A (ko) 2011-05-06
US8335887B2 (en) 2012-12-18

Similar Documents

Publication Publication Date Title
KR101097438B1 (ko) 웨어 레벨링을 유동적으로 제어하는 반도체 스토리지 시스템 및 그 제어 방법
US10204042B2 (en) Memory system having persistent garbage collection
KR101131560B1 (ko) 웨어 레벨링을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
EP2439645B1 (en) Method and apparatus for storing data in a multi-level cell flash memory device
KR101185617B1 (ko) 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법
US8819358B2 (en) Data storage device, memory system, and computing system using nonvolatile memory device
US8200904B2 (en) System and method for clearing data from a cache
TWI483109B (zh) 半導體儲存裝置
US10372382B2 (en) Methods and apparatus for read disturb detection based on logical domain
JP2011522350A (ja) ハイブリッドメモリ管理
US10884669B2 (en) Controller, operation method of the controller and memory system
US20100030948A1 (en) Solid state storage system with data attribute wear leveling and method of controlling the solid state storage system
KR20090077538A (ko) 반도체 메모리 장치 및 그것의 마모도 관리 방법
US20200110555A1 (en) Write control method, associated data storage device and controller thereof
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
KR20110035762A (ko) 예비 영역을 유동적으로 관리하는 반도체 스토리지 시스템 및 그 제어 방법
US11334272B2 (en) Memory system and operating method thereof
Margaglia et al. Improving MLC flash performance and endurance with extended P/E cycles
CN105955672B (zh) 用于灵活控制损耗均衡的固态存储***及方法
US20110138110A1 (en) Method and control unit for performing storage management upon storage apparatus and related storage apparatus
KR20230092733A (ko) 영구 저장 장치에서의 자동 삭제
US11579792B2 (en) Data movement between different cell regions in non-volatile memory
US20240143226A1 (en) Data storage device and method for managing a write buffer
US20240126473A1 (en) Data storage device and method for managing a write buffer
EP4137952A1 (en) Lifecycle-aware persistent storage

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141126

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151120

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181126

Year of fee payment: 8