KR20110117099A - 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 - Google Patents

메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 Download PDF

Info

Publication number
KR20110117099A
KR20110117099A KR1020117017069A KR20117017069A KR20110117099A KR 20110117099 A KR20110117099 A KR 20110117099A KR 1020117017069 A KR1020117017069 A KR 1020117017069A KR 20117017069 A KR20117017069 A KR 20117017069A KR 20110117099 A KR20110117099 A KR 20110117099A
Authority
KR
South Korea
Prior art keywords
address table
entry
table cache
cache
changed
Prior art date
Application number
KR1020117017069A
Other languages
English (en)
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 KR20110117099A publication Critical patent/KR20110117099A/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
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1016Performance 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

방법과 시스템은 메모리 장치에서 논리 그룹을 물리 어드레스에 맵핑하기 위한 어드레스 테이블을 유지관리한다. 상기 방법은 어드레스 테이블에 엔트리를 설정하라는 요청을 수신하고, 캐시에 엔트리의 존재에 따라서 그리고 캐시가 플러싱 임계 기준을 만족하는지 여부에 따라, 어드레스 테이블 캐시에 엔트리를 선택하여 플러싱하는 것을 포함한다. 플러싱된 엔트리는 어드레스 테이블 캐시의 최대 용량 미만을 포함한다. 플러싱 임계 기준은 어드레스 테이블 캐시가 모두 채워졌는지 아니면 페이지가 변경된 엔트리의 임계값을 초과하였는지를 포함한다. 어드레스 테이블 및/또는 어드레스 테이블 캐시는 비휘발성 메모리 및/또는 랜덤 액세스 메모리에 저장될 수 있다. 어드레스 테이블 캐시를 어드레스 테이블에 부분적으로 플러싱하는데 필요한 기록 동작의 수와 시간의 감소된 오버헤드에 기인하여 이 방법 및 시스템을 사용하여 성능이 개선될 수 있다.

Description

메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법{MAPPING ADDRESS TABLE MAINTENANCE IN A MEMORY DEVICE}
이 출원은 일반적으로 메모리 장치(memory device)에 관한 것이다. 보다 구체적으로, 이 출원은 재프로그램 가능한 비휘발성 반도체 플래시 메모리에서 논리 대 물리 맵핑 어드레스 테이블(mapping address table)을 유지관리하는 방법에 관한 것이다.
플래시 메모리와 같은 비휘발성 메모리 시스템은 소비자 제품에서 사용하기 위해 널리 채택되었다. 플래시 메모리는 서로 다른 형태, 예를 들어, 호스트 장치 사이에 옮겨지거나, 호스트 장치 내 내장되는 고체 상태 디스크(SSD)로서 휴대 메모리 카드 형태로 볼 수 있다. 데이터를 통상의 플래시 데이터 메모리 시스템에 기록할 때, 호스트는 전형적으로 데이터를 메모리 시스템의 논리 어드레스 공간 내 어드레스에 기록하고 이들로부터 데이터를 판독한다. 메모리 시스템은 일반적으로 데이터를 논리 어드레스 공간과 메모리의 물리적 블록 또는 메타블록 사이에 맵핑하며, 데이터는 논리 어드레스 공간 내 범위에 대응하여 고정된 논리 그룹으로 저장된다. 일반적으로, 각각의 고정된 논리 그룹은 메모리 시스템의 별도의 물리 블록에 저장된다. 메모리 시스템은 논리 어드레스 공간이 물리 메모리에 어떻게 맵핑되는가를 관리하지만 호스트는 이를 알지 못한다. 호스트는 논리 어드레스 공간 내에 자신의 데이터 파일의 어드레스를 관리하지만 메모리 시스템은 이 맵핑을 모르고 동작한다.
메모리 시스템 내 어드레스 테이블은 물리 메모리에 논리 어드레스 공간의 맵핑을 포함한다. 특히, 어드레스 테이블은 메모리 시스템에 물리 블록에 논리 그룹의 맵핑을 나타내는 페이지를 포함한다. 호스트가 이미 맵핑된 논리 그룹들에 데이터를 기록할 때, 어드레스 테이블은 관계된 맵핑 정보와 함께 업데이트될 수 있다.
일부 메모리 시스템은 데이터가 기록될 때 어드레스 테이블에 대한 변화를 일시적으로 저장하기 위해서 어드레스 테이블에 대한 캐시를 내장한다. 어드레스 테이블에 기록하는 대신 어드레스 테이블 캐시에 기록하는 것은 얼마간에 시간과 기록 동작 오버헤드를 절약할 수 있다. 어드레스 테이블 캐시를 갖는 메모리 시스템은 캐시 내 실제 변경된 엔트리의 양에 관계없이, 어드레스 테이블에 대한 전체 캐시를 업데이트함으로써 어드레스 테이블에 캐시 내 변경된 엔트리를 주기적으로 일치시킬 수 있다. 그러나, 어드레스 테이블에(100) 이상의 페이지를 가질 수 있는 큰 메모리 시스템에서 어드레스 테이블 캐시에 변경된 엔트리에 대해 전체 어드레스 테이블을 업데이트하는 것은 성능에 부정적으로 영향을 미칠 수 있고 메모리 시스템에서 다른 동작을 지연시킬 수 있다. 어드레스 테이블 내 페이지는 어떠한 변경도 행해지지 않았을지라도 불필요하게 재기록될 수 있다. 어드레스 테이블을 저장하기 위해 사용되는 플래시 메모리 셀은 전체 어드레스 테이블이 기록될 때 조기에 마모될 수도 있다.
위에 언급된 문제를 해결하기 위해서, 물리 어드레스에 논리 그룹을 맵핑하는 어드레스 테이블을 유지관리하기 위한 방법과 시스템이 개시된다.
발명의 제 1 양상에 따라서, 메모리 장치에서 논리 그룹을 물리 어드레스에 맵핑하기 위한 어드레스 테이블을 유지관리하기 위한 방법이 개시된다. 방법은 메모리 장치에 논리 그룹을 물리 어드레스에 맵핑하기 위한 엔트리를 어드레스 테이블에 설정하라는 요청을 수신하는 단계를 포함한다. 어드레스 테이블은 복수의 페이지를 포함한다. 또한, 방법은 어드레스 테이블에 대한 변경을 저장하는 어드레스 테이블 캐시에 상기 엔트리가 존재하는지 판정하는 단계, 및 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하는지 판정하는 단계를 포함한다. 엔트리가 어드레스 테이블 캐시에 없고 상기 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하면, 어드레스 테이블의 한 분량의 페이지가 선택된다. 선택된 한 분량의 페이지는 어드레스 테이블내 페이지의 전체 수 미만이다. 어드레스 테이블 내 페이지는 변경된 엔트리와 변경되지 않은 엔트리를 포함한다. 선택된 페이지에 대해 변경된 엔트리는 어드레스 테이블 캐시부터 어드레스 테이블에 플러싱된다. 요청된 엔트리는 어드레스 테이블 캐시에 할당되고 설정된다.
일부 실시예에서, 플러싱 임계 기준(flushing threshold criteria)은 어드레스 테이블 캐시의 최대 용량을 포함할 수 있고, 어드레스 테이블 캐시가 기준을 만족하는지 여부를 판정하는 단계는 어드레스 테이블 캐시 내 엔트리의 수가 어드레스 테이블 캐시의 최대 용량에 있는지 판정하는 단계를 포함한다. 다른 실시예에서, 플러싱 임계 기준은 변경된 엔트리의 임계값을 포함할 수 있고; 어드레스 테이블 캐시가 기준을 만족하는지 여부를 판정하는 단계는 어드레스 테이블의 페이지 내 변경된 엔트리의 수가 변경된 엔트리의 임계값을 초과하는지 여부를 판정하는 단계를 포함한다.
어드레스 테이블에 플러싱할 한 분량의 페이지를 선택하는 단계는 가장 많은 수의 변경된 엔트리를 갖는 페이지를 선택하는 단계를 포함할 수 있다. 대안적으로, 어드레스 테이블에 플러싱할 한 분량의 페이지를 선택하는 단계는 변경된 엔트리의 소정의 임계값 이상의 변경된 엔트리의 수를 갖는 페이지를 선택하는 단계를 포함할 수 있다. 선택된 페이지 분량은 하나일 수 있다. 변경된 엔트리를 어드레스 테이블 캐시에서 어드레스 테이블로 플러싱하는 단계는 어드레스 테이블 내 엔트리를 어드레스 테이블 캐시 내 변경된 엔트리로 업데이트하는 단계를 포함할 수 있다.
방법은 엔트리가 어드레스 테이블 캐시에 존재하면 어드레스 테이블 캐시 내 논리 그룹에 대한 기존의 엔트리를 업데이트하는 단계를 더 포함할 수 있다. 방법은 엔트리가 어드레스 테이블 캐시에 없고 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하지 않으면, 논리 그룹에 대한 엔트리를 어드레스 테이블 캐시에 할당하고 설정하는 단계를 더 포함할 수 있다. 어드레스 테이블 및/또는 어드레스 테이블 캐시는 비휘발성 메모리 또는 랜덤 액세스 메모리 중 하나 이상에 저장될 수 있다.
또 다른 양상에 따라서, 메모리 장치는 메모리 장치에 논리 그룹을 물리 어드레스에 맵핑하기 위한 어드레스 테이블; 어드레스 테이블에 대한 변경을 저장하는 어드레스 테이블 캐시; 및 제어기를 포함한다. 제어기는 논리 그룹을 물리 어드레스에 맵핑하는 엔트리를 어드레스 테이블에 설정하라는 요청을 수신하도록 구성된다. 어드레스 테이블은 복수의 페이지를 포함한다. 또한, 제어기는 어드레스 테이블 캐시에 엔트리가 존재하는지 판정하고, 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하는지 판정하도록 구성된다. 엔트리가 어드레스 테이블 캐시에 없고 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하는 것으로 제어기가 판정한다면, 어드레스 테이블의 한 분량의 페이지가 선택된다. 선택된 한 분량의 페이지는 어드레스 테이블내 페이지의 전체 수 미만이다. 어드레스 테이블 내 페이지는 변경된 엔트리와 변경되지 않은 엔트리를 포함한다. 제어기는 선택된 페이지에 대해 변경된 엔트리를 어드레스 테이블 캐시부터 어드레스 테이블에 플러싱한다. 요청된 엔트리는 제어기에 의해 어드레스 테이블 캐시에 할당되고 설정된다.
일부 실시예에서, 플러싱 임계 기준은 어드레스 테이블 캐시의 최대 용량을 포함할 수 있고, 어드레스 테이블 캐시가 기준을 만족하는지 여부를 판정하는 것은 어드레스 테이블 캐시 내 엔트리의 수가 어드레스 테이블 캐시의 최대 용량에 있는지 판정하도록 구성되는 제어기를 포함한다. 다른 실시예에서, 플러싱 임계 기준은 변경된 엔트리의 임계값을 포함할 수 있고; 어드레스 테이블 캐시가 기준을 만족하는지 여부를 판정하는 것은 어드레스 테이블의 페이지 내 변경된 엔트리의 수가 변경된 엔트리의 임계값을 초과하는지 여부를 판정하도록 구성되는 제어기를 포함한다.
어드레스 테이블에 플러싱할 한 분량의 페이지를 선택하는 것은 가장 많은 수의 변경된 엔트리를 갖는 페이지를 선택하는 단계를 포함할 수 있다. 대안적으로, 어드레스 테이블에 플러싱할 한 분량의 페이지를 선택하는 것은 변경된 엔트리의 소정의 임계값 이상의 변경된 엔트리의 수를 갖는 페이지를 선택하는 것을 포함할 수 있다. 플러싱하기 위해 선택된 페이지 분량은 하나일 수 있다. 변경된 엔트리를 어드레스 테이블 캐시에서 어드레스 테이블로 플러싱하는 것은 어드레스 테이블 내 엔트리를 어드레스 테이블 캐시 내 변경된 엔트리로 업데이트하는 것을 포함할 수 있다.
제어기는 엔트리가 어드레스 테이블 캐시에 존재하면 어드레스 테이블 캐시 내 논리 그룹에 대한 기존의 엔트리를 업데이트하도록 추가 구성될 수 있다. 제어기는 엔트리가 어드레스 테이블 캐시에 없고 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하지 않으면, 논리 그룹에 대한 엔트리를 어드레스 테이블 캐시에 할당하고 설정하도록 구성될 수 있다. 어드레스 테이블 및/또는 어드레스 테이블 캐시는 비휘발성 메모리 또는 랜덤 액세스 메모리 중 하나 이상에 저장될 수 있다.
본 발명은, 재프로그램 가능한 비휘발성 반도체 플래시 메모리에서 논리 대 물리 맵핑 어드레스 테이블을 유지관리하는 방법을 제공하는 효과를 갖는다.
도 1은, 발명의 실시예를 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분을 도시한 도면.
도 2는, 실시예에 따라서 다수의 물리 그룹의 섹터(또는 메타블록)로 구성되고 제어기의 메모리 관리자에 의해 관리되는 메모리를 도시한 도면.
도 3a는, 실시예에 따라 논리 그룹과 메타블록 사이에 맵핑을 도시한 도면.
도 3b는, 논리 그룹과 메타블록 사이에 맵핑을 개략적으로 도시한 도면.
도 4는, 제어기 및 플래시 메모리에 구현된 메타블록 관리 시스템의 블록도.
도 5는, 초기 상태에서 그룹 어드레스 테이블 블록을 도시한 도면.
도 6은, 데이터가 재기록된 후 그룹 어드레스 테이블 블록을 도시한 도면.
도 7은, 그룹 어드레스 테이블 캐시 업데이트 후 그룹 어드레스 테이블 블록을 도시한 도면.
도 8은, 논리 그룹을 물리 어드레스에 맵핑하는 그룹 어드레스 테이블 및 그룹 어드레스 테이블 캐시를 유지관리하는 방법을 예시한 흐름도.
도 9는, 랜덤 액세스 메모리 및 플래시 메모리에 그룹 어드레스 테이블 캐시를 유지관리하는 방법을 예시한 흐름도.
도 1은 발명의 실시예를 구현하는데 적합한 메모리 시스템의 주 하드웨어 성분을 도시한다. 메모리 시스템(20)는 전형적으로 호스트 인터페이스와 함께 호스트(10)와 함께 동작한다. 메모리 시스템은 전형적으로 메모리 카드 또는 고체 상태 디스크(SSD) 드라이브와 같은 내장형 메모리 시스템 형태이다. 메모리 시스템(20)은 동작이 제어기(100)에 의해 제어되는 메모리(200)를 포함한다. 메모리(200)는 하나 이상의 집적회로 칩에 분산된 한 어레이 이상의 비휘발성 메모리 셀을 포함한다. 제어기(100)는 인터페이스(110), 프로세서(120), 선택적 코프로세서(121), ROM(122)(판독 전용 메모리), RAM(130)(랜덤 액세스 메모리) 및 선택적으로 프로그램 가능 비휘발성 메모리(124)를 포함한다. 인터페이스(110)는 제어기를 호스트에 인터페이스시키는 한 성분 및 메모리(200)에 인터페이스시키는 또 다른 성분을 갖는다. 비휘발성 ROM(122) 및/또는 선택적 비휘발성 메모리(124)에 저장된 펌웨어는 프로세서(120)가 제어기(100)의 기능을 구변하기 위한 코드를 제공한다. 오류정정 코드는 프로세서(120) 또는 선택 코프로세서(121)에 의해 처리될 수 있다. 대안적 실시예에서, 제어기(100)는 상태머신(도시되지 않음)에 의해 구현된다. 또 다른 실시예에서, 제어기(100)는 호스트 내에 구현된다.
도 2는 실시예에 따라서 다수의 물리 그룹의 섹터(또는 메타블록)로 구성되고 제어기의 메모리 관리자에 의해 관리되는 메모리를 도시한다. 메모리(200)는 메타블록(MB0,..., MBi)으로 구성되고, 각각의 메타블록은 함께 소거될 수 있는 한 그룹의 물리 섹터(S0,..., SN -1)이다.
호스트(10)는 파일 시스템 또는 운영 시스템 하에 애플리케이션을 실행할 때 메모리(200)에 액세스한다. 전형적으로, 호스트 시스템은, 예를 들어, 각각의 섹터가 512 바이트의 데이터를 내포할 수 있는 논리 섹터의 단위로 데이터를 어드레스한다. 또한, 호스트가 각각이 하나 이상의 논리 섹터로 구성되는 논리 클러스터의 단위로 메모리 시스템에 기록 또는 판독하는 것이 일반적이다. 일부 호스트 시스템에서, 선택적 호스트-측 메모리 관리자는 호스트에서 저 레벨 메모리 관리를 수행하기 위해 존재할 수 있다. 대부분의 경우에 판독 또는 기록 동작 동안에, 호스트(10)는 인접 어드레스를 갖는 일련의 논리 섹터의 데이터를 내포하는 세그먼트를 판독 또는 기록하라는 명령을 메모리 시스템(20)에 필수적으로 발행한다.
메모리-측 메모리 관리자는 플래시 메모리(200)의 메타블록 중에 호스트 논리 섹터의 데이터의 저장 및 인출을 관리하기 위해 메모리 시스템(20)의 제어기(100)에 구현된다. 바람직한 실시예에서, 메모리 관리자는 메타블록의 소거, 판독 및 기록 동작을 관리하기 위한 다수의 소프트웨어 모듈을 포함한다. 또한, 메모리 관리자는 플래시 메모리(200) 및 제어기 RAM(130) 사이에 자신의 동작에 연관된 시스템 제어 및 디렉토리 데이터를 유지관리한다.
도 3a(i) ~ 도 3a(iii)는 실시예에 따라 논리 그룹과 메타블록 사이에 맵핑을 도시한다. 물리 메모리의 메타블록은 논리 그룹의 N 논리 섹터의 데이터를 저장하기 위한 N 물리 섹터를 갖는다. 도 3a(i)는 논리 그룹(LGi)으로부터 데이터를 도시한 것으로, 논리 섹터는 인접한 논리적 순서 0, 1,..., N-1로 되어 있다. 도 3a(ii)는 상기 데이터가 같은 논리 순서로 메타블록에 저장되는 것을 도시한다. 이러한 식으로 저장될 때 메타블록은 "순차적"이라고 한다. 일반적으로, 메타블록은 다른 순서로 저장된 데이터를 가질 수 있는데, 이 경우 메타블록은 "비순차적" 또는 "무질서"하다 라고 한다.
논리 그룹의 최하위 어드레스와 이것에 맵핑되는 메타블록의 최하위 어드레스 사이에 오프셋이 있을 수 있다. 이 경우에, 논리 섹터 어드레스는 메타블록 내 논리 그룹의 맨 아래에서 맨 위로 루프처럼 되돌아 간다. 예를 들어, 도 3a(iii)에서, 메타블록은 논리 섹터(k)의 데이터부터 시작하여 이의 첫번째 위치에 저장한다. 마지막 논리 섹터 N-1에 도달되었을 때, 이것은 섹터(0)으로 되돌아가고 마지막으로 논리 섹터(k-1)에 연관된 데이터를 자신의 마지막 물리 섹터에 저장한다. 바람직한 실시예에서, 이를테면 메타블록의 첫번째 물리 섹터에 저장된 데이터의 시작 논리 섹터 어드레스를 확인하는 것과 같이, 임의의 오프셋을 확인하기 위해 페이지 태그가 사용된다. 2개의 블록은 이들의 논리 섹터가 페이지 태그만큼만 다를 때 유사한 순서로 이들이 저장되게 할 것으로 생각될 것이다.
도 3b는 논리 그룹과 메타블록 사이에 맵핑을 개략적으로 도시한다. 각각의 논리 그룹은 데이터가 현재 업데이트되고 있는 소수의 논리 그룹을 제외하고, 고유 메타블록에 맵핑된다. 논리 그룹이 업데이트된 후에, 이것은 다른 메타블록에 맵핑될 수 있다. 맵핑 정보는 이하 기술되는 바와 같이, 그룹 어드레스 테이블 및 그룹 어드레스 테이블 캐시와 같은 한 세트의 논리 대 물리 디렉토리에 유지관리된다.
도 4는 제어기 및 플래시 메모리에 구현된 메타블록 관리 시스템의 블록도이다. 메타블록 관리 시스템은 제어기(100)에 구현된 다양한 기능 모듈을 포함하며 테이블에 각종 제어 데이터와 플래시 메모리(200) 및 제어기 RAM(130)에 목록을 유지관리한다. 제어기(100)에 구현된 기능 모듈들은 인터페이스 모듈(110) 및 논리-물리 어드레스 변환 모듈(140)을 포함한다. 인터페이스(110)는 메타블록 관리 시스템을 호스트 시스템과 인터페이스하게 한다. 논리-물리 어드레스 변환 모듈(140)은 호스트로부터 논리 어드레스를 물리 메모리 위치에 맵핑한다.
동작 동안에 메타블록 관리 시스템은 어드레스, 제어 및 상태 정보와 같은 제어 데이터를 발생하고 이에 따라 동작한다. 제어 데이터 대부분이 작은 크기의 데이터를 빈번하게 변경하는 경향이 있기 때문에, 큰 블록 구조를 갖는 플래시 메모리에서 쉽게 저장되고 효율적으로 유지관리될 수 없다. 더 효율적 업데이트 및 액세스를 위해서 더 가변적인 소량의 제어 데이터를 제어기 RAM에 위치시키는 반면 더 정적인 제어 데이터는 비휘발성 플래시 메모리에 저장하는 계층 분산 수법이 채용될 수 있다. 파워 셧다운 또는 장애의 경우에, 이 수법은 비휘발성 메모리 내 작은 한 세트의 제어 데이터를 스캔함으로써 휘발성 제어기 RAM 내 제어 데이터를 신속하게 재구성할 수 있게 한다.
비휘발성 플래시 메모리(200)는 그룹 어드레스 테이블(GAT)(210) 및 그룹 어드레스 테이블 캐시(GAT 델타)(220)와 같은 제어 데이터를 저장할 수 있다. GAT(210)는 섹터의 논리 그룹과 이들의 대응하는 메타블록 사이에 맵핑을 관리한다. GAT(210)는 논리 어드레스에 따라 순차적 순서로 각 논리 그룹에 대해 하나의 엔트리를 내포한다. GAT(210)는 메모리 시스템 내 모든 논리 그룹에 대해 메타블록 어드레스를 정의하는 엔트리를 각각의 페이지가 포함하는 복수의 페이지를 포함한다. GAT 델타(220)는 GAT(210)의 맵핑에서 변경된 엔트리의 리스트인 캐시로서 작용한다. 일 실시예에서, GAT(210) 및 GAT 델타(220)는 둘 다 플래시 메모리(200)에 저장된다. 변경된 엔트리를 GAT 델타(220)에서 GAT(210)로 플러싱하는 것은 이 실시예에서 플래시 메모리(200) 내에서 행해진다.
일부 실시예에서, RAM(130)은 GAT 델타 카피(132)를 포함할 수 있다. GAT 델타 카피(132)는 GAT 델타(220) 내 변경된 엔트리의 리스트와 동일한 목록을 내포할 수 있다. 주기적으로, 제어기는 GAT 델타 카피(132) 및 GAT 델타(220)이 동일 정보를 내포하도록 이들을 서로 일치시킬 수 있다. 이 프로세스는 도 9을 참조하여 이하 더 상세히 기술된다.
도 5 내지 도 7은 (1) GAT 델타가 비어있는 초기 상태; (2) 업데이트된 GAT 델타로 논리 그룹이 재기록된 후에; (3) GAT 델타가 GAT에 부분적으로 플러싱된 후에, 그룹 어드레스 테이블(GAT) 블록(500)을 도시한다. 도 8은 논리 그룹을 물리 어드레스에 맵핑하는 그룹 어드레스 테이블 및 그룹 어드레스 테이블 캐시를 유지관리하는 방법(800)을 예시한 흐름도이다. 방법(800)에 대해 도 8에 기술된 단계 각각은 단독으로 또는 단계와 결합하여 수행될 수 있다.
도 5는 초기 상태에서 그룹 어드레스 테이블(GAT) 블록(500)을 도시한다. GAT 블록(500)은 자유 블록 리스트(FBL)(504)를 내포하는 마스터 인덱스 페이지(502), GAT 델타(506), 및 복수의 페이지를 포함하는 GAT(508)을 포함하며, 각각의 페이지는 기록된 논리 그룹에 대한 메타블록 어드레스를 맵핑하는 엔트리를 포함한다. FBL(504)은 나중에 논리 그룹에 맵핑될 수 있는 가용한 자유 블록을 리스트한다. FBL(504)은 자유 블록이 이전에 할당되었던 순서로 되어 있을 수 있다. 도 5에서, FBL(504)은 자유 블록으로서 메타블록(F, G, H, J, K)을 리스트한다.
메모리 시스템의 초기 상태에서, 기록된 논리 그룹은 GAT(508) 내 페이지의 엔트리 내 물리 메타블록에 이미 할당되어 있다. 도 5에 GAT(508)는 각각이 논리 그룹에 대응하여 416개의 엔트리를 갖는 페이지 0, 페이지 1, 페이지 2, 및 페이지 3을 포함한다. GAT 델타(506)는 초기 상태에서는 GAT(508)에 어떠한 변화가 아직 없기 때문에 비어있다. 즉, 도 5에 도시된 초기 상태에서, GAT(508)는 물리 메타블록에 논리 그룹의 가장 최신의 맵핑을 내포한다.
도 6은 데이터가 호스트에 의해 재기록된 후에 GAT 블록(500)을 도시한다. 도 5에 도시된 마스터 인덱스 페이지(502)의 이전의 카피는 도 6에 도시되지 않았다. 데이터가 호스트로부터 기록되었을 때, 논리 그룹을 물리 메타블록에 맵핑하는 엔트리를 GAT(508)에 설정하라는 요청이 도 8에 도시된 방법(800)의 단계(802)에서 수신될 수 있다. GAT 델타(506)는 GAT(508)보다 더 최근의 맵핑 정보를 내포할 수 있기 때문에, 설정 요청에 명시된 엔트리가 단계(804)에서 이미 존재하는지를 알기 위해서 GAT 델타(506)가 체크된다. 엔트리가 단계(804)에서 이미 존재하면, 단계(814)에서 요청으로부터 새로운 맵핑 정보로 업데이트된다. 일부 실시예에서, 엔트리가 GAT 델타(506)에 이미 존재하면, 이미 존재하는 엔트리에 대한 논리 그룹을 내포하는 GAT(508) 내 대응하는 페이지는 GAT 델타(506)로부터 즉시 업데이트될 수 있다. 다른 실시예에서, 엔트리가 이미 GAT 델타(506)에 존재하면, 새로운 엔트리가 할당될 수 있고 요청에 명시된 논리 그룹에 대해 GAT 델타(506)에 설정될 수 있다.
그러나, 단계(804)에서 GAT 델타(506)에 엔트리가 이미 존재한 것이 아니라면, 단계(806)에서 플러싱 임계 기준이 만족되지 않으면 엔트리가 할당되고 설정될 수 있다. 이 경우에, 엔트리가 단계(812) 및 단계(814)에서 요청을 기초로 GAT 델타(506)에 할당되어 설정된다. 플러싱 임계 기준은 GAT(508) 내 하나 이상의 페이지가 임계값 이상의 다수의 변경된 엔트리를 갖거나, 어떤 기간이 경과한 후에, GAT 델타(506)가 이의 최대 용량에 도달하는 것을 포함한다. 또한, 플러싱 임계 기준은 다른 이유로 마스터 인덱스 페이지(502)가 업데이트된다면 우선적으로 플러싱를 행하는 것을 포함할 수 있다.
다른 플러싱 임계 기준은 GAT(508)가 완전히 채워졌을 때의 경우를 포함할 수 있다. 일 실시예에서, GAT(508)가 완전히 채워졌을 때, GAT(508) 내 유효 페이지는 완전히 채워진 GAT 블록으로부터 카피되고, GAT(508)의 업데이트된 인덱스는 마스터 인덱스 페이지(502)에 기록된다. 또 다른 실시예에서, GAT(508)가 완전히 채워졌을 때, GAT(508) 내 페이지는 카피되고 GAT 델타(506)로부터 변경된 엔트리로 업데이트된다. 이러한 완전 채워진 경우에, GAT 델타(506)는 GAT(508)의 완전 채움과 업데이트 후에 부분적으로 또는 전체적으로 플러싱될 수 있다. 최소한, 이러한 완전 채움 경우에, GAT 델타(506)는 완전히 채워진 GAT(508) 내 페이지에 대한 어떠한 엔트리도 더 이상 포함하지 않을 것이다.
그러므로, 엔트리가 GAT 델타(506)에 존재하지 않고 플러싱 임계 기준이 단계(806)에서 만족되지 않으면, GAT 델타(506)는 플러싱되지 않고 GAT(508)와 일치된다. 호스트가 논리 그룹에 데이터를 재기록할 때, 데이터가 기록되는 대응하는 물리 메타블록은 GAT(508)에 직접 기록되지 않고 단계(812) 및 단계(814)에서 GAT 델타(506) 내 엔트리에 기록된다. 예를 들어, 도 6에서, 호스트는 논리 그룹(410, 411, 520, 413, 1101)을 재기록한다. 이들 논리 그룹에 대한 엔트리를 설정하라는 요청이 단계(802)에서 수신될 수 있다. 단계(804)에서 GAT 델타(506)는 비어있기 때문에, 이들 논리 그룹에 대한 엔트리는 도 5의 GAT 델타(506)에 이미 존재하여 있는 것은 아니다. GAT 델타(506)에서 엔트리의 비존재 외에도, GAT 델타(506)에 대한 플러싱 임계 기준이 단계(806)에서 만족되지 않기 때문에, 단계(812) 및 단계(814)에서 논리 그룹에 대한 엔트리가 할당되고 설정된다. 단계(812) 및 단계(814)에 이서, GAT 델타(506)는 더 이상 비어있지 않으며 논리 그룹(410, 411, 520, 413, 1101)을 물리 메타블록(F, G, H, J, K)에 각각 맵핑하는 엔트리를 포함한다. 메모리 제어기는 FBL(504) 내 리스트된 가용한 자유 블록에 기초하여, 이들 블록에 대한 데이터를 각각 자유 블록(F, G, H, J, K)에 기록한다.
논리 그룹(410, 411, 520, 413, 1101)은 이전에 각각 물리 메타블록(A, B, C, D, E)에 맵핑되었다. 이때, GAT(508)는 여전히 이 원래의 맵핑을 내포하나, GAT(508) 내 이들 논리 그룹에 대한 엔트리는 이제 GAT 델타(506) 내 엔트리로 대체된다. 도 6은 어둡게 나타낸 바와 같이 GAT(508) 내 대체된 물리 메타블록(A, B, C, D, E)을 도시한다. 물리 메타블록(A, B, C, D, E)은 더 이상 유효한 데이터를 내포하지 않기 때문에, FBL(504)은 이제 이들 메타블록을 자유 블록들로서 리스트한다.
FBL(504), GAT 델타(506) 및 GAT(508)을 포함하는 마스터 인덱스 페이지(502)는 단일 기록 동작으로 업데이트될 수도 있고, 및/또는 단일 데이터 구조에 포함될 수도 있다. 마스터 인덱스 페이지(502)는 단일 기록 동작으로 업데이트되는 다른 정보, 예를 들어, 업데이트 블록 정보(예를 들어, 업데이트된 논리 그룹, 블록 위치, 및 기록된 길이), 활성 바이너리 캐시 블록에의 포인터, GAT(508)의 페이지에 대한 인덱스, 마모 평준화 카운터, 및 그외 정보를 포함할 수도 있다. 마스터 인덱스 페이지(502)는 이 내에 내포된 테이블의 동기적 스냅샷을 제공하며 GAT(508)의 한 페이지에 매 기록 후에 전체적으로 재기록될 필요가 없다.
마스터 인덱스 페이지(502) 내 모든 물리 블록 참조는 유실되는 블록 또는 이중으로 참조되는 블록이 전혀 없도록 단일 기록 동작으로 업데이트된다. 모든 물리 블록은 GAT(508) 또는 마스터 인덱스 페이지(502)에 의해서, 또는 제어 블록(예를 들어, GAT(508) 내 블록, 바이너리 캐시 블록 등에의 포인터)에서 참조된다. 한 블록이 FBL(504)로부터 취해졌을 때, 이 블록은 선택적으로 마스터 인덱스 페이지(502) 내 업데이트 블록 정보에서 참조될 수도 있다. GBL(504)로로부터 취해진 블록은 GAT 델타(506) 및 GAT(508)에 의해 참조된다. 단일 기록 동작이 마스터 인덱스 페이지(502) 상에서, 예를 들어, 새로이 할당된 블록이 사라지고 새로운 자유 블록이 나타나는 FBL(504)에서, 그리고 새로운 참조로서 GAT(508)에서 수행될 때 블록에 대한 참조는 여러 곳에서 변경된다. 그러므로, 개별적 기록에 의해 원자적(atomic) 기록 동작을 사용하여 동시에 FBL(504) 및 FBL(508)을 업데이트하는 대신에, 마스터 인덱스 페이지(502) 상에 단일의 기록 동작은 FBL(504), GAT(508), 블록 정보, 및 논리-물리 테이블을 일괄적으로 업데이트한다.
도 7은 도 6으로부터 마스터 인덱스 페이지(502)의 이전 카피를 포함하여, GAT 업데이트 후에 GAT 블록(500)을 도시한다. 플러싱 임계 기준은 GAT 델타(506)로부터 대응하는 변경된 엔트리로 GAT(508)를 부분적으로 업데이트하게 한다. 예를 들어, 도 7의 GAT 블록(500)에서 보인 바와 같이, (1) 논리 그룹을 물리 메타블록에 맵핑하는 엔트리를 GAT(508)에 설정하라는 요청이 단계(802)에서 수신된다면, (2) 엔트리가 단계(804)에서 GAT 델타(506) 내 이미 존재하여 있지 않다면, (3) 플러싱 임계 기준이 단계(806)에서 만족된다면, GAT(508)의 부분적 업데이트가 단계(808) 및 단계(810)에서 행해진다. GAT(508)의 부분적 업데이트가 단계(808) 및 단계(810)에서 행해진다면, 요청된 엔트리가 앞에서 기술된 바와 같이 단계(812) 및 단계(814)에서 GAT 델타(506)에 할당되고 설정될 수 있다.
GAT(508)의 부분적 업데이트가 행해질 때 GAT(508) 내 대체된 모든 엔트리가 업데이트되는 것은 아니다. 대신에, GAT(508)의 부분적 업데이트는 단계(808)에서 선택된 GAT(508)의 다수의 페이지를 포함한다. 단계(808)에서 업데이트를 위해 선택된 GAT(508) 내 페이지는 가장 많은 수의 변경된 엔트리를 갖는 페이지일 수 있거나, 임계값 이상의 어떤 수의 변경된 엔트리를 갖는 페이지일 수 있다. 선택된는 페이지는 다른 기준에 기초할 수도 있다. 선택되는 페이지의 수는 하나일 수도 있고 또는 GAT(508) 내 총 페이지 수 미만의 어떤 수의 페이지일 수 있다.
플러싱 임계 기준이 단계(806)에서 만족되고 부분적 업데이트가 개시될 때, GAT(508)의 선택된 페이지에 대한 GAT 델타(506) 내 엔트리는 단계(810)에서 GAT(508)의 페이지로 플러싱된다. 도 7에서, GAT 페이지 0은 이것이 GAT(508) 내 다른 페이지에 비해 가장 많은 수의 변경된 엔트리를 갖고 있기 때문에, 즉 GAT 페이지 1 및 2 각각이 하나의 변경된 엔트리를 갖는 반면 GAT 페이지 0이 논리 그룹(410, 411, 413)에 대한 3개의 변경된 엔트리를 갖기 때문에, 단계(808)에서 선택되었다. 이들 논리 그룹에 대한 GAT(508) 내 엔트리는 논리 그룹(410, 411, 413)이 이제 각각 GAT(508) 내 물리 메타블록(F, G, J)에 맵핑되도록 단계(810)에서 GAT 델타로부터 엔트리로 업데이트된다.
논리 그룹(410, 411, 413)을 각각 물리 메타블록(A, B, D)에 맵핑하는 이전의 GAT 페이지 0은 덮어쓰인다(도 7에 어둡게 나타낸). GAT(508)의 부분적 업데이트가 완료된 후에, 도 7에서 GAT 델타(506)는 이전에 설정된 논리 그룹(520, 1101)에 대한 나머지 변경된 맵핑에 대한 엔트리를 내포한다. 논리 그룹(520, 1101)에 대한 GAT(508) 내 대응하는 페이지는 플러싱를 위해 GAT 페이지 0만 선택되었기 때문에 업데이트되지 않는다.
전체 GAT 델타를 GAT에 플러싱하는 대신에 GAT 델타의 일부를 GAT에 플러싱함으로써, 기록 동작의 수와 플러싱 과정에서 걸리는 시간이 감소된다. 예를 들어, 큰 메모리 시스템에서 GAT(100 이상의 페이지를 포함할 수 있는)의 모든 페이지에 대해 GAT 델타로부터 엔트리를 플러싱하는 대신에, GAT의 단지 한 페이지만이 GAT 델타로부터 변경된 엔트리로 업데이트될 것이다. GAT 어드레스 테이블을 유지관리하기 위해 시간 및 동작이 덜 필요하게 되므로 메모리 시스템의 전체 성능이 증가할 수 있다.
도 9는 실시예에서 랜덤 액세스 메모리 및 플래시 메모리에 그룹 어드레스 테이블 캐시를 유지관리하는 방법(900)을 예시한 흐름도이다. 방법(900)은 예를 들어, RAM(130)에 GAT 델타 카피(132)와 플래시 메모리(200)에 GAT 델타(220)를 사용하여 구현될 수 있다. GAT 델타(220)에 대한 변경은 먼저 GAT 델타 카피(132)에 기록되고 플래시 메모리(200)에 GAT 델타(220)와 주기적으로 서로 일치될 수 있다. 플래시 메모리(200)에 GAT 델타(220) 내 엔트리는 GAT 블록(500) 및 방법(800)에 관계된 도 5 내지 도 8에 관련하여 앞에서 기술된 바와 같이, GAT(210)에 주기적으로 플러싱될 수 있고, 플래시 메모리(200)에서도 그러하다. RAM(130)이 플래시 메모리(200)에 비해 더 빠른 액세스 및 수정 회수를 갖기 때문에, RAM(130)에 GAT 델타 카피(132)에 기록하는 것은 전체 메모리 시스템의 성능을 더 증가시킬 수 있게 할 수 있다.
도 9에서, 논리 그룹을 물리 메타블록에 맵핑하는 엔트리는 앞에서 기술된 방법(800)에서와 같이 설정 또는 업데이트될 수 있다. 즉, 방법(800)에서 GAT 엔트리를 설정하라는 요청은 (1) 단계(802, 804, 814)를 사용하여 GAT 델타 카피(132)에서 현존의 GAT 엔트리를 업데이트하는 것; (2) 단계(802, 804, 806, 812, 814)를 사용하여 GAT 델타 카피(132)에 GAT 엔트리를 할당하고 설정하는 것; (3) 단계(802 내지 814)를 사용하여, 업데이트할 GAT 페이지를 선택하고, GAT 델타에서 GAT로 변경된 엔트리를 플러싱하고, 새로운 엔트리를 GAT 델타 카피(132)에 설정하는 것으로 끝날 수 있다. 그러나, 도 5 내지 도 8에 관련하여 위에 기술된 바와 같이, 플래시 메모리(200)에 GAT 델타(220)에 엔트리를 기록하는 대신, 엔트리는 RAM(130)에 GAT 델타 카피(132)에 기록된다.
GAT 엔트리를 설정하라는 요청이 방법(800)에서 이행된 후에, 단계(902)에서 GAT 델타 카피(132)를 GAT 델타(220)에 플러싱할지 여부가 판정된다. GAT 델타 카피(132)를 GAT 델타(220)에 플러싱하는 것은, 예를 들어, 자유 블록 리스트(FBL) 내 블록의 수가 없어졌을 때 행해질 수 있다. FBL이 비어있을 때, 새로운 블록이 FBL로부터만 할당될 수 있기 때문에 더 많은 자유 블록이 확보될 필요가 있다. FBL이 비어있는 상태에 있었다면, 초기화 동안 어느 블록을 스캔할지를 아는 것과 마지막 제어 업데이트 이후에 블록이 최근에 사용되었는지 확인하는 것을 가능하지 않을 것이다.
일 실시예에서, FBL에는 GAT 또는 업데이트 블록 정보에 의해 이전에 참조되었지만 현재는 폐용이 된 블록이 있을 수 있다. 예를 들어, GAT 델타 내 논리 그룹에 대한 맵핑 엔트리는 새로운 물리 블록(FBL로부터 얻어진)을 가리킬 수 있다. GAT 내 논리 그룹에 대한 맵핑 엔트리는 여전히 현재 자유 블록인 이전 물리 블록을 가리킬 수 있다. GAT 내 논리 그룹이 새로운 물리 블록을 가리키게 GAT 델타 내 엔트리가 GAT에 플러싱된 후에, 이전 물리 블록이 FBL에 추가될 수 있다. 다른 실시예에서, FBL는 예비 GAT(SGAT)과 같은 다른 테이블 내, 또는 다른 파티션으로부터의 자유 블록이 있을 수 있다.
단계(902)에서 플러싱가 행해질 것으로 판정된다면, RAM 내 GAT 델타 카피(132)는 플래시 메모리 내 GAT 델타(220)와 일치된다. 그러나, 단계(902)에서 플러싱가 행해지지 않을 것으로 판정된다면, 방법(900)은 GAT 엔트리를 설정하라는 후속 요청이 수신된다면 GAT 델타 카피(132)에 엔트리를 더욱 기록하기 위해 방법(800)으로 되돌아간다.
"Non-Volatile Memory and Method with Improved Block Management System"(attorney reference number 0084567.639US0-SDA-1418) 명칭의 본 출원인 소유의 본원과 동시에 출원된(2009년 1월 5일) 미국가특허출원 전체를 참조로서 여기에 포함시킨다.
메모리 장치에 논리 그룹을 물리 어드레스에 맵핑하기 위한 어드레스 테이블을 유지관리하는 방법 및 시스템이 개시되었다. 방법은 어드레스 테이블에 엔트리를 설정하라는 요청을 수신하고, 캐시에 엔트리의 존재에 따라서 그리고 캐시가 플러싱 임계 기준을 만족하는지 여부에 따라, 어드레스 테이블 캐시부터 일부 엔트리를 선택하여 어드레스 테이블에 플러싱하는 것을 포함한다. 플러싱 임계 기준은 어드레스 테이블 캐시가 모두 채워졌는지 아니면 페이지가 변경된 엔트리의 임계값을 초과하였는지를 포함한다. 어드레스 테이블 및/또는 어드레스 테이블 캐시는 비휘발성 메모리 및/또는 랜덤 액세스 메모리에 저장될 수 있다. 어드레스 테이블 캐시에 변경된 엔트리만을 어드레스 테이블에 부분적으로 플러싱하는데 필요한 기록 동작의 수와 시간의 감소된 오버헤드에 기인하여 이 방법 및 시스템을 사용하여 성능이 개선될 수 있다.
앞에 상세한 설명은 한정하는 것이 아니라 예시하는 것으로 간주되어야 하고 이 발명의 사상과 범위를 정의하고자 하는 것은 모든 등가물을 포함한 다음의 청구항임을 알 것이다.

Claims (23)

  1. 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법으로서,
    상기 어드레스 테이블은 상기 메모리 장치에서 물리 어드레스에 논리 그룹을 맵핑하기 위한 것인, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법에 있어서,
    상기 어드레스 테이블에서 엔트리를 설정하라는 요청을 수신하는 단계로서, 상기 엔트리는 상기 메모리 장치에서 물리 어드레스에 논리 그룹을 맵핑하기 위한 것이고, 상기 어드레스 테이블은 복수의 페이지를 포함하는, 상기 어드레스 테이블에서 엔트리를 설정하라는 요청을 수신하는 단계와,
    상기 어드레스 테이블에 대한 변경을 저장하는 어드레스 테이블 캐시에 상기 엔트리가 존재하는지 판정하는 단계와,
    상기 어드레스 테이블 캐시가 플러싱(flushing) 임계 기준을 만족하는지 판정하는 단계와,
    상기 엔트리가 상기 어드레스 테이블 캐시에 없고 상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하면,
    상기 어드레스 테이블의 총 페이지 수 미만인 상기 어드레스 테이블의 일정량의 페이지를 선택하는 단계로서, 상기 페이지는 변경된 엔트리와 변경되지 않은 엔트리를 포함하는, 상기 단계와,
    상기 어드레스 테이블 캐시부터 상기 어드레스 테이블까지 상기 선택된 페이지에 대해 변경된 엔트리를 플러싱(flushing)하는 단계와,
    상기 어드레스 테이블 캐시에서 상기 논리 그룹에 대한 엔트리를 할당하는 단계와,
    상기 요청을 기초로 상기 어드레스 테이블 캐시에서 상기 논리 그룹에 대한 엔트리를 설정하는 단계를
    포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  2. 제 1항에 있어서,
    상기 플러싱 임계 기준은 상기 어드레스 테이블 캐시의 최대 용량을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 단계는 상기 어드레스 테이블 캐시 내 엔트리의 수가 상기 어드레스 테이블 캐시의 상기 최대 용량에 있는지 판정하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  3. 제 1항에 있어서,
    상기 플러싱 임계 기준은 변경된 엔트리의 임계값을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 단계는 상기 어드레스 테이블의 페이지 내 변경된 엔트리의 수가 변경된 엔트리의 임계값을 초과하는지 여부를 판정하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  4. 제 1항에 있어서, 상기 분량의 페이지를 선택하는 단계는 가장 많은 수의 변경된 엔트리를 갖는 페이지를 선택하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  5. 제 1항에 있어서, 상기 분량의 페이지를 선택하는 단계는 변경된 엔트리의 소정의 임계값 이상의 변경된 엔트리의 수를 갖는 페이지를 선택하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  6. 제 1항에 있어서, 상기 선택된 페이지 분량은 하나인, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  7. 제 1항에 있어서, 플러싱 단계는 상기 선택된 페이지에 대해 상기 어드레스 테이블 내 엔트리를 상기 어드레스 테이블 캐시 내 변경된 엔트리로 업데이트하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  8. 제 1항에 있어서,
    상기 엔트리가 상기 어드레스 테이블 캐시에 존재하면, 상기 요청을 기초로 상기 논리 그룹에 대한 상기 기존의 엔트리를 업데이트하고,
    상기 엔트리가 상기 어드레스 테이블 캐시에 없고 상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하지 않으면,
    상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 할당하고,
    상기 요청을 기초로 상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 설정하는 단계를
    더 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  9. 제 1항에 있어서, 상기 어드레스 테이블 또는 상기 어드레스 테이블 캐시 중 하나 이상은 비휘발성 메모리 또는 랜덤 액세스 메모리 중 하나 이상에 저장되는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  10. 메모리 장치에 있어서,
    상기 메모리 장치에서 논리 그룹을 물리 어드레스에 맵핑하기 위한 어드레스 테이블과,
    상기 어드레스 테이블에 대한 변경을 저장하는 어드레스 테이블 캐시와,
    제어기를
    포함하고,
    싱기 제어기는,
    상기 메모리 장치에 논리 그룹을 물리 어드레스에 맵핑하기 위한 엔트리를 복수의 페이지를 포함하는 상기 어드레스 테이블에 설정하라는 요청을 수신하고,
    상기 어드레스 테이블 캐시에 상기 엔트리가 존재하는지 판정하며,
    상기 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하는지 판정하고,
    상기 엔트리가 상기 어드레스 테이블 캐시에 없고 상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하면,
    변경된 엔트리와 변경되지 않은 엔트리를 포함하는 상기 페이지의 전체 수 미만의 상기 어드레스 테이블의 한 분량의 페이지를 상기 어드레스 테이블에서 선택하고,
    상기 어드레스 테이블 캐시부터 상기 선택된 페이지에 대해 변경된 엔트리를 상기 어드레스 테이블에 플러싱하며,
    상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 할당하고,
    상기 요청을 기초로 상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 설정하도록
    구성된, 메모리 장치.
  11. 제 10항에 있어서,
    상기 플러싱 임계 기준은 상기 어드레스 테이블 캐시의 최대 용량을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 것은 상기 어드레스 테이블 캐시 내 엔트리의 수가 상기 어드레스 테이블 캐시의 상기 최대 용량에 있는지 판정하도록 구성된 상기 제어기를 포함하는, 메모리 장치.
  12. 제 10항에 있어서,
    상기 플러싱 임계 기준은 변경된 엔트리의 임계값을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 것은 상기 어드레스 테이블의 페이지 내 변경된 엔트리의 수가 변경된 엔트리의 상기 임계값을 초과하는지 여부를 판정하도록 구성된 상기 제어기를 포함하는, 메모리 장치.
  13. 제 10항에 있어서, 상기 분량의 페이지를 선택하는 것은 가장 많은 수의 변경된 엔트리를 갖는 페이지를 선택하도록 구성된 상기 제어기를 포함하는, 메모리 장치.
  14. 제 10항에 있어서, 상기 분량의 페이지를 선택하는 것은 변경된 엔트리의 소정의 임계값 이상의 변경된 많은 엔트리를 갖는 페이지를 선택하도록 구성된 상기 제어기를 포함하는, 메모리 장치.
  15. 제 10항에 있어서, 상기 선택된 페이지 분량은 하나인, 메모리 장치.
  16. 제 10항에 있어서, 플러싱은 상기 선택된 페이지에 대한 상기 어드레스 테이블 내 상기 엔트리를 상기 어드레스 테이블 캐시 내 변경된 엔트리로 업데이트하도록 구성된 상기 제어기를 포함하는, 메모리 장치.
  17. 제 10항에 있어서, 상기 제어기는,
    상기 엔트리가 상기 어드레스 테이블 캐시에 존재하면,
    상기 요청을 기초로 상기 논리 그룹에 대한 상기 기존의 엔트리를 업데이트하고,
    상기 엔트리가 상기 어드레스 테이블 캐시에 없고 상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하지 않으면,
    상기 논리 그룹에 대한 엔트리를 상기 어드레스 테이블 캐시에 할당하고,
    상기 요청을 기초로 상기 논리 그룹에 대한 엔트리를 상기 어드레스 테이블 캐시에 설정하도록 추가 구성된, 메모리 장치.
  18. 제 10항에 있어서, 비휘발성 메모리 및 랜덤 액세스 메모리를 더 포함하고, 상기 어드레스 테이블 또는 상기 어드레스 테이블 캐시 중 하나 이상은 상기 비휘발성 메모리 또는 랜덤 액세스 메모리 중 하나 이상에 저장되는, 메모리 장치.
  19. 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법으로서,
    상기 어드레스 테이블은 상기 메모리 장치에서 물리 어드레스에 논리 그룹을 맵핑하기 위한 것인, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법에 있어서,
    상기 메모리 장치에서 물리 어드레스에 논리 그룹을 맵핑하기 위한 엔트리를 복수의 페이지를 포함하는 상기 어드레스 테이블에 설정하라는 요청을 수신하는 단계로서, 상기 설정은 상기 엔트리를 추가 또는 업데이트하는 것을 포함하는, 상기 단계와,
    상기 어드레스 테이블 캐시가 플러싱 임계 기준을 만족하는지 판정하는 단계와,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하면,
    변경된 엔트리와 변경되지 않은 엔트리를 포함하는 상기 페이지의 전체 수 미만의 상기 어드레스 테이블의 한 분량의 페이지를 상기 어드레스 테이블에서 선택하는 단계와,
    상기 어드레스 테이블 캐시부터 상기 선택된 페이지에 대해 변경된 엔트리를 상기 어드레스 테이블에 플러싱하는 단계와,
    상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 할당하는 단계와,
    상기 요청을 기초로 상기 논리 그룹에 대한 상기 엔트리를 상기 어드레스 테이블 캐시에 설정하는 단계를
    포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  20. 제 19항에 있어서,
    상기 플러싱 임계 기준은 상기 어드레스 테이블 캐시의 최대 용량을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 단계는, 상기 어드레스 테이블 캐시 내 엔트리의 수가 상기 어드레스 테이블 캐시의 최대 용량에 있는지 판정하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  21. 제 19항에 있어서,
    상기 플러싱 임계 기준은 변경된 엔트리의 임계값을 포함하고,
    상기 어드레스 테이블 캐시가 상기 플러싱 임계 기준을 만족하는지 여부를 판정하는 단계는, 상기 어드레스 테이블의 페이지 내 변경된 엔트리의 수가 변경된 엔트리의 임계값을 초과하는지 여부를 판정하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  22. 제 19항에 있어서, 상기 분량의 페이지를 선택하는 단계는 가장 많은 수의 변경된 엔트리를 갖는 페이지를 선택하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
  23. 제 19항에 있어서, 상기 분량의 페이지를 선택하는 단계는 변경된 엔트리의 소정의 임계값 이상의 변경된 엔트리의 수를 갖는 페이지를 선택하는 단계를 포함하는, 메모리 장치에서 어드레스 테이블을 유지관리하기 위한 방법.
KR1020117017069A 2009-01-05 2010-01-04 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 KR20110117099A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/348,782 2009-01-05
US12/348,782 US8250333B2 (en) 2009-01-05 2009-01-05 Mapping address table maintenance in a memory device

Publications (1)

Publication Number Publication Date
KR20110117099A true KR20110117099A (ko) 2011-10-26

Family

ID=42040445

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117017069A KR20110117099A (ko) 2009-01-05 2010-01-04 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법

Country Status (5)

Country Link
US (1) US8250333B2 (ko)
EP (1) EP2377023B1 (ko)
JP (1) JP5571691B2 (ko)
KR (1) KR20110117099A (ko)
WO (1) WO2010078545A1 (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8891298B2 (en) 2011-07-19 2014-11-18 Greenthread, Llc Lifetime mixed level non-volatile memory system
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
JP5570406B2 (ja) * 2010-12-14 2014-08-13 株式会社日立製作所 メモリコントローラ、及びデータ記録装置
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
US9104327B2 (en) 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9473424B2 (en) * 2011-09-19 2016-10-18 Fujitsu Limited Address table flushing in distributed switching systems
US9727453B2 (en) * 2013-03-14 2017-08-08 Sandisk Technologies Llc Multi-level table deltas
US9275095B2 (en) 2013-07-31 2016-03-01 International Business Machines Corporation Compressing a multi-version database
US9772781B2 (en) 2013-11-27 2017-09-26 Ngd Systems, Inc. System and method for supporting atomic writes in a flash translation layer
US8838936B1 (en) * 2013-11-27 2014-09-16 NXGN Data, Inc. System and method for efficient flash translation layer
US9466383B2 (en) * 2013-12-30 2016-10-11 Sandisk Technologies Llc Non-volatile memory and method with adaptive logical groups
US9760295B2 (en) 2014-09-05 2017-09-12 Toshiba Memory Corporation Atomic rights in a distributed memory system
US9436615B2 (en) 2014-10-03 2016-09-06 Sandisk Technologies Llc Optimistic data read
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
TWI534618B (zh) * 2015-07-13 2016-05-21 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
CN106372000B (zh) * 2015-07-20 2019-10-11 群联电子股份有限公司 映射表更新方法、存储器控制电路单元及存储器存储装置
US9996473B2 (en) * 2015-11-13 2018-06-12 Samsung Electronics., Ltd Selective underlying exposure storage mapping
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
WO2018067743A1 (en) * 2016-10-04 2018-04-12 Pure Storage, Inc. Maintaining data associated with a storage device related applications
KR20180051706A (ko) 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
US10318421B2 (en) * 2017-04-12 2019-06-11 International Business Machines Corporation Lightweight mechanisms for selecting infrequently executed methods for eviction from code cache
TWI637651B (zh) * 2018-01-03 2018-10-01 和碩聯合科技股份有限公司 無線熱點運作方法
US10459839B1 (en) 2018-05-02 2019-10-29 International Business Machines Corporation Accelerating garbage collection of flushed logical erase blocks in non-volatile memory
US11094381B2 (en) * 2019-06-02 2021-08-17 Apple Inc. Rapid restart protection for a non-volatile memory system
US11194521B1 (en) 2020-05-27 2021-12-07 Western Digital Technologies, Inc. Rate limit on the transitions of streams to open
US11126378B1 (en) 2020-05-27 2021-09-21 Western Digital Technologies, Inc. Rate limit on the transitions of zones to open
EP4134826A1 (en) * 2021-08-09 2023-02-15 Giesecke+Devrient Mobile Security GmbH Management of memory of a processing device
KR102545175B1 (ko) * 2022-05-02 2023-06-20 삼성전자주식회사 어드레스 테이블을 포함하는 메모리 장치, 및 메모리 컨트롤러의 동작 방법
EP4276642A1 (en) * 2022-05-09 2023-11-15 Samsung Electronics Co., Ltd. Computing system including cxl switch, memory device and storage device and operating method thereof

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5895488A (en) * 1997-02-24 1999-04-20 Eccs, Inc. Cache flushing methods and apparatus
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US20040088474A1 (en) * 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7356651B2 (en) * 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
TWM317043U (en) * 2006-12-27 2007-08-11 Genesys Logic Inc Cache device of the flash memory address transformation layer
TW200828014A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
US7721040B2 (en) * 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US8321652B2 (en) * 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks

Also Published As

Publication number Publication date
JP2012514794A (ja) 2012-06-28
EP2377023A1 (en) 2011-10-19
US20100174869A1 (en) 2010-07-08
WO2010078545A1 (en) 2010-07-08
US8250333B2 (en) 2012-08-21
JP5571691B2 (ja) 2014-08-13
EP2377023B1 (en) 2014-03-05

Similar Documents

Publication Publication Date Title
US8250333B2 (en) Mapping address table maintenance in a memory device
CN110678836B (zh) 用于键值存储的持久性存储器
US20210248065A1 (en) Memory system and method for controlling nonvolatile memory
US9652386B2 (en) Management of memory array with magnetic random access memory (MRAM)
CN109726139B (zh) 存储器***及控制方法
US9678676B2 (en) Method for storage devices to achieve low write amplification with low over provision
USRE46404E1 (en) Flash memory management method
US9990277B2 (en) System and method for efficient address translation of flash memory device
EP2286341B1 (en) Method and system for storage address re-mapping for a multi-bank memory device
CN103164346B (zh) 使用lba位图的方法与***
US9396103B2 (en) Method and system for storage address re-mapping for a memory device
KR101430097B1 (ko) 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
US10083181B2 (en) Method and system for storing metadata of log-structured file system
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid