KR101027112B1 - 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법 - Google Patents

플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법 Download PDF

Info

Publication number
KR101027112B1
KR101027112B1 KR1020080062735A KR20080062735A KR101027112B1 KR 101027112 B1 KR101027112 B1 KR 101027112B1 KR 1020080062735 A KR1020080062735 A KR 1020080062735A KR 20080062735 A KR20080062735 A KR 20080062735A KR 101027112 B1 KR101027112 B1 KR 101027112B1
Authority
KR
South Korea
Prior art keywords
group
data
page
update
flash memory
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020080062735A
Other languages
English (en)
Other versions
KR20100002731A (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 KR1020080062735A priority Critical patent/KR101027112B1/ko
Priority to US12/493,346 priority patent/US20090327592A1/en
Publication of KR20100002731A publication Critical patent/KR20100002731A/ko
Application granted granted Critical
Publication of KR101027112B1 publication Critical patent/KR101027112B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/7202Allocation control and policies

Landscapes

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

Abstract

플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법이 개시된다. 본 발명에 따른 플래시 메모리의 클러스터링 장치는, 업데이트 시점이 유사한 페이지들끼리 모아 동일한 블록에 쓰기 연산을 실행하는 것을 특징으로 한다. 이로써, 플래시 메모리의 쓰기 성능이 향상되고, 플래시 메모리의 수명을 연장시킬 수 있게 된다.
플래시 메모리, 클러스터링, 핫 데이터, 업데이트 타임

Description

플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법{Clustering device for flash memory and method thereof}
본 발명은 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법에 관한 것으로서, 보다 상세하게는 블록 복사 비용을 최소화시킬 수 있는 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법에 관한 것이다.
플래시 메모리는 저 전력, 비휘발성, 휴대성 등의 특징으로 인해 휴대용 전자기기의 저장 매체로 많이 이용되고 있다. 플래시 메모리는 동일한 크기의 여러 개의 연속적인 블록으로 구성되며, 하나의 블록은 동일한 크기의 여러 개의 연속적인 페이지로 이루어진다. 플래시 메모리에서 수행 가능한 연산은 읽기, 쓰기, 소거의 세 가지이다. 이때, 플래시 메모리에서의 읽기와 쓰기 연산은 페이지 단위로 이루어지며, 소거 연산은 블록 단위로 이루어진다.
이와 같은 플래시 메모리는 일반적인 저장 매체와 달리 플래시 메모리만의 고유한 특성을 갖는다. 첫째, 디스크는 읽기 연산과 쓰기 연산 간 수행 속도의 차이가 없는데 반하여, 플래시 메모리는 두 연산 간의 수행 속도의 차이가 매우 크 다. 즉, 플래시 메모리의 쓰기 연산은 읽기 연산에 비해 매우 느리다. 둘째, 플래시 메모리에는 일반적인 저장 매체에는 없는 새로운 연산인 소거 연산(erase operation)이 존재한다. 플래시 메모리는 물리적 특성상 저장된 데이터를 직접 갱신(in-place update)하는 것이 불가능하다. 데이터를 갱신하기 위해서는 데이터가 저장된 페이지를 무효화하고, 갱신 사항이 반영된 새로운 페이지를 플래시 메모리의 다른 영역에 기록하는 방법을 사용한다. 이때, 기존의 페이지를 무효화하는 연산이 소거 연산이다. 소거 연산을 수행하기 위해서는 해당 블록 안에 존재하는 유효한 데이터들을 다른 블록으로 복사하여야 하며, 이를 블록 복사(block copy)라고 한다. 이와 같이 소거 연산은 오버헤드가 매우 큰 연산으로 잦은 쓰기 연산에 의해 발생한다. 셋째, 플래시 메모리는 하나의 블록에 수행 가능한 소거 연산의 횟수가 보통 10만 번 이하로 제한되어 있다. 제한된 수만큼 소거 연산을 수행한 블록은 더 이상 사용할 수 없다. 즉, 잦은 소거 연산은 플래시 메모리의 수명을 단축시키는 중요한 요인이 된다. 이와 같은 특성들로 인하여 플래시 메모리 환경에서 쓰기 연산을 감소시키는 것이 매우 중요하다.
쓰기 연산을 감소시키는 방법으로 자주 업데이트 되는 데이터들을 동일한 페이지 또는 블록에 저장하는 핫 데이터 클러스터링(hot data clustering) 방법이 있다. 여기서, 핫 데이터는 자주 업데이트가 되는 데이터를 말한다. 핫 데이터가 저장된 페이지는 업데이트가 자주 일어나므로 무효화될 확률이 높다. 그러므로 이러한 페이지들을 동일한 블록에 저장하면 소거 연산 수행 시 해당 블록의 블록 복사 비용을 줄일 수 있다. 이로 인해 쓰기 연산의 횟수가 줄어들고, 소거 연산의 횟수 도 줄어들게 되어 전반적인 플래시 메모리의 성능이 향상된다.
하지만, 핫 데이터가 모여 있는 블록이라고 할지라도 소거 연산이 요청되었을 때 유효한 페이지(valid page)가 많이 존재하는 경우가 발생한다. 예를 들어, 도 1에 도시한 바와 같이 하나의 블록은 총 8개의 페이지로 구성되어 있으며 페이지의 주기는 3으로 모두 동일하고 핫 데이터는 페이지 단위라고 가정하면, 시간이 지남에 따라 블록에는 페이지가 순차적으로 쓰이지만 T5에서 소거 연산이 요청되었을 때 Page 0부터 Page 2까지 무효한 페이지이며, Page 3부터 Page 6까지는 유효한 페이지이다. 이때, 소거 연산이 수행되면, 블록 내의 절반에 해당하는 유효한 페이지를 다른 블록으로 복사하여야 하기 때문에 블록 복사 비용이 많이 발생하게 된다. 또한, 이와 같은 잦은 블록 복사로 인하여 플래시 메모리의 성능이 저하되며, 소거 연산을 많이 유발하여 플래시 메모리의 수명을 단축시키게 된다.
본 발명은 상기와 같은 문제점을 해결하기 위하여 창안된 것으로서, 플래시 메모리의 쓰기 성능을 향상시키고, 플래시 메모리의 수명을 연장시킬 수 있는 플래시 메모리의 데이터 클러스터링 장치 및 그 클러스터링 방법을 제공하는 것을 목적으로 한다.
상기의 목적을 달성하기 위한 본 발명에 따른 플래시 메모리의 데이터 클러스터링 장치는, 업데이트 시점이 기 설정된 시간 범위에 있는 페이지들끼리 모아 동일한 블록에 쓰기 연산을 실행하는 것을 특징으로 한다.
여기서, 동일한 페이지 내에 서로 다른 업데이트 주기를 갖는 데이터들이 있는 경우, 그 페이지의 업데이트 주기는 가장 짧은 업데이트 주기를 갖는 데이터의 주기와 동일하게 되는 것이 바람직하다.
또한, 상기의 플래시 메모리의 데이터 클러스터링 장치는, 쓰기 연산이 요청될 경우, 그룹 관리 테이블에 기초하여 데이터를 저장할 페이지를 할당하는 할당부(allocator); 및 소거 연산이 요청될 경우, 소거 정책(erase policy)에 의해 선택된 블록을 소거하는 소거부(cleaner)를 포함할 수 있다.
또한, 상기 그룹 관리 테이블은 일정 개수의 그룹 엔트리를 관리하고, 그룹 업데이트 타임과 그룹에 해당하는 블록들의 리스트로 구성될 수 있다.
또한, 상기 그룹은 업데이트 타임이 상기 그룹 각각에 대해 기 설정된 시간 범위에 있는 페이지들이 저장된 블록들의 집합이며, 하나의 그룹은 하나의 그룹 관리 테이블 엔트리와 대응되는 것이 바람직하다.
여기서, 특정 페이지 Pj에 업데이트가 발생할 경우, 상기 Pj는 다음의 식을 만족하는 그룹 엔트리 Ei에 저장되는 것이 바람직하다.
Figure 112009081564209-pat00024
한편, 상기의 플래시 메모리의 데이터 클러스터링 장치는, 데이터 쓰기가 요 청되는 경우, 새로운 데이터 쓰기인지 이전 데이터의 업데이트 인지를 확인하는 단계; 상기 확인단계에 의해 이전 데이터의 업데이트인 것으로 확인되면, 상기 이전 데이터가 저장된 페이지를 무효화하고 해당 페이지의 업데이트 타임을 계산하는 단계; 계산된 상기 업데이트 타임에 해당하는 그룹 엔트리가 존재할 경우, 해당 그룹에 빈 페이지가 존재하는지의 여부를 확인하는 단계; 및 빈 페이지가 존재할 경우에 상기 빈 페이지에 업데이트된 데이터를 저장하는 단계를 포함하는 플래시 메모리의 데이터 클러스터링 방법을 제공한다.
여기서, 상기의 플래시 메모리의 데이터 클러스터링 방법은, 상기 그룹 엔트리의 해당 그룹에 빈 페이지가 없을 경우 새로운 블록을 할당하여 상기 해당 그룹에 추가하는 단계를 더 포함할 수 있다. 이 경우, 추가된 상기 새로운 블록의 빈 페이지에 상기 업데이트된 데이터를 저장하는 것이 바람직하다.
또한, 상기의 플래시 메모리의 데이터 클러스터링 방법은, 계산된 상기 업데이트 타임에 해당하는 그룹 엔트리가 존재하지 않는 경우, 상기 그룹 엔트리에 포함되지 않은 블록의 빈 페이지에 상기 업데이트된 데이터를 저장하는 단계를 더 포함할 수 있다.
여기서, 새로운 데이터 쓰기인 것으로 판단되면, 그룹 엔트리에 포함되지 않은 블록의 빈 페이지에 데이터를 저장하는 것이 바람직하다.
한편, 상기의 플래시 메모리의 데이터 클러스터링 방법은, 데이터 쓰기가 요청되는 경우, 이전 데이터가 저장된 페이지를 무효화하고 해당 페이지의 업데이트 타임을 계산하는 단계; 및 계산된 상기 업데이트 타임에 해당하는 그룹이 존재하는지를 검색하며, 해당 그룹이 존재할 경우 상기 해당 그룹에 포함된 페이지들 중 비어있는 페이지에 업데이트된 데이터를 저장하는 단계를 포함하는 제2의 플래시 메모리의 데이터 클러스터링 방법을 제공한다.
이와 같은 제2의 플래시 메모리의 데이터 클러스터링 방법은, 상기 해당 그룹에 빈 페이지가 없을 경우 새로운 블록을 할당하여 상기 해당 그룹에 추가하는 단계가 더 포함될 수 있다.
또한, 제2의 플래시 메모리의 데이터 클러스터링 방법은, 상기 해당 그룹이 존재하지 않는 경우 그룹에 포함되지 않은 블록에 상기 업데이트된 데이터를 저장하는 단계가 더 포함될 수도 있다.
본 발명에 따르면, 플래시 메모리의 쓰기 성능이 향상되며, 플래시 메모리의 수명 또한 연장된다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법을 상세하게 설명한다.
도 2는 본 발명에 따른 플래시 메모리의 클러스터링 방법을 설명하기 위해 도시된 도면이다. 한 블록은 총 8개의 페이지로 구성되어 있으며, 모든 페이지는 T5 시간 이전에 업데이트 되었다고 가정한다. 이때, 업데이트 된 각각의 페이지는 업데이트 타임(update time)을 기반으로 클러스터링 된다. 페이지의 업데이트 타임은 해당 페이지에 수정이 발생하게 될 예상 시각을 의미하며 페이지 내의 데이터들의 업데이트 주기 중에서 가장 짧은 주기를 가진 데이터를 기반으로 업데이트 타임을 예측한다. 예를 들어, 도 3에 도시한 바와 같이 한 페이지에 6개의 각각 다른 업데이트 주기를 가진 데이터가 있다고 가정하면, 그 중 제일 작은 업데이트 주기를 가진 데이터 1의 업데이트 주기가 된다. 블록 복사의 비용을 줄이기 위해서는 소거 연산을 수행하는 해당 블록에 존재하는 유효 페이지의 수가 적어야 한다. 이를 위하여 본 발명에서는 업데이트될 예상 시점이 유사한 데이터를 동일한 블록에 저장한다. 즉, 한 페이지가 업데이트되었을 때, 다음 업데이트 타임을 알고 있다면 해당 페이지의 업데이트 타임과 가장 유사한 예상 업데이트 완료 시간을 가지는 블록에 이 페이지를 쓴다. 한 페이지의 예상 업데이트 시간이란, 한 페이지가 업데이트된 후 다음 업데이트가 발생하게 될 예상 시각을 의미한다. 또한, 블록의 업데이트 완료 시간은 해당 블록 내에 저장되어 있는 페이지들이 모두 업데이트된 직후의 시간을 말한다. 따라서, 본 발명에 따른 예상 업데이트 시간 기반 클러스터링은 블록의 업데이트 완료 시간을 바탕으로 페이지의 예상 업데이트 시간을 고려하여 저장하는 방법이다.
서로 업데이트 주기는 다르지만 업데이트 시점이 비슷한 페이지들끼리 동일한 블록에 모아쓰게 되면, 그 블록은 업데이트 완료 시간이 지난 후 블록 내의 모든 페이지가 무효화된 상태로 존재하게 된다. 이러한 블록이 T5에서 소거 대상 블 록으로 선정된다면 블록 내의 대부분의 페이지가 무효화된 상태로 존재하므로 블록 복사 비용을 현저히 줄일 수 있다.
도 4는 본 발명에 따른 플래시 메모리의 클러스터링 장치의 구조를 개략적으로 나타낸 도면이다. 본 발명에 따른 클러스터링 장치(10)는 크게 할당부(allocator)(12) 및 소거부(cleaner)(14)로 구성된다.
할당부(12)는 쓰기 연산이 요청되었을 때, 데이터를 저장할 페이지를 할당해주는 역할을 하며, 이를 위해 그룹 관리 테이블(group management table)을 관리한다. 여기서, 그룹 관리 테이블은 업데이트된 페이지들이 저장될 위치를 할당하기 위해 블록들을 그룹 단위로 관리하는 테이블을 말한다.
그룹은 업데이트 타임이 유사한 페이지들이 저장된 블록들의 집합으로서, 하나의 그룹은 하나의 그룹 관리 테이블 엔트리와 대응된다. 그룹 관리 테이블은 일정한 개수의 그룹 엔트리를 관리하며, 하나의 그룹 엔트리는 그룹 업데이트 타임과 그룹에 해당하는 블록들의 리스트로 구성된다. 그룹 업데이트 타입은 해당 그룹에 쓰인 페이지들의 업데이트 타임의 최대값을 의미한다.
특정 페이지 Pj에 업데이트가 발생할 경우, Pj는 수학식 1을 만족하는 그룹 엔트리 Ei에 저장된다.
Figure 112009081564209-pat00025
시간이 지남에 따라 현재시각 이전의 업데이트 타임을 가지는 그룹 엔트리는 테이블에서 삭제되고, 새로운 그룹 엔트리가 생성된다. 이때, 그룹 엔트리의 업데이트 타임은 설정된 업데이트 타임 간격에 의해 자동적으로 부여된다. 업데이트 타임 간격은 데이터의 성격에 따라 사용자가 부여하는 값이다. 업데이트 타임 간격을 넓게 설정하면 동일한 그룹에 속하게 될 페이지간의 업데이트 타임 간격이 증가하여, 소거 연산 수행 시 해당 블록에 속한 유효 페이지들이 많이 존재할 가능성이 높다. 이로 인해 블록 복사 비용이 증가한다. 반면에 업데이트 타임 간격을 좁게 설정하면 그룹 업데이트 타임이 세분화 되어, 동일한 그룹에 속하게 될 페이지들의 수가 줄어들게 된다. 이로 인해, 빈 페이지가 많이 남아 있는 채로 소거되는 블록이 많아지게 되므로 적절한 값을 설정하는 것이 중요하다.
소거부(14)는 소거 연산이 요청될 때 소거 정책(Erase policy)에 의해 선택된 블록을 소거 한다. 특정 블록에 무효 페이지가 많을수록, 유효 페이지가 적은 수록, 소거 횟수가 적을수록 선택될 확률이 높아진다.
도 5는 본 발명에 따른 플래시 메모리의 클러스터링 방법의 전체적인 쓰기 과정을 나타낸다. 도면을 참조하여 본 발명에 따른 플래시 메모리의 클러스터링 방법을 보다 상세하게 설명한다.
데이터 쓰기가 요청되면, 클러스터링 장치(10)는 그룹 관리 테이블을 이용하여 해당 페이지의 업데이트 타임과 각 그룹의 업데이트 시간 값을 비교하여 그 요청된 대상 데이터가 새로운 데이터 쓰기인지 이전 데이터의 업데이트인지 확인한다(S101). 만약 새로운 데이터의 쓰기 일 경우 업데이트 타임을 예측할 수 없으므 로 그룹에 포함되어 있지 않은 블록에 저장한다(S103, S105). 이전 데이터의 업데이트의 경우에는 먼저 이전 데이터가 저장된 페이지를 무효화하고 해당 페이지의 업데이트 타임을 계산한다(S107). 또한, 할당부(12)는 그룹 관리 테이블에 계산된 업데이트 타임에 해당하는 그룹 엔트리가 존재하는지를 검색하며, 계산된 업데이트 타임에 해당하는 그룹 엔트리가 존재할 경우, 해당 그룹에 빈 페이지가 존재하는지 여부를 확인한다(S109, S111). 해당 페이지에 빈 페이지가 존재할 경우 해당 페이지에 업데이트된 데이터를 저장한다(S113). 해당 그룹에 빈 페이지가 없을 경우, 새로운 블록을 할당하여 할당된 블록을 그룹에 추가한 후, 업데이트 된 데이터를 저장한다(S115, S117). 계산된 업데이트 타임에 해당하는 그룹이 없을 경우, 그룹에 포함되어 있지 않은 블록에 저장한다.
도 6은 쓰기 요청된 페이지의 업데이트 타임이 그룹 관리 테이블내의 엔트리에 해당 될 때 쓰는 과정을 나타낸 도면이다. 여기서, 테이블의 엔트리 개수는 6개이고 각 그룹 엔트리간의 업데이트 타임 간격은 10분이라고 가정한다. 이때, 쓰기요청이 온 페이지의 업데이트 타임이 1시 18분일 때 그룹의 업데이트 타임이 1시 20분인 테이블의 두 번째 엔트리에 해당 페이지가 할당 된다.
그룹 관리 테이블에서는 그룹의 개수와 그룹 업데이트 타임의 간격을 사용자가 임의로 설정해 주어야 한다. 전체 플래시 메모리의 데이터를 그룹으로 관리하는 것은 오버헤드가 너무 크고, 업데이트가 거의 발생하지 않은 데이터의 경우 그룹으로 관리하는 것은 의미가 없다. 그러므로 일정 기간 내에 업데이트될 데이터를 유 한개의 그룹으로 관리하는 것이 바람직하다. 이때, 업데이트가 일어나지 않는 데이터와 업데이트가 되더라도 예상 업데이트 타임 값이 커 그룹에 속하지 못한 데이터는 일반적인 쓰기 연산 방법을 따른다. 본 발명에서는 실험을 통해서 그룹의 개수에 따른 플래시 메모리의 클러스터링 방법의 성능 변화를 측정하였다. 그룹 업데이트 타임의 간격은 각 그룹의 업데이트 타임을 설정하는 값으로 그룹 업데이트 타임 간격을 넓게 설정하면 동일한 그룹에 속하게 될 페이지 간의 업데이트 타임 간격이 증가하여, 소거 연산 수행 시 해당 블록에 속한 유효 페이지들이 많이 존재할 가능성이 높다. 이로 인해 블록 복사 비용이 증가한다. 반면에 그룹 업데이트 타입 간격을 좁게 설정하면 그룹 업데이트 타임이 세분화되어, 동일한 그룹에 속하게 될 페이지들의 수가 줄어들게 된다. 이로 인해, 빈 페이지가 많이 남아있는 채로 소거되는 블록이 많아지게 되므로 적절한 값을 설정하는 것이 중요하다.
본 실험에서는 플래시 메모리의 용량을 1G NAND 플래시 메모리를 기준으로 설정하였으며, 소거 대상 블록 선택 방법(cleaning policy)은 CAT를 적용하였다. 실험에 사용되는 데이터는 일정한 업데이트 타임을 가지는 데이터를 기반으로 하였다.
다양한 데이터를 대상으로 성능을 측정하기 위하여 4가지 로컬리티가 있는 데이터(locality data)와 랜덤 데이터(random data)를 대상으로 한다. 로컬리티가 있는 데이터 90/10, 70/10, 50/10, 30/10과 10/10의 랜덤 데이터를 사용한다. 90/10은 전체 10%의 데이터에 90%의 연산이 집중되고, 90% 데이터에 나머지 10%의 연산이 집중되는 것을 말하며, 로컬리티 70/10은 전체 10%의 데이터에 70%의 연산 이 집중되고, 90%의 데이터에 나머지 30%의 연산이 집중되는 것을 말한다.
로컬리티가 있는 데이터를 생성하기 위하여 지수 확률 변수(exponential random variable)의 확률 밀도 함수를 이용하였다. 확률 밀도 함수는 수학식 2와 같다.
Figure 112008047150739-pat00003
수학식 2의 지수 확률 변수의 확률 밀도 함수를 적분하여 λ값을 찾아 각 페이지마다 빈도(frequency)를 설정하고 빈도의 역수의 크기를 조정하여 로컬리티가 있는 데이터를 생성하였다. 도 7은 1기가바이트 환경에서 페이지 번호에 따른 빈도수를 나타낸다.
본 실험에서 플래시 메모리의 초기화를 위하여 데이터를 순차적으로 전체 플래시 메모리 크기의 90%를 저장한다. 그리고 플래시 메모리의 최소 2%를 빈 공간으로 유지한다. 실험 수행 시간은 페이지가 40,000,000회 업데이트된 후를 기준으로 한다. 실험의 성능 척도로 페이지가 40,000,000회 업데이트된 후, 소거 연산의 총 횟수와 평균 블록 복사 비용을 측정한다. 또한, 쓰기 연산과 소거 연산의 횟수의 가중치(쓰기:1, 소거:10)를 고려하여 수학식 3의 소거 비용을 이용한다.
소거비용 = (평균블록복사비용 + 10) X 소거연산의 횟수
또한, 본 발명에 따른 플래시 메모리의 클러스터링 방법과 DAC(Dynamic data Clustering)의 성능을 비교하기 위한 실험으로, 플래시 메모리의 기존 데이터 클러스터링 방법인 핫 데이터 클러스터링 방법과 예상 업데이트 타임 기반 클러스터링 방법의 성능을 측정한다. 본 발명에 따른 플래시 메모리의 클러스터링 방법의 비교 대상으로서 핫 데이터 클러스터링 방법 중 DAC를 채택한다. DAC는 리젼의 개수와 시간 임계값에 따라서 성능 차이가 크기 때문에 총 6개의 환경을 설정하였다. 매개 변수 설정은 표 1을 통해 알 수 있다. DAC1의 방법은 리젼을 구분하지 않으므로 클러스터링을 하지 않은 일반적인 플래시 메모리의 쓰기 방법을 대표한다. 예상 업데이트 기반 클러스터링 방법(UTC)은 테이블의 크기를 16, 그룹의 업데이트 타임 간격은 20으로 설정하였다. 그 결과는 도 8 내지 도 10을 통해 알 수 있다.
Figure 112008047150739-pat00004
도면에 나타난 바와 같이 본 발명에 따른 클러스터링 방법이 DAC에 비하여 평균 블록 복사 비용은 최대 54%, 소거 연산의 횟수는 최대 59%, 소거 비용은 최대 77%의 성능 향상을 보였다. 또한, DAC는 로컬리티에 따라서 성능 차이가 많은 반면에 본 발명에 따른 클러스터링 방법은 로컬리티에 따른 성능 차이가 작음을 알 수 있다. 로컬리티 10/10인 모든 데이터의 주기가 DAC2의 시간 임계값보다 크기 때문에 DAC2의 리젼의 개수 지정과 상관없이 DAC1의 결과와 같다. 또한, DAC3, DAC4, DAC5는 시간 임계값이 같으므로 전반적으로 비슷한 패턴을 보인다.
환경 변수에 따른 예상 업데이트 타임 기반 클러스터링 방법의 성능 변화를 측정하기 위한 실험에서는 다양한 실험을 통해 정확한 성능을 측정하기 위하여 환경 변수를 두어 성능 변화를 측정하였다. 표 2는 실험에 사용한 그룹 업데이트 타임(갱신 시간)의 간격과 그룹의 개수의 값을 정리한 것이다.
Figure 112008047150739-pat00005
표 2에서 그룹 갱신 시간 간격 20 및 그룹의 개수 16는 그 매개 변수를 대표하는 값으로 특정한 하나의 매개 변수 값을 변화시켜 가는 동안 다른 환경 변수 값은 그 대표 값으로 고정된다. 예를 들어, 그룹 업데이트 타임 간격을 1, 5, 10, 20, 40, 80, 160, 320으로 변화시키며 실험을 할 때 그룹의 개수는 16으로 고정된다. 본 실험에서 데이터는 로컬리티 90/10인 데이터를 대상으로 한다.
첫 번째 실험은 그룹의 업데이트 타임 간격을 고정하고 그룹의 개수의 변화에 따른 예상 업데이트 타임 기반 클러스터링 방법의 성능 변화를 측정한다. 실험 결과는 도 11 내지 도 13을 통해 알 수 있다. 여기서, 그룹의 개수가 16개까지 급격한 성능 차이를 보이지만 그 이후로 성능 차이가 크지 않다. 그룹의 개수가 많을수록 그룹 관리 테이블에서 관리할 수 있는 블록의 수가 많으므로 클러스터링의 효과가 높을 것이라고 예상하였지만, 예상 업데이트 타임이 짧은 일부 데이터를 관리하는 것만으로도 충분히 큰 클러스터링 효과를 보인다. 이로부터 그룹의 개수에 따라 성능의 차이가 크지 않음을 알 수 있다.
두 번째 실험은 그룹의 개수를 고정하고 그룹의 업데이트 타임 간격의 변화에 따른 예상 업데이트 타임 클러스터링 방법의 성능 변화를 측정한다. 실험의 결과는 도 14 내지 도 16을 통해 알 수 있다. 그룹 업데이트 타임 간격이 20과 40에서 성능이 가장 좋으며, 그 이후 값이 커질수록 성능이 완만하게 증가하는 것을 볼 수 있다. 이것은 그룹 업데이트 타임 간격이 큰 값을 가지면 최악의 경우에는 클러스터링 하지 않은 것과 같이 때문이다. 그룹 업데이트 타임 간격은 데이터의 로컬리티에 따라 사용자가 적절한 값을 지정해주는 것이 중요하다.
이상에서는 본 발명의 바람직한 실시 예에 대해서 도시하고 설명하였으나, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형 실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.
도 1은 핫 데이터 클러스터링에서 블록 복사가 발생하는 예를 나타낸 도면이다.
도 2는 본 발명에 따른 플래시 메모리의 클러스터링 방법을 설명하기 위해 도시된 도면이다.
도 3은 서로 다른 업데이트 주기를 가진 데이터들을 구비한 페이지의 예를 나타낸 도면이다.
도 4는 본 발명에 따른 플래시 메모리의 클러스터링 장치의 구조를 나타낸 도면이다.
도 5는 본 발명에 따른 플래시 메모리의 클러스터링 방법의 전체적인 쓰기 과정을 나타낸 흐름도이다.
도 6은 쓰기 요청된 페이지의 업데이트 타임이 그룹 관리 테이블내의 엔트리에 해당 될 때 쓰는 과정을 나타낸 도면이다.
도 7은 로컬리티가 있는 데이터의 빈도수를 나타낸 그래프이다.
도 8은 로컬리티에 따른 평균 블록 복사 비용을 나타낸 그래프이다.
도 9는 로컬리티에 따른 소거 연산의 총 횟수를 나타낸 그래프이다.
도 10은 로컬리티에 따른 소거 비용을 나타낸 소거 비용을 나타낸 그래프이다.
도 11은 그룹의 개수의 변화에 따른 평균 블록 복사 비용을 나타낸 그래프이다.
도 12는 그룹의 개수에 따른 소거 연산의 총 횟수를 나타낸 그래프이다.
도 13은 그룹의 개수에 따른 소거 비용을 나타낸 그래프이다.
도 14는 그룹의 업데이트 타임 간격에 따른 평균 블록 복사 비용을 나타낸 그래프이다.
도 15는 그룹의 업데이트 타입 간격에 따른 소거 연산의 총 횟수를 나타낸 그래프이다.
도 16은 그룹의 업데이트 타임 간격에 따른 소거 비용을 나타낸 그래프이다.

Claims (13)

  1. 플래시 메모리의 데이터 클러스터링 장치에 있어서,
    페이지의 예상 업데이트 시점이 기 설정된 시간 범위에 있는 페이지들을 모아 동일한 블록에 쓰기 연산을 실행하며,
    상기 페이지의 예상 업데이트 시점은 상기 페이지를 구성하는 다수의 데이터에 대응되는 다수의 업데이트 주기 중 최단주기를 기반으로 설정되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치.
  2. 제 1항에 있어서,
    동일한 페이지 내에 서로 다른 업데이트 주기를 갖는 데이터들이 있는 경우, 그 페이지의 업데이트 주기는 가장 짧은 업데이트 주기를 갖는 데이터의 주기와 동일하게 되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치.
  3. 제 1항에 있어서,
    쓰기 연산이 요청될 경우, 그룹 관리 테이블에 기초하여 데이터를 저장할 페이지를 할당하는 할당부(allocator); 및
    소거 연산이 요청될 경우, 소거 정책(erase policy)에 의해 선택된 블록을 소거하는 소거부(cleaner)를 포함하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치.
  4. 제 3항에 있어서,
    상기 그룹 관리 테이블은 일정 개수의 그룹 엔트리를 관리하고, 그룹 업데이트 타임과 그룹에 해당하는 블록들의 리스트로 구성되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치.
  5. 제 4항에 있어서,
    상기 그룹은 업데이트 타임이 상기 그룹 각각에 대해 기 설정된 시간 범위에 있는 페이지들이 저장된 블록들의 집합이며, 하나의 그룹은 하나의 그룹 관리 테이블 엔트리와 대응되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치.
  6. 제 5항에 있어서,
    특정 페이지 Pj에 업데이트가 발생할 경우, 상기 Pj는 다음의 식을 만족하는 그룹 엔트리 Ei에 저장되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 장치:
    Figure 112009081564209-pat00026
  7. 플래시 메모리의 데이터 클러스터링 방법에 있어서,
    데이터 쓰기가 요청되는 경우, 새로운 데이터 쓰기인지 이전 데이터의 업데이트 인지 확인하는 단계;
    상기 확인하는 단계에 의해 이전 데이터의 업데이트인 것으로 확인되면, 상기 이전 데이터가 저장된 페이지를 무효화하고 해당 페이지의 업데이트 타임을 계산하는 단계;
    계산된 상기 업데이트 타임에 해당하는 그룹이 존재할 경우, 상기 그룹에 빈 페이지가 존재하는지의 여부를 확인하는 단계; 및
    빈 페이지가 존재할 경우에 상기 빈 페이지에 업데이트된 데이터를 저장하는 단계를 포함하며,
    상기 페이지의 예상 업데이트 타임은 상기 페이지를 구성하는 다수의 데이터에 대응되는 다수의 업데이트 주기 중 최단주기를 기반으로 설정되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  8. 제 7항에 있어서,
    상기 그룹에 빈 페이지가 없을 경우 새로운 블록을 할당하여 상기 그룹에 추가하는 단계를 더 포함하며,
    추가된 상기 새로운 블록의 빈 페이지에 상기 업데이트된 데이터를 저장하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  9. 제 7항에 있어서,
    계산된 상기 업데이트 타임에 해당하는 그룹 엔트리가 존재하지 않는 경우, 상기 그룹 엔트리에 포함되지 않은 블록의 빈 페이지에 상기 업데이트된 데이터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  10. 제 7항에 있어서,
    새로운 데이터 쓰기인 것으로 판단되면, 그룹 엔트리에 포함되지 않은 블록의 빈 페이지에 데이터를 저장하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  11. 플래시 메모리의 데이터 클러스터링 방법에 있어서,
    데이터 쓰기가 요청되는 경우, 이전 데이터가 저장된 페이지를 무효화하고 해당 페이지의 업데이트 타임을 계산하는 단계; 및
    계산된 상기 업데이트 타임에 해당하는 그룹이 존재하는지를 검색하여 해당 그룹이 존재할 경우 상기 해당 그룹에 포함된 페이지들 중 비어있는 페이지에 업데이트된 데이터를 저장하는 단계를 포함하며,
    상기 페이지의 예상 업데이트 타임은 상기 페이지를 구성하는 다수의 데이터에 대응되는 다수의 업데이트 주기 중 최단주기를 기반으로 설정되는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  12. 제 11항에 있어서,
    상기 해당 그룹에 빈 페이지가 없을 경우 새로운 블록을 할당하여 상기 해당 그룹에 추가하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
  13. 제 11항에 있어서,
    상기 해당 그룹이 존재하지 않는 경우 그룹에 포함되지 않은 블록에 상기 업데이트된 데이터를 저장하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리의 데이터 클러스터링 방법.
KR1020080062735A 2008-06-30 2008-06-30 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법 Expired - Fee Related KR101027112B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080062735A KR101027112B1 (ko) 2008-06-30 2008-06-30 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법
US12/493,346 US20090327592A1 (en) 2008-06-30 2009-06-29 Clustering device for flash memory and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080062735A KR101027112B1 (ko) 2008-06-30 2008-06-30 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법

Publications (2)

Publication Number Publication Date
KR20100002731A KR20100002731A (ko) 2010-01-07
KR101027112B1 true KR101027112B1 (ko) 2011-04-05

Family

ID=41448932

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080062735A Expired - Fee Related KR101027112B1 (ko) 2008-06-30 2008-06-30 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법

Country Status (2)

Country Link
US (1) US20090327592A1 (ko)
KR (1) KR101027112B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI417721B (zh) * 2010-11-26 2013-12-01 Etron Technology Inc 衰減熱資料之方法
EP2715510B1 (en) * 2011-05-24 2018-05-02 Marvell World Trade Ltd. Method for storage devices to achieve low write amplification with low over provision
KR101949671B1 (ko) 2012-06-28 2019-04-25 삼성전자 주식회사 라이프 싸이클을 증가시킬 수 있는 저장 장치 및 그 동작 방법
CN103577240B (zh) * 2012-07-25 2018-12-11 腾讯科技(深圳)有限公司 系统自动清理方法、装置及存储介质
KR101419335B1 (ko) * 2012-11-23 2014-07-16 한양대학교 산학협력단 멀티 레벨 셀 플래시 메모리의 페이지 단위 클러스터링 장치 및 방법
EP2797003A1 (en) * 2013-04-26 2014-10-29 Giesecke & Devrient GmbH Method for flash memory management of a secure element
GB2521895B (en) * 2014-09-25 2015-12-16 Grenade Uk Ltd Drinking vessel
CN106250064B (zh) * 2016-08-19 2020-05-12 深圳大普微电子科技有限公司 固态硬盘控制装置和基于学习的固态硬盘数据存取方法
US10949113B2 (en) * 2018-01-10 2021-03-16 SK Hynix Inc. Retention aware block mapping in flash-based solid state drives
KR102692901B1 (ko) 2019-01-11 2024-08-08 에스케이하이닉스 주식회사 메모리 시스템에서의 비휘발성 메모리 블록 내 데이터를 삭제하는 방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
JP4372134B2 (ja) * 2006-09-29 2009-11-25 株式会社日立製作所 データ比較機能を有するストレージシステム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jeong-Uk Kang et al.,"A Superblock-based Flash Translation Layer for NAND Flash Memory", Proceedings of the 6th ACM & IEEE International conference on Embedded software, pages 161-170, Seoul, Korea, O
Mei-Ling Chiang et al.,"Using Data Clustering to Improve Cleaning Performance for Flash Memory", Softw. Pract. Exper., 29(3), pages 267-290, 1999.

Also Published As

Publication number Publication date
US20090327592A1 (en) 2009-12-31
KR20100002731A (ko) 2010-01-07

Similar Documents

Publication Publication Date Title
KR101027112B1 (ko) 플래시 메모리의 클러스터링 장치 및 그 클러스터링 방법
US11579773B2 (en) Memory system and method of controlling memory system
US10275162B2 (en) Methods and systems for managing data migration in solid state non-volatile memory
CN110678836B (zh) 用于键值存储的持久性存储器
US8176235B2 (en) Non-volatile memories with enhanced write performance and endurance
KR100789406B1 (ko) 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US9235530B2 (en) Method and system for binary cache cleanup
US20120317337A1 (en) Managing data placement on flash-based storage by use
US20110055458A1 (en) Page based management of flash storage
WO2011061724A1 (en) Memory controller and methods for enhancing write performance of a flash device
JP2012221251A (ja) メモリシステムの制御方法、情報処理装置、及びプログラム
JP2015001909A (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
CN106569962A (zh) 一种基于增强时间局部性的热点数据识别方法
KR20090024971A (ko) 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
KR101180406B1 (ko) 비휘발성 메모리 시스템 및 블럭 관리 방법
KR101033465B1 (ko) 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법
Ross Modeling the performance of algorithms on flash memory devices
JP6666405B2 (ja) メモリシステムおよび制御方法
CN112997162B (zh) 一种删除内存中索引项的方法、装置
KR100994052B1 (ko) 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치
EP4137952A1 (en) Lifecycle-aware persistent storage
KR20110021417A (ko) 플래시 메모리 시스템 및 그것의 내용기반 블록 관리 방법
Kim et al. A wear-leveling algorithm exploiting k-bitwise operations for flash storage devices
KR100885026B1 (ko) 플래시 메모리의 마모도 평준화 방법
CN117785055A (zh) 垃圾回收方法、闪存设备控制器及闪存设备

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

R15-X000 Change to inventor requested

St.27 status event code: A-3-3-R10-R15-oth-X000

R16-X000 Change to inventor recorded

St.27 status event code: A-3-3-R10-R16-oth-X000

D13-X000 Search requested

St.27 status event code: A-1-2-D10-D13-srh-X000

D14-X000 Search report completed

St.27 status event code: A-1-2-D10-D14-srh-X000

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

AMND Amendment
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

T11-X000 Administrative time limit extension requested

St.27 status event code: U-3-3-T10-T11-oth-X000

AMND Amendment
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

E601 Decision to refuse application
PE0601 Decision on rejection of patent

St.27 status event code: N-2-6-B10-B15-exm-PE0601

J201 Request for trial against refusal decision
PJ0201 Trial against decision of rejection

St.27 status event code: A-3-3-V10-V11-apl-PJ0201

AMND Amendment
P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000

PB0901 Examination by re-examination before a trial

St.27 status event code: A-6-3-E10-E12-rex-PB0901

B701 Decision to grant
PB0701 Decision of registration after re-examination before a trial

St.27 status event code: A-3-4-F10-F13-rex-PB0701

GRNT Written decision to grant
PR0701 Registration of establishment

St.27 status event code: A-2-4-F10-F11-exm-PR0701

PR1002 Payment of registration fee

St.27 status event code: A-2-2-U10-U11-oth-PR1002

Fee payment year number: 1

PG1601 Publication of registration

St.27 status event code: A-4-4-Q10-Q13-nap-PG1601

FPAY Annual fee payment

Payment date: 20140226

Year of fee payment: 4

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 4

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

FPAY Annual fee payment

Payment date: 20150311

Year of fee payment: 5

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 5

L13-X000 Limitation or reissue of ip right requested

St.27 status event code: A-2-3-L10-L13-lim-X000

U15-X000 Partial renewal or maintenance fee paid modifying the ip right scope

St.27 status event code: A-4-4-U10-U15-oth-X000

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 6

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

FPAY Annual fee payment

Payment date: 20170405

Year of fee payment: 7

PR1001 Payment of annual fee

St.27 status event code: A-4-4-U10-U11-oth-PR1001

Fee payment year number: 7

P22-X000 Classification modified

St.27 status event code: A-4-4-P10-P22-nap-X000

LAPS Lapse due to unpaid annual fee
PC1903 Unpaid annual fee

St.27 status event code: A-4-4-U10-U13-oth-PC1903

Not in force date: 20180330

Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

PC1903 Unpaid annual fee

St.27 status event code: N-4-6-H10-H13-oth-PC1903

Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE

Not in force date: 20180330

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

PN2301 Change of applicant

St.27 status event code: A-5-5-R10-R13-asn-PN2301

St.27 status event code: A-5-5-R10-R11-asn-PN2301

R18 Changes to party contact information recorded

Free format text: ST27 STATUS EVENT CODE: A-5-5-R10-R18-OTH-X000 (AS PROVIDED BY THE NATIONAL OFFICE)

R18-X000 Changes to party contact information recorded

St.27 status event code: A-5-5-R10-R18-oth-X000