KR20090002839A - 플래시 메모리를 위한 색인 스킴 - Google Patents

플래시 메모리를 위한 색인 스킴 Download PDF

Info

Publication number
KR20090002839A
KR20090002839A KR1020070067129A KR20070067129A KR20090002839A KR 20090002839 A KR20090002839 A KR 20090002839A KR 1020070067129 A KR1020070067129 A KR 1020070067129A KR 20070067129 A KR20070067129 A KR 20070067129A KR 20090002839 A KR20090002839 A KR 20090002839A
Authority
KR
South Korea
Prior art keywords
node
index
leaf
nodes
leaf node
Prior art date
Application number
KR1020070067129A
Other languages
English (en)
Other versions
KR100922389B1 (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 KR1020070067129A priority Critical patent/KR100922389B1/ko
Priority to US12/167,324 priority patent/US9058253B2/en
Priority to TW097125122A priority patent/TWI515561B/zh
Priority to CN2008101319860A priority patent/CN101339538B/zh
Publication of KR20090002839A publication Critical patent/KR20090002839A/ko
Application granted granted Critical
Publication of KR100922389B1 publication Critical patent/KR100922389B1/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/7202Allocation control and policies
    • 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/7206Reconfiguration of flash memory system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

여기에 개시된 색인 스킴은 하나의 리프 노드 및 리프 노드와 관련있는 인덱스 노드들을 플래시 메모리의 하나의 페이지에 저장함으로써 하나의 리프 노드에 대한 수정, 삽입 또는 삭제를 위한 플래시 메모리의 기입 동작을 최소화할 수 있다. 그러므로 플래시 메모리에 대한 액세스 소요 시간이 단축되고, 기입 횟수를 최소화함에 따라서 플래시 메모리의 수명이 연장된다.
색인, 트리, 플래시 메모리, SSD

Description

플래시 메모리를 위한 색인 스킴{INDEXING SCHEME FOR FLASH MEMORY}
본 발명은 플래시 메모리에 관한 것으로, 좀 더 구체적으로는 플래시 메모리를 위한 색인 스킴에 관한 것이다.
플래시 메모리 장치는 메모리 칩 안에 정보를 유지하기 위해 전력이 필요없는 비휘발성 메모리 장치이다. 게다가, 비록 퍼스널 컴퓨터에서 메인 메모리로 사용되는 DRAM만큼 빠르지는 않지만, 플래시 메모리 장치는 읽기 속도가 빠르며 하드디스크보다 충격에 강하다. 이러한 특징으로 인해 배터리로 동작하는 디바이스에서 저장 장치로서 많이 사용되고 있다. 플래시 메모리 장치의 또다른 매력은 강한 압력이나 끊는 물에 견딜 만큼, 물리적 수단으로 거의 파괴되지 않는다는 점이다.
플래시 메모리 장치는 전기적으로 데이터를 지우고 재기록이 가능한 비휘발성 컴퓨터 기억 장치를 말한다. EEPROM과 다르게, 플래시 메모리 장치는 블록 단위로 지우고 쓰기가 가능하다. 플래시 메모리 장치는 EEPROM보다 비용이 덜 들기 때문에 대용량의 비휘발성, 고체상태(solid-state) 스토리지가 필요한 경우 주로 사용된다. 대표적인 활용 예로 디지털 음악 재생기, 디지털 카메라, 핸드폰을 들 수 있다. 일반적인 데이터를 저장과 컴퓨터간에 데이터를 옮기는 용도로 USB 드라이브 를 많이 사용하는데, 이때도 플래시 메모리 장치가 사용되고 있다.
자기 디스크를 기계적으로 구동시켜 데이터를 읽고 써야 하는 하드디스크는 구조적으로 속도 향상에 어려움이 있다. 최근에는 고용량 저장 장치로서 하드디스크 대신 플래시 메모리를 사용하고자 하는 노력들이 계속되고 있다. 특히 플래시 메모리 장치에 부트 코드를 저장하는 경우 시스템의 부팅 속도가 빨라지는 장점이 있다.
그러므로 본 발명의 목적은 플래시 메모리를 위한 색인 스킴을 제공하는데 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 일 특징에 의하면, 복수의 페이지들을 포함하는 플래시 메모리의 트리 구조에 기반한 색인 방법은: 리프 노드 및 상기 리프 노드와 관련있는 인덱스 노드를 동일한 페이지에 저장하는 단계를 포함한다.
이 실시예에 있어서, 상기 페이지들 각각은 상기 리프 노드 또는 상기 인덱스 노드를 최대 k(k는 양의 정수)개 저장한다.
이 실시예에 있어서, 상기 플래시 메모리는 상기 페이지 단위로 독출 또는 기입된다.
이 실시예에 있어서, 하나의 페이지에 저장되는 상기 리프 노드 또는 상기 인덱스 노드의 수는 트리 높이에 의존적이다.
이 실시예에 있어서, 상기 인덱스 노드들 중 가장 상위의 노드는 루트 노드이다.
이 실시예에 있어서, 상기 색인 방법은 상기 리프 노드를 정정하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 정정 단계는, 상기 정정되는 리프 노드와 관련있 는 상기 인덱스 노드의 포인터를 변경하는 단계, 그리고 상기 정정되는 리프 노드 및 상기 정정된 인덱스 노드를 새로운 페이지에 저장하는 단계를 포함한다.
이 실시예에 있어서, 상기 색인 방법은 새로운 리프 노드를 삽입하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 삽입 단계는, 상기 새로운 리프 노드와 관련있는 상기 인덱스 노드의 포인터를 변경하는 단계, 그리고 상기 새로운 리프 노드 및 상기 새로운 리프 노드와 관련있는 인덱스 노드들을 새로운 페이지에 저장하는 단계를 포함한다.
상기 삽입 단계는, 상기 새로운 리프 노드와 관련있는 상기 인덱스 노드가 가득 찼는지 판별하는 단계와, 상기 새로운 리프 노드와 관련있는 상기 인덱스 노드가 가득 찼을 때 상기 인덱스 노드를 제1 및 제2 인덱스 노드들로 분리하는 단계, 그리고 상기 제1 및 제2 인덱스 노드들의 상위 인덱스 노드를 생성하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 색인 방법은 상기 리프 노드에 새로운 키 값을 삽입하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 키 값 삽입 단계는, 상기 새로운 키 값이 삽입될 상기 리프 노드가 가득 찼는지를 판별하는 단계와, 상기 새로운 키 값이 삽입될 상기 리프 노드가 가득 찼을 때 상기 리프 노드를 제1 및 제2 리프 노드들로 분리하는 단계, 그리고 상기 분리된 제1 및 제2 리프 노드들 중 어느 하나에 상기 새로운 키 값을 삽입하는 단계를 포함한다.
이 실시예에 있어서, 상기 제1 및 제2 리프 노드들은 상기 플래시 메모리의 새로운 페이지들에 각각 저장된다.
상기 키 값 삽입 단계는, 상기 새로운 키 값이 삽입된 상기 리프 노드와 관련있는 인덱스 노드가 가 득 찼는지 판별하는 단계와, 상기 새로운 리프 노드와 관련있는 상기 인덱스 노드가 가득 찼을 때 상기 인덱스 노드를 제1 및 제2 인덱스 노드들로 분리하는 단계, 그리고 상기 제1 및 제2 인덱스 노드들의 상위 인덱스 노드를 생성하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 제1 인덱스 노드는 상기 제1 및 제2 리프 노드들 중 하나와 동일한 페이지에 저장되고, 상기 제2 인덱스 노드는 상기 상위 인덱스 노드와 함께 새로운 페이지에 저장된다.
이 실시예에 있어서, 상기 리프 노드를 삭제하는 단계를 더 포함한다.
상기 삭제 단계는, 상기 삭제된 리프 노드와 관련있는 인덱스 노드가 다른 리프 노드를 지정하고 있는 지를 판별하는 단계, 그리고 상기 삭제된 리프 노드와 관련있는 인덱스 노드가 다른 리프 노드를 지정하고 있지 않을 때 상기 인덱스 노드를 삭제하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 삭제 단계는, 상기 트리의 루트 노드의 자식 노드의 수가 ‘1’로 감소될 때 상기 트리의 높이를 1만큼 감소시키는 단계, 그리고 상기 루트 노드의 자식 노드를 새로운 루트 노드로 설정하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 삭제 단계는, 상기 새로운 루트 노드를 새로운 페이지에 저장하는 단계를 더 포함한다.
이 실시예에 있어서, 상기 색인 방법은 μ-트리 구조에 기반한다.
본 발명의 다른 특징에 따른 시스템은: 복수의 페이지들을 포함하는 플래시 메모리, 그리고 상기 플래시 메모리를 액세스하는 프로세서를 포함하되, 상기 프로세서는 청구항 1에 기재된 색인 방법을 수행한다.
이와 같은 본 발명에 의하면, 하나의 리프 노드 및 리프 노드와 관련있는 인덱스 노드들을 플래시 메모리의 하나의 페이지에 저장함으로써 하나의 리프 노드에 대한 수정, 삽입 또는 삭제를 위한 플래시 메모리의 기입 동작을 최소화할 수 있다. 그러므로, 플래시 메모리에 대한 액세스 소요 시간이 단축되고, 기입 횟수를 최소화함에 따라서 플래시 메모리의 수명이 연장되는 효과를 얻을 수 있다.
이하 본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다.
μ-트리는 B-트리를 변형한 트리 구조로서, 리프 노드(leaf node)와 인덱스 노드(index node)로 구성된다. 리프 노드는 순차 자료 즉, 키 값들을 포함하며, 키값 들은 올림차순(asending)으로 정렬된다. 인덱스 노드는 리프 노드에 있는 키 값을 신속하게 찾을 수 있도록 키 값들과 포인터들을 포함한다. B 트리와 달리 μ-트리는 리프 노드가 순차적 순서로 링크 리스트(linked list)를 구성하고 있어서 키 값들이 순차적으로 처리될 수 있다. 이러한 μ-트리는 하드 디스크와 같은 저장 매체에 저장된 데이터 또는 데이터 베이스를 액세스하는 인덱스(index)로 널리 사용되고 있다.
본 발명은 μ-트리에 기반한 새로운 μ-트리를 제공한다.
도 1은 일반적인 B+ 트리 구조가 플래시 메모리에 저장된 일 예를 보여주는 도면이다.
도 1에 도시된 B+ 트리(a)는 높이(height, H)가 3, 리프 노드의 수가 3, 인덱스 노드의 수가 3이다. 즉, 리프 노드는 D, E, F이고, 인덱스 노드는 B, C, A이다. 인덱스 노드들 중 최상위 인덱스 노드(A)는 루트 노드(root node)라 불린다. B+ 트리의 높이가 1일 때 "루트 노드=리프 노드" 그리고 B+ 트리의 높이가 2이상일 때 "루트 노드=인덱스 노드"이다.
인덱스 노드들 각각은 키 값들 및 포인터들을 포함한다. 예컨대, 인덱스 노드(A)는 인덱스 노드들(B, C)의 페이지 어드레스들(P5, P4)를 포함하며, 인덱스 노드(B)는 리프 노드들(D, E)의 페이지 어드레스들(P3, P2)을 포함한다.
B+ 트리(a)의 인덱스 노드들 및 리프 노드들 각각은 플래시 메모리(b)의 페이지(page)에 각각 저장된다. 일반적으로 플래시 메모리는 블록(block) 단위로 소거되며, 페이지 단위로 독출 및 기입된다.
도 2는 B+ 트리 구조에서 어느 한 리프 노드에 대한 수정이 이루어진 후 변경된 B+ 트리 구조 및 플래시 메모리에 저장된 예를 보여준다.
일반적으로 플래시 메모리에서 이미 데이터가 기입된 셀에 새로운 데이터를 기입하기 위해서는 소거 동작이 수행되어야 한다. 만일 소거 동작 없이 새로운 대이터를 기입하기 위해서는 미리 소거된 새로운 페이지에 데이터를 기입해야만 한 다. 따라서 B+ 트리(c)의 리프 노드(F) 내 키 값을 삽입 또는 삭제하기 위해서는 플래시 메모리(d)의 새로운 페이지(P7)에 수정된 리프 노드(F')를 기입해야 한다. 인덱스 노드(C)는 리프 노드(F')의 페이지(P7)를 지정하도록 인덱스 노드(C')로 정정되어야 하고, 또한 인덱스 노드(A)는 인덱스 노드(C')가 저장된 페이지(P8)를 지정하도록 인덱스 노드(A')로 정정되어야 한다. 이와 같이 리프 노드(F)에 대한 수정은 리프 노드(F)와 관련있는 인덱스 노드들(C, A)에 대한 수정을 초래한다. 즉, 어느 한 리프 노드를 수정, 삽입 또는 삭제하기 위해서는 적어도 B+ 트리의 높이(H) 만큼의 기입 동작이 수행되어야 한다.
일반적으로 낸드 플래시 메모리에서 기입 동작이 독출 동작보다 더 많은 시간이 소요되고, 한 블록당 기입 횟수가 제한적이므로, 색인 구조의 수정에 많은 시간이 소요될 뿐만 아니라 낸드 플래시 메모리의 수명이 단축될 수 있다.
도 3은 본 발명의 바람직한 실시예에 따른 μ-트리를 플래시 메모리에 저장하는 새로운 스킴을 개념적으로 보여주고 있다.
도 3을 참조하면, μ-트리(e)에서 어느 한 리프 노드 및 그 리프 노드와 관련있는 인덱스 노드들은 동일한 페이지에 기입된다. 즉, 리프 노드(F) 및 리프 노드(F)의 부모 노드(parent node)인 인덱스 노드들(C, A)은 페이지(P1)에 저장되고, 리프 노드(E) 및 인덱스 노드들(B, A)은 페이지(P2)에 저장되며 그리고 리프 노드(D) 및 인덱스 노드들(B, A)은 페이지(P3)에 저장된다. 단, 리프 노드(E) 및 인덱스 노드들(B, A)이 페이지(P2)에 저장될 때, 인덱스 노드(A)가 인덱스 노드들(B, C)이 저장된 페이지를 지정하므로, 페이지(P1)에 저장된 인덱스 노드(A)는 무효 화(invalid) 된다. 마찬가지로, 리프 노드(D) 및 인덱스 노드들(B, A)이 페이지(P3)에 저장될 때, 인덱스 노드(A)의 포인터는 인덱스 노드들(C, B)이 저장된 페이지들(P1, P2)을 지정하고, 인덱스 노드(B)의 포안터가 리프 노드들(D, E)이 저장된 페이지들(P3, P2) 을 지정하므로 페이지(P2)에 저장된 인덱스 노드(B)는 무효화된다. 즉, 페이지(P2)에 저장된 인덱스 노드(B)에 대한 액세스는 발생하지 않는다. 다시 말하면, 마지막 페이지(P3)의 루트 노드인 인덱스 노드(A)로부터 자식 노드들 순으로 검색이 이루어지므로, 페이지(P1)에 저장된 인덱스 노드(A) 및 페이지(P2)에 저장된 인덱스 노드들(A, B)에 대한 실제 액세스는 이루어지지 않는다.
도 4는 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 수정하는 스킴을 개념적으로 보여준다.
도 4를 참조하면, 리프 노드(F)에 대한 수정을 위하여 리프 노드(F) 뿐만 아니라 인덱스 노드들(C, A)도 수정되어야만 한다. 왜냐하면, 수정된 리프 노드(F')가 새로운 페이지(P4)에 저장된다면 리프 노드(F')를 지정하는 인덱스 노드(C)는 페이지(P1) 대신에 페이지(P4)를 지정하도록 포인터를 수정한 인덱스 노드(C')로 정정되어야 하고, 인덱스 노드(A)는 인덱스 노드(C')를 지정하기 위해서 포인터를 수정한 인덱스 노드(A')로 정정되어야 한다. 여기서, 프라임(') 표시는 리프/인덱스 노드의 키 값/포인터가 정정되었음을 의미한다.
정정된 노드들(F', C', A')은 페이지(P4)에 저장된다. 즉, 하나의 리프 노드(F)에 대한 수정을 위해서 오직 하나의 페이지(P4)에 대한 기입 동작이 수행된다. 그러므로, 리프 노드에 대한 수정 동작에 소요되는 시간이 단축되고 플래시 메모리 사용이 최소화된다. 이와 같은 본 발명의 색인 스킴에 의하면 플래시 메모리에 대한 기입 횟수가 최소화되어서 플래시 메모리의 수명이 연장될 수 있다.
도 4에 도시된 플래시 메모리(h)에서 리프 노드에 대한 검색이 수행될 때 우선 마지막 페이지(P4)에 저장된 루트 노드(A')부터 자식 노드 순으로 검색이 이루어진다. 즉, 루트 노드(A')는 인덱스 노드들(B, C')을 지정하고, 인덱스 노드(B)는 리프 노드들(D, E)을 지정하며, 인덱스 노드(C')는 리프 노드(F')를 지정한다. 이와 같은 본 발명의 플래시 메모리를 위한 색인 스킴은 μ-트리의 검색 스킴에 적합하다.
도 5는 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리에 새로운 리프 노드를 삽입하는 스킴을 개념적으로 보여준다.
리프 노드(G)를 삽입하고자 할 때 리프 노드(G)와 관련있는 부모 노드들 즉, 인덱스 노드들(C, A)이 정정되어야한다. 도 5를 참조하면, μ-트리(i)에 삽입된 리프 노드(G) 및 수정된 인덱스 노드들(C', A')이 플래시 메모리(j)의 페이지(P4)에 저장된다. 수정된 인덱스 노드(C')는 리프 노드(F)가 저장된 페이지(P1) 및 리프 노드(G)가 저장된 페이지(P4)를 지정하기 위한 포인터를 포함한다.
이와 같이, 새로운 리프 노드의 삽입 동작 또한 한 번의 쓰기 동작에 의해서 수행될 수 있음을 알 수 있다. 만일 새로운 리프 노드(G)의 삽입 후 인덱스 노드(C')가 곽 차면 인덱스 노드(C')에 대한 분리(split)가 수행되어야 한다. 이는 추후 상세히 설명된다.
도 6은 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 삭제하는 스킴을 개념적으로 보여준다.
도 6을 참조하면, μ-트리(k)에서 리프 노드(E)를 삭제하고자 할 때 리프 노드(E)와 관련있는 부모 노드들 즉, 인덱스 노드들(B, A)이 정정되어야 한다. μ-트리(i)에서 삭제된 리프 노드(E)와 관련있는 수정된 인덱스 노드들(B', A')이 페이지(P4)에 저장된다. 수정된 인덱스 노드(B')는 리프 노드(D)가 저장된 페이지(P3)를 지정하며, 수정된 인덱스 노드(A')는 수정된 인덱스 노드(B') 및 인덱스 노드(C)를 지정한다. 플래시 메모리(l)의 페이지(P5)에는 수정된 인덱스 노드들(A', B')이 저장된다.
도 7은 본 발명의 바람직한 실시예에 따라서 도 6에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 삭제하는 스킴을 개념적으로 보여준다.
μ-트리(m)에서 리프 노드(D)를 삭제하고자 할 때 리프 노드(E)와 관련있는 부모 노드들 즉, 인덱스 노드들(B, A)이 정정되어야 한다. 도 6을 참조하면, μ-트리(m)에서 리프 노드(D)를 삭제하면, 인덱스 노드(B)는 어떠한 리프 노드도 지정하지 않는다. 그러므로, 자식 노드가 없는 인덱스 노드(B)는 삭제되어야 한다. 루트 노드인 인덱스 노드(A)는 인덱스 노드(C)가 저장된 페이지(P5) 만을 지정하게 되므로 인덱스 노드(C)는 루트 노드로 정정될 수 있다. 즉, 인덱스 노드(C)는 루트 노드로 변경되며, 리프 노드들(F, G)이 저장된 페이지들(P1, P4)을 지정한다.
도 6 및 도 7에 도시된 바와 같이, 리프 노드를 삭제하기 위한 동작은 플래시 메모리에 한 번의 쓰기 동작에 의해서 달성될 수 있다. 리프 노드에 대한 삭제 동작에 소요되는 시간이 단축되고 플래시 메모리 사용이 최소화된다. 본 발명의 색인 스킴은 플래시 메모리에 대한 기입 횟수를 최소화시킴으로써 플래시 메모리의 수명을 연장한다.
앞서 설명한 바와 같이 μ-트리의 리프 노드에 대한 수정, 삽입 또는 삭제는 리프 노드부터 루트 노드까지 순차적으로 이루어지고, 수정, 삽입 또는 삭제되는 리프 노드와 관련된 비리프 노드 즉, 인덱스 노드들은 한 페이지에 저장된다. 그러므로, 플래시 메모리의 한 페이지는 리프 노드부터 루트 노드까지 모두 저장 가능하도록 설계되어야 한다.
도 8은 높이(H)의 증가에 따라서 한 페이지에 저장되는 리프/인덱스 노드의 최대 저장 가능 크기의 변화를 보여준다. 플래시 메모리의 한 페이지의 크기가 4096byte 일 때 높이(H)가 1이면 루트 노드(811)의 크기는 4098byte 전체이다. 높이(H)가 2이면, 루트 노드(821)의 크기는 2048byte이고, 리프 노드(821)의 크기 또한 2048byte이다. 높이(H)가 3으로 증가하면 루트 노드(831) 및 인덱스 노드(832) 각각의 크기는 1024byte이고, 리프 노드(833)의 크기는 2048byte이다. 높이(H)가 4로 증가하면 루트 노드(841), 인덱스 노드(842) 각각의 크기는 512byte이고, 인덱스 노드(843)는 1024byte 그리고 리프 노드(844)의 크기는 2048byte이다.
즉, 높이(H)가 증가함에 따라 리프 노드들(822, 833, 844)의 크기는 2048byte로 유지되나, 높이(H)가 증가할 때마다 루트 노드들(811, 821, 831)의 크기는 1/2씩 감소한다. μ-트리가 플래시 메모리에 저장될 때 μ-트리의 최대 높이는 루트 노드의 데이터 크기 및 플래시 메모리의 한 페이지의 크기에 따라서 결정됨을 알 수 있다.
또한 하나의 트리 내에서의 레벨에 따라서 각 인덱스/리프 노드의 최대 크기가 다르다. 예컨대, 높이(H)가 4일 때 레벨 4인 리프 노드(844)의 최대 크기는 2048 bytes이고, 레벨 3인 인덱스 노드(843)의 최대 크기는 1024bytes, 레벨 2인 인덱스 노드(842)의 최대 크기는 512bytes 그리고 레벨 1인 루트 노드(841)의 최대 크기는 512bytes이다.
플래시 메모리는 퍼스널 컴퓨터, 노트북, 디지털 음악 재생기, 디지털 카메라, 핸드폰 등과 같은 다양한 전자 장치들에 내장되거나 연결되어서 사용된다. 이러한 전자 장치들에 내장/연결된 플래시 메모리는 전자 장치 내 프로세서에 의해서 제어된다.
도 9a는 루트 노드 및 리프 노드로 구성된 μ-트리의 일 예를 보여준다. 도 9b는 도 9a에 도시된 μ-트리의 리프 노드(X2) 내 키 값이 삽입되는 과정을 예시적으로 보여주는 도면이다. 도 9b에 도시된 예에서 플래시 메모리의 한 페이지에 저장 가능한 루트 노드 또는 리프 노드의 키 값의 갯수는 최대 100개 이다. 도 9c는 도 9b에 도시된 키 값 삽입 동작이 수행된 후 변화된 μ-트리를 보여준다.
도 10은 프로세서의 제어에 의해서 μ-트리의 리프 노드에 키 값이 삽입되는 과정을 보여주는 플로우차트이다.
도 9b 및 도 10을 참조하면, 먼저 플래시 메모리의 페이지(P11)에 저장된 리프 노드(X2)에 키 값을 삽입한다(1000). 키 값이 삽입될 리프 노드(X2)가 꽉차 있으므로(저장된 키 값의 수/최대 저장 가능한 키 값의 수 = 50/50) 리프 노드(X2)는 두 개의 리프 노드들(X21, X22)로 분리되어서 두 개의 버퍼 메모리들(M11, M12)에 임시로 저장된다. 이 때 새로 삽입된 리프 노드는 버퍼 메모리(M11)의 리프 노드(X21)에 저장되고, 새로운 리프 노드들(X21, X22)를 지정하는 루트 노드(X1')는 버퍼 메모리(M12)에 저장된다.
이전 페이지(P11)에 저장된 루트 노드(X1)에 포함된 포인터의 수는 (49/50) 개이고, 리프 노드(X2)가 리프 노드들(X21, X22)로 분리됨에 따라서 리프 노드(X21)를 지정하기 위한 새로운 포인터가 추가됨으로써 루트 노드(X1')에는 (50/50) 개의 포인터들이 포함된다.
루트 노드(X1')가 가득 찼으므로(1010), 인덱스 노드(X1')는 두 개의 인덱스 노드들(X11, X12)로 분리된다(1020). μ-트리의 높이(H)가 1 증가된다(1030). 리프 노드들(X21, X22)를 지정하는 인덱스 노드(X11)는 플래시 메모리의 페이지(P13)에 저장되고, 분리된 인덱스 노드(X12)는 페이지(P14)에 저장된다. 인덱스 노드들(X11, X12)을 지정하기 위한 새로운 루트 노드(X0)가 생성된다. 루트 노드(X0)는 인덱스 노드(X12)와 함께 페이지(P14)에 저장된다.
이와 같이 새로운 키 값이 리프 노드에 삽입될 때 리프 노드가 꽉 차있다면 분리 동작에 의해서 리프 노드들이 분리된다. 리프 노드들의 분리에 의해서 루트 노드가 꽉 찼다면 루트 노드은 두 개의 인데스 노드들로 분리되고, 새로운 루트 노드가 생성된다. 새로운 키 값의 삽입에 의해서 리프 노드 또는 루트 노드가 꽉 차더라도 본 발명의 색인 스킴은 최소한의 기입 동작을 수행한다.
또한 본 발명의 색인 스킴은 플래시 메모리의 한 페이지에 직계 관계의 노드들만이 저장되도록 한다. 따라서 가비지 컬렉션(garbage collection) 등과 같은 작업이 용이하게 수행될 수 있다. 즉, 한 페이지에서 가장 낮은 레벨의 노드(리프 노드)에 대해서만 유효성 검사를 하는 것만으로도 그 페이지 전체에 대한 유효성을 확인할 수 있다.
도 11a는 μ-트리의 키 값 삭제 스킴을 설명하기 위해서 μ-트리의 일 예를 보여주는 도면이다. 도 11b는 도 11a에 도시된 μ-트리의 어느 한 리프 노드에서 키 값이 삭제되는 과정을 예시적으로 보여준다. 도 11b에 도시된 예에서 플래시 메모리의 한 페이지에 저장 가능한 루트 노드 또는 리프 노드 내 키 값의 최대 갯수는 100개 이다. 도 11c는 11a에 도시된 μ-트리에서 키 값이 삭제된 후 변화된 μ-트리 구조를 보여주는 도면이다.
도 12는 프로세서의 제어에 의해서 μ-트리의 리프 노드 내 키 값이 제거되는 과정을 보여주는 플로우차트이다.
도 11b 및 도 12을 참조하면, 리프 노드(Y5)의 키 값이 삭제된다(1200). 리프 노드(Y5) 내 키 값이 삭제된 후 리프 노드(Y5) 내 키 값이 존재 하지 않으면 리프 노드(Y5)는 삭제된다. 리프 노드(Y5)가 삭제되면 인덱스 노드(Y3)의 자식 노드가 없어지며 루트 노드(Y1)의 자식 노드는 인덱스 노드(Y2) 1개만 남게 된다. 인덱스 노드(Y2) 만을 지정하도록 수정된 루트 노드(Y1')는 버퍼 메모리(M21)에 저장된다.
루트 노드(Y1')의 자식 노드의 수가 1개일 때(1210) μ-트리의 높이(H)는 1만큼 감소된다. 도 11b에 도시된 예에서 μ-트리의 높이(H)는 3에서 2로 감소된다(1220). 그 결과, 인덱스 노드(Y2)는 루트 노드(Y2')로 정정되어서 플래시 메모 리의 페이지(P23)에 저장된다(1230). 그러므로 도 11a에 도시된 μ-트리는 리프 노드(Y2) 내 키 값이 삭제된 후 도 11c에 도시된 바와 같이, 리프 노드(Y4)와 루트 노드(Y2')로 변경된다.
이와 같이 본 발명의 색인 스킴은 μ-트리의 인덱스/리프 노드의 크기를 제함함으로써 리프 노드 및 리프 노드와 관련있는 부모 노드들(인덱스 노드 및 루트 노드)을 플래시 메모리의 한 페이지에 저장할 수 있다. 그러므로, μ-트리의 노드를 정정, 삽입 또는 삭제할 때 플래시 메모리에 데이터를 기입하는 동작을 최소화할 수 있다. 따라서 플래시 메모리의 수명이 연장되는 효과를 얻을 수 있다. μ-트리의 인덱스/리프 노드의 크기가 제한됨에 따라서 μ-트리의 높이가 높아질 수 있으나 플래시 메모리의 독출 동작 속도는 기입 동작 속도에 비해 더 빠르므로 다수의 작업 부하(workload) 상황에서 본 발명의 색인 스킴은 속도가 향상된다.
도 13은 본 발명의 바람직한 실시예에 따른 색인 스킴을 채용한 전자 장치의 구성을 보여주는 도면이다.
도 13을 참조하면, 전자 장치(1300)는 시스템 버스(1301)와 연결된 프로세서(1310), 디스플레이(1320), 키패드(1330), 플래시 메모리(1340), ROM(read only memory, 1350) 그리고 RAM(random access memory, 1360)를 포함한다. 이와 같은 구성을 갖는 전자 장치(1300)는 파일 시스템을 플래시 메모리(1340)에 저장한다. 여기서, 플래시 메모리(1340)는 μ-트리 구조에 기반한 본 발명의 색인 스킴을 채용한다. 전자 장치(1300)는 디지털 음악 재생기, 디지털 카메라, 핸드폰, 퍼스널 컴퓨터, PMP(portable multimedia player), 플레이스테이션 등과 같은 기기이다.
프로세서(1310)는 앞서 설명한 색인 스킴에 따라서 플래시 메모리(1340)의 한 페이지에 μ-트리의 리프 노드 및 리프 노드와 관련있는 인덱스 노드들을 저장하고, 리프/인덱스 노드에 대한 정정, 삽입, 또는 삭제를 수행할 수 있다.
도 14는 본 발명의 바람직한 실시예에 따른 색인 스킴을 채용한 메모리 시스템을 보여준다.
도 14를 참조하면, 호스트 (1410)에 메모리 카드(1420)가 연결된다. 메모리 카드(1420)는 메모리 컨트롤러(1422) 및 플래시 메모리(1424)를 포함한다. 메모리 컨트롤러(1422)는 호스트(1410)와 플리 메모리(1424) 사이의 인터페이스를 제공한다. 메모리 컨트롤러(1422)와 플래시 메모리(1424)는 원-칩으로 구성되어서 컴팩트 플레쉬(Compact Flash), 스마트 미디어(Smart Media), 메모리 스틱(Memory Stick), SD 카드(Secure Digital Card), 듀얼미디어 카드(MultiMedia Card) 등으로 구현될 수 있다. 이와 같은 메모리 시스템에서 호스트(1410)는 본 발명의 색인 스킴에 따라서 플래시 메모리(1424)를 액세스할 수 있다.
도 15는 본 발명의 바람직한 실시예에 따른 색인 스킴을 채용한 또다른 전자 장치를 보여준다.
도 15를 참조하면, 전자 장치(1500)는 도 13에 도시된 전자 장치(1300)의 플래시 메모리(1340) 대신 SSD(Solid State Disk, 1540)를 포함한다. 전자 장치(1500)의 다른 구성 및 동작은 도 13에 도시된 전자 장치(1300)와 유사하다.
프로세서(1510)는 앞서 설명한 색인 스킴에 따라서 SSD(1540)의 한 페이지에 μ-트리의 리프 노드 및 리프 노드와 관련있는 인덱스 노드들을 저장하고, 리프/인 덱스 노드에 대한 정정, 삽입, 또는 삭제를 수행할 수 있다.
예시적인 바람직한 실시예를 이용하여 본 발명을 설명하였지만, 본 발명의 범위는 개시된 실시예에 한정되지 않는다는 것이 잘 이해될 것이다. 따라서, 청구범위는 그러한 변형 예들 및 그 유사한 구성들 모두를 포함하는 것으로 가능한 폭넓게 해석되어야 한다.
도 1은 일반적인 B+ 트리 구조가 플래시 메모리에 저장된 일 예를 보여주는 도면;
도 2는 B+ 트리 구조에서 어느 한 리프 노드에 대한 수정이 이루어진 후 변경된 B+ 트리 구조 및 플래시 메모리에 저장된 예를 보여주는 도면;
도 3은 본 발명의 바람직한 실시예에 따라서 μ-트리를 플래시 메모리에 저장하는 새로운 스킴을 개념적으로 보여주는 도면;
도 4는 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 수정하는 스킴을 개념적으로 보여주는 도면;
도 5는 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리에 새로운 리프 노드를 삽입하는 스킴을 개념적으로 보여주는 도면;
도 6은 본 발명의 바람직한 실시예에 따라서 도 3에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 삭제하는 스킴을 개념적으로 보여주는 도면;
도 7은 본 발명의 바람직한 실시예에 따라서 도 6에 도시된 플래시 메모리에 저장된 μ-트리의 리프 노드를 삭제하는 스킴을 개념적으로 보여주는 도면;
도 8은 높이(H)의 증가에 따라서 한 페이지에 저장되는 리프/인덱스 노드의 최대 저장 가능 크기의 변화를 보여주는 도면;
도 9a는 루트 노드 및 리프 노드로 구성된 μ-트리의 일 예를 보여주는 도면;
도 9b는 도 9a에 도시된 μ-트리의 리프 노드 내 키 값이 삽입되는 과정을 예시적으로 보여주는 도면;
도 9c는 도 9b에 도시된 키 값 삽입 동작이 수행된 후 변화된 μ-트리를 보여주는 도면;
도 10은 프로세서의 제어에 의해서 μ-트리의 리프 노드에 키 값이 삽입되는 과정을 보여주는 플로우차트;
도 11a는 μ-트리의 키 값 삭제 스킴을 설명하기 위해서 μ-트리의 일 예를 보여주는 도면;
도 11b는 도 11a에 도시된 μ-트리의 어느 한 리프 노드에서 키 값이 삭제되는 과정을 예시적으로 보여주는 도면;
도 11c는 11a에 도시된 μ-트리에서 키 값이 삭제된 후 변화된 μ-트리 구조를 보여주는 도면;
도 12는 프로세서의 제어에 의해서 μ-트리의 리프 노드 내 키 값이 제거되는 과정을 보여주는 플로우차트;
도 13은 본 발명의 바람직한 실시예에 따른 색인 스킴을 채용한 전자 장치의 구성을 보여주는 도면들; 그리고
도 14는 본 발명의 바람직한 실시예에 따른 색인 스킴을 채용한 메모리 시스템을 보여준다.

Claims (20)

  1. 복수의 페이지들을 포함하는 플래시 메모리의 트리 구조에 기반한 색인 방법에 있어서:
    리프 노드 및 상기 리프 노드와 관련있는 인덱스 노드를 동일한 페이지에 저장하는 단계를 포함하는 것을 특징으로 하는 색인 방법.
  2. 제 1 항에 있어서,
    상기 페이지들 각각은 상기 리프 노드 그리고/또는 상기 인덱스 노드를 최대 k(k는 양의 정수)개 저장하는 것을 특징으로 하는 색인 방법.
  3. 제 2 항에 있어서,
    상기 플래시 메모리는 상기 페이지 단위로 독출 또는 기입되는 것을 특징으로 하는 색인 방법.
  4. 제 3 항에 있어서,
    하나의 페이지에 저장되는 상기 리프 노드 또는 상기 인덱스 노드의 수는 트리 높이에 의존적인 것을 특징으로 하는 색인 방법.
  5. 제 3 항에 있어서,
    하나의 페이지에 저장되는 리프/인덱스 노드의 최대 저장 크기는 리프/인덱스 노드의 레벨에 따라서 결정되는 것을 특징으로 하는 색인 방법.
  6. 제 5 항에 있어서,
    상기 인덱스 노드는 적어도 하나의 리프 노드를 포함하는 것을 특징으로 하는 색인 방법.
  7. 제 6 항에 있어서,
    상기 복수의 인덱스 노드들 중 가장 상위의 인덱스 노드는 루트 노드인 것을 특징으로 하는 색인 방법.
  8. 제 7 항에 있어서,
    상기 리프 노드를 정정하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  9. 제 8 항에 있어서,
    상기 정정 단계는,
    상기 정정되는 리프 노드와 관련있는 상기 인덱스 노드의 포인터를 변경하는 단계; 그리고
    상기 정정되는 리프 노드 및 상기 정정된 인덱스 노드를 새로운 페이지에 저 장하는 단계를 포함하는 것을 특징으로 하는 색인 방법.
  10. 제 7 항에 있어서,
    상기 리프 노드에 새로운 키 값을 삽입하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  11. 제 10 항에 있어서,
    상기 키 값 삽입 단계는,
    상기 새로운 키 값이 삽입될 상기 리프 노드가 가득 찼는지를 판별하는 단계와;
    상기 새로운 키 값이 삽입될 상기 리프 노드가 가득 찼을 때 상기 리프 노드를 제1 및 제2 리프 노드들로 분리하는 단계; 그리고
    상기 분리된 제1 및 제2 리프 노드들 중 어느 하나에 상기 새로운 키 값을 삽입하는 단계를 포함하는 것을 특징으로 하는 색인 방법.
  12. 제 11 항에 있어서,
    상기 제1 및 제2 리프 노드들은 상기 플래시 메모리의 새로운 페이지들에 각각 저장되는 것을 특징으로 하는 색인 방법.
  13. 제 12 항에 있어서,
    상기 키 값 삽입 단계는,
    상기 새로운 키 값이 삽입된 상기 리프 노드와 관련있는 인덱스 노드가 가득 찼는지 판별하는 단계와;
    상기 새로운 리프 노드와 관련있는 상기 인덱스 노드가 가득 찼을 때 상기 인덱스 노드를 제1 및 제2 인덱스 노드들로 분리하는 단계; 그리고
    상기 제1 및 제2 인덱스 노드들의 상위 인덱스 노드를 생성하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  14. 제 13 항에 있어서,
    상기 제1 인덱스 노드는 상기 제1 및 제2 리프 노드들 중 하나와 동일한 페이지에 저장되고, 상기 제2 인덱스 노드는 상기 상위 인덱스 노드와 함께 새로운 페이지에 저장되는 것을 특징으로 하는 색인 방법.
  15. 제 7 항에 있어서,
    상기 리프 노드 내 키 값을 삭제하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  16. 제 15 항에 있어서,
    상기 삭제 단계는,
    상기 삭제된 리프 노드와 관련있는 인덱스 노드가 다른 리프 노드를 지정하 고 있는 지를 판별하는 단계; 그리고
    상기 삭제된 리프 노드와 관련있는 인덱스 노드가 다른 리프 노드를 지정하고 있지 않을 때 상기 인덱스 노드를 삭제하는 단계를 포함하는 것을 특징으로 하는 색인 방법.
  17. 제 16 항에 있어서,
    상기 삭제 단계는,
    상기 트리의 루트 노드의 자식 노드의 수가 1일 때 상기 트리의 높이를 1만큼 감소시키는 단계; 그리고
    상기 루트 노드의 자식 노드를 새로운 루트 노드로 설정하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  18. 제 17 항에 있어서,
    상기 삭제 단계는,
    상기 새로운 루트 노드를 새로운 페이지에 저장하는 단계를 더 포함하는 것을 특징으로 하는 색인 방법.
  19. 복수의 페이지들을 포함하는 플래시 메모리; 그리고
    상기 플래시 메모리를 액세스하는 프로세서를 포함하되;
    상기 프로세서는 청구항 1에 기재된 색인 방법을 수행하는 것을 특징으로 하 는 시스템.
  20. 복수의 페이지들을 포함하는 SSD(Solid State Disk); 그리고
    상기 SSD를 액세스하는 프로세서를 포함하되;
    상기 프로세서는 리프 노드 및 상기 리프 노드와 관련있는 인덱스 노드를 동일한 페이지에 저장하는 것을 특징으로 하는 시스템.
KR1020070067129A 2007-07-04 2007-07-04 플래시 메모리를 위한 색인 스킴 KR100922389B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020070067129A KR100922389B1 (ko) 2007-07-04 2007-07-04 플래시 메모리를 위한 색인 스킴
US12/167,324 US9058253B2 (en) 2007-07-04 2008-07-03 Data tree storage methods, systems and computer program products using page structure of flash memory
TW097125122A TWI515561B (zh) 2007-07-04 2008-07-03 使用快閃記憶體之頁結構的資料樹儲存方法、系統以及電腦產品
CN2008101319860A CN101339538B (zh) 2007-07-04 2008-07-04 使用页结构的数据树存储方法、系统和计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070067129A KR100922389B1 (ko) 2007-07-04 2007-07-04 플래시 메모리를 위한 색인 스킴

Publications (2)

Publication Number Publication Date
KR20090002839A true KR20090002839A (ko) 2009-01-09
KR100922389B1 KR100922389B1 (ko) 2009-10-19

Family

ID=40213609

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070067129A KR100922389B1 (ko) 2007-07-04 2007-07-04 플래시 메모리를 위한 색인 스킴

Country Status (4)

Country Link
US (1) US9058253B2 (ko)
KR (1) KR100922389B1 (ko)
CN (1) CN101339538B (ko)
TW (1) TWI515561B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120038809A (ko) * 2010-10-14 2012-04-24 삼성전자주식회사 플래시 메모리의 색인 방법

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612668B2 (en) * 2008-11-24 2013-12-17 Juniper Networks, Inc. Storage optimization system based on object size
TWI407441B (zh) * 2009-03-20 2013-09-01 Phison Electronics Corp 快閃記憶體寫入方法及使用此方法的儲存系統與控制器
TWI385518B (zh) * 2009-03-20 2013-02-11 Phison Electronics Corp 用於快閃記憶體的資料儲存方法及儲存系統
CN101650689B (zh) * 2009-09-16 2011-10-26 中兴通讯股份有限公司 一种非易失性数据的存储和检索方法及装置
US8316176B1 (en) 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8700670B2 (en) * 2010-04-12 2014-04-15 Symantec Corporation Insert optimization for B+ tree data structure scalability
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US8527546B2 (en) 2010-11-25 2013-09-03 International Business Machines Corporation Generating a checkpoint image for use with an in-memory database
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9155320B2 (en) * 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US8375012B1 (en) * 2011-08-10 2013-02-12 Hewlett-Packard Development Company, L.P. Computer indexes with multiple representations
US8924632B2 (en) 2011-09-16 2014-12-30 Apple Inc. Faster tree flattening for a system having non-volatile memory
CN103164431B (zh) * 2011-12-13 2016-04-20 北京神州泰岳软件股份有限公司 关系型数据库的数据存储方法和存储系统
CN103518364B (zh) * 2013-03-19 2016-03-09 华为技术有限公司 分布式存储系统的数据更新方法及服务器
US20150186550A1 (en) * 2013-12-26 2015-07-02 Nandan MARATHE Append-Only B-Tree Cursor
US10956050B2 (en) 2014-03-31 2021-03-23 Sandisk Enterprise Ip Llc Methods and systems for efficient non-isolated transactions
US9916356B2 (en) 2014-03-31 2018-03-13 Sandisk Technologies Llc Methods and systems for insert optimization of tiered data structures
US10572442B2 (en) * 2014-11-26 2020-02-25 Microsoft Technology Licensing, Llc Systems and methods for providing distributed tree traversal using hardware-based processing
CN109284299B (zh) * 2015-06-08 2021-08-10 南京航空航天大学 重构具有存储感知的混合索引的方法
US10133764B2 (en) * 2015-09-30 2018-11-20 Sandisk Technologies Llc Reduction of write amplification in object store
US9619165B1 (en) 2015-10-30 2017-04-11 Sandisk Technologies Llc Convertible leaf memory mapping
KR20170073944A (ko) 2015-12-21 2017-06-29 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
US10747676B2 (en) 2016-02-23 2020-08-18 Sandisk Technologies Llc Memory-efficient object address mapping in a tiered data structure
US10289340B2 (en) 2016-02-23 2019-05-14 Sandisk Technologies Llc Coalescing metadata and data writes via write serialization with device-level address remapping
US10185658B2 (en) 2016-02-23 2019-01-22 Sandisk Technologies Llc Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
FR3051574A1 (fr) 2016-05-20 2017-11-24 Proton World Int Nv Gestion du stockage dans une memoire flash
FR3055992A1 (fr) * 2016-09-09 2018-03-16 Proton World International N.V. Gestion d'index dans une memoire flash
KR20190031692A (ko) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
FR3072476A1 (fr) 2017-10-13 2019-04-19 Proton World International N.V. Unite logique de memoire pour memoire flash
CN110162525B (zh) * 2019-04-17 2023-09-26 平安科技(深圳)有限公司 基于b+树的读写冲突解决方法、装置及存储介质
CN112486403A (zh) * 2019-09-12 2021-03-12 伊姆西Ip控股有限责任公司 管理存储对象的元数据的方法、装置和计算机程序产品
CA3107299A1 (en) 2020-01-31 2021-07-31 Rinnai America Corporation Vent attachment for a tankless water heater
KR20230120347A (ko) * 2022-02-09 2023-08-17 주식회사 티맥스티베로 데이터를 인덱스하기 위한 방법
CN114791913A (zh) * 2022-04-26 2022-07-26 北京人大金仓信息技术股份有限公司 数据库的共享内存缓冲池处理方法、存储介质与设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123104A (en) * 1988-04-08 1992-06-16 International Business Machines Corporation Method and apparatus for concurrent modification of an index tree in a transaction processing system utilizing selective indication of structural modification operations
US5893125A (en) * 1995-01-27 1999-04-06 Borland International, Inc. Non-modal database system with methods for incremental maintenance
US5694608A (en) * 1995-01-27 1997-12-02 Borland International, Inc. Non-modal database system wth methods for incremental maintenance of live reports
US5568423A (en) * 1995-04-14 1996-10-22 Unisys Corporation Flash memory wear leveling system providing immediate direct access to microprocessor
JP3707854B2 (ja) * 1996-03-01 2005-10-19 株式会社東芝 キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
JP3212960B2 (ja) 1999-02-04 2001-09-25 埼玉日本電気株式会社 フラッシュメモリを利用したデータ管理方法
KR100328129B1 (ko) 1999-12-27 2002-03-12 오길록 메모리 계층 구조를 고려한 압축, 탐색 및 새로운 항목삽입 방법
KR20040072875A (ko) 2003-02-11 2004-08-19 유비시스테크놀러지 주식회사 낸드 플래시 메모리를 이용한 저장장치
US7120637B2 (en) * 2003-05-30 2006-10-10 Microsoft Corporation Positional access using a b-tree
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
WO2005066793A2 (en) 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
US7383276B2 (en) * 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
US7761474B2 (en) * 2004-06-30 2010-07-20 Sap Ag Indexing stored data
KR101102754B1 (ko) 2005-02-28 2012-01-05 삼성전자주식회사 낸드 플래시 메모리 파일 시스템 및 낸드 플래시 메모리 시스템에서 파일 엑세스 방법
KR20060106993A (ko) 2005-04-06 2006-10-13 주식회사 에스원 플래시 메모리 데이터 저장 방법
TWM288401U (en) 2005-07-15 2006-03-01 Genesys Logic Inc Highly efficient data characteristics recognition device for flash memory
US7937375B2 (en) * 2007-07-19 2011-05-03 Oracle International Corporation Method and apparatus for masking index values in a database
US7856437B2 (en) * 2007-07-31 2010-12-21 Hewlett-Packard Development Company, L.P. Storing nodes representing respective chunks of files in a data store

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120038809A (ko) * 2010-10-14 2012-04-24 삼성전자주식회사 플래시 메모리의 색인 방법

Also Published As

Publication number Publication date
CN101339538A (zh) 2009-01-07
US20090012976A1 (en) 2009-01-08
US9058253B2 (en) 2015-06-16
KR100922389B1 (ko) 2009-10-19
TWI515561B (zh) 2016-01-01
CN101339538B (zh) 2012-12-19
TW200907677A (en) 2009-02-16

Similar Documents

Publication Publication Date Title
KR100922389B1 (ko) 플래시 메모리를 위한 색인 스킴
US10831734B2 (en) Update-insert for key-value storage interface
KR101397353B1 (ko) Key-value 스토어를 포함하는 메모리 시스템
CN101124555B (zh) 具有多流更新的非易失性存储器和方法
US8055832B2 (en) Management of memory blocks that directly store data files
CN109977034B (zh) 数据储存装置以及非挥发式存储器操作方法
US20180089074A1 (en) Techniques to Manage Key-Value Storage at a Memory or Storage Device
US10366003B2 (en) Controller, storage device, and computer program product for writing and transfer process
EP1988474A1 (en) System and method of managing indexation of flash memory
US9058256B2 (en) Data writing method, memory controller and memory storage apparatus
KR20040038706A (ko) 비휘발성 메모리 시스템에서 아우트-오브-시퀀스 기록프로세스를 효과적으로 수행하기 위한 방법 및 장치
CN112506814B (zh) 一种存储器及其控制方法与存储系统
US20210216448A1 (en) Data storage device in a key-value storage architecture with data compression, and non-volatile memory control method
KR101348255B1 (ko) 고정된 크기의 저장 블록을 가진 메모리 시스템에서데이터의 변환된 유닛의 저장
TW200844740A (en) Use of a direct data file system with a continuous logical address space interface
US9009442B2 (en) Data writing method, memory controller and memory storage apparatus
US11630595B2 (en) Methods and systems of efficiently storing data
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법
CN111966281A (zh) 数据储存装置与数据处理方法
KR101699779B1 (ko) 플래시 메모리의 색인 방법
Wongchaowart et al. A content-aware block placement algorithm for reducing PRAM storage bit writes
Ross Modeling the performance of algorithms on flash memory devices
KR100977709B1 (ko) 플래시메모리 저장장치 및 그에 따른 관리 방법
KR100878142B1 (ko) 플래시 메모리 상에서의 효율적인 동작을 위한 수정된b-트리 인덱스 구성 방법
KR101805059B1 (ko) 데이터 저장 장치 및 방법

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: 20120925

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160930

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190930

Year of fee payment: 11