KR20050065631A - 논리적 블록을 분할하기 위한 방법 및 장치 - Google Patents

논리적 블록을 분할하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20050065631A
KR20050065631A KR1020057007265A KR20057007265A KR20050065631A KR 20050065631 A KR20050065631 A KR 20050065631A KR 1020057007265 A KR1020057007265 A KR 1020057007265A KR 20057007265 A KR20057007265 A KR 20057007265A KR 20050065631 A KR20050065631 A KR 20050065631A
Authority
KR
South Korea
Prior art keywords
physical
block
logical
data
physical block
Prior art date
Application number
KR1020057007265A
Other languages
English (en)
Other versions
KR100923814B1 (ko
Inventor
로버트 씨. 창
바아멘 콰와미
파쉬드 샤베트-샤기
Original Assignee
샌디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 코포레이션 filed Critical 샌디스크 코포레이션
Publication of KR20050065631A publication Critical patent/KR20050065631A/ko
Application granted granted Critical
Publication of KR100923814B1 publication Critical patent/KR100923814B1/ko

Links

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
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

단일의 논리적 블록을 2 이상의 물리적 블록들로 분할하는 방법 및 장치가 개시된다. 본 발명의 한 측면에 따라, 비휘발성 메모리의 다수의 물리적 블록들을 논리적 블록 요소들을 포함하는 논리적 블록에 관련시키는 방법은 논리적 블록 요소들을 적어도 제 1 논리적 세트 및 제 2 논리적 세트로 그룹화하는 단계를 포함한다. 제 1 논리적 세트와 관련되는 데이터는 제 1 물리적 블록에 제공된다. 제 2 논리적 세트와 관련되는 데이터는 제 2 물리적 블록에 제공된다.

Description

논리적 블록을 분할하기 위한 방법 및 장치{METHOD AND APPARATUS FOR SPLITTING A LOGICAL BLOCK}
본 발명은,
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,739호(Atty. Docket No. SANDP023/SDK0366.000US), "WEAR LEVELING IN NON-VOLATILE STORAGE SYSTEMS",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,670호(Atty. Docket No. SANDP025/SDK0366.002US), "TRACKING THE MOST FREQUENTLY ERASED BLOCKS IN NON-VOLATILE MEMORY SYSTEMS",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,824호(Atty. Docket No. SANDP026/SDK0366.003), "TRACKING THE LEAST FREQUENTLY ERASED BLOCKS IN NON-VOLATILE MEMORY SYSTEMS",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,855호(Atty. Docket No. SANDP029/SDK0410.000US), "METHOD AND APPARATUS FOR GROUPING PAGES WITHIN A BLOCK",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,762호(Atty. Docket No. SANDP030/SDK0416.000US), "METHOD AND APPARATUS FOR RESOLVING PHYSICAL BLOCKS ASSOCIATED WITH A COMMON LOGICAL BLOCK"와 관련되며, 각각의 출원은 전체가 본 명세서에 참조로서 편입된다.
본 발명은 일반적으로 대량 디지털 저장 시스템에 관한 것이다. 보다 구체적으로는, 본 발명은 플래시 메모리와 관련되는 파일 할당 테이블(file allocation table; FAT)이 복사되는 횟수를 감소시키기 위한 시스템 및 방법에 관한 것이다.
플래시 메모리 저장 시스템과 같은 비휘발성 메모리 시스템의 사용은 상기 메모리 시스템의 컴팩트한 물리적 크기, 및 비휘발성 메모리가 반복적으로 재프로그래밍될 수 있는 능력으로 인해 증가되고 있다. 플래시 메모리 저장 시스템들의 컴팩트한 물리적 크기는 점차적으로 널리 보급되는 장치들에 상기 저장 시스템들을 사용하는 것을 조장한다. 플래시 메모리 저장 시스템들을 사용하는 장치들은 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 핸드헬드 개인용 컴퓨터, 및 글로벌 포지셔닝 장치(global positioning device)들을 포함하며, 이에 제한되지 않는다. 플래시 메모리 저장 시스템들에 포함된 비휘발성 메모리를 반복적으로 재프로그래밍할 수 있는 능력은 플래시 메모리 저장 시스템들이 사용 및 재사용될 수 있게 한다.
일반적으로, 플래시 메모리 저장 시스템들은 플래시 메모리 카드 및 플래시 메모리 칩 세트들을 포함할 수 있다. 플래시 메모리 칩 세트들은 일반적으로 플래시 메모리 컴포넌트들 및 컨트롤러 컴포넌트들을 포함한다. 전형적으로, 플래시 메모리 칩 세트는 내장형 시스템(embedded system) 내로 어셈블리되어 배치될 수 있다. 상기 어셈블리 또는 호스트 시스템들의 제조자들은 전형적으로 다른 컴포넌트들과 마찬가지로 컴포넌트 형태의 플래시 메모리를 취득하여, 그 다음 플래시 메모리 및 다른 컴포넌트들을 호스트 시스템 내로 어셈블리한다.
도 1a에 도시된 바와 같이, 파일 시스템 내에서, 메모리(10)는 효과적으로 시스템 또는 디렉토리 영역(12) 및 데이터 영역(14)으로 분할된다. 시스템 영역(12)은 일반적으로 루트 디렉토리들 및 파일 할당 테이블(FAT)들을 포함하는 한편, 데이터 파일들은 전형적으로 데이터 영역(14)에 포함된다. 파일 시스템은 섹터들의 데이터를 예를 들어, 한 번에 한 페이지씩 시스템 영역(12) 내로 기록할 수 있는 반면, 클러스터들의 데이터를 예를 들어, 한 번에 다수의 페이지씩 데이터 영역(14) 내로 기록한다. 각각의 클러스터 크기는 일반적으로 데이터 영역(14)과 연관된 파일의 최소 크기로서, 변화될 수 있다. 예를 들어, 윈도우즈 또는 DOS 시스템을 구동하는 전체 시스템에서, 클러스터는 대략 4 내지 256 페이지를 포함하는 크기를 가질 수 있다.
시스템 영역(12)에서, 액세스는 일반적으로 한번에 섹터 또는 페이지로 이루어진다. 즉, 업데이트가 시스템 영역(12), 예를 들어 FAT에 대해 이루어지는 경우, 실질적으로 단지 하나의 페이지가 임의의 주어진 시간에 업데이트된다. 논리적 블록, 또는 파일 시스템에 관련되는 블록에 관련되는 임의의 업데이트는 효과적으로 논리적 블록에 맵핑되는 물리적 블록으로 전파된다. 도 1b는 논리적 블록과 물리적 블록 사이의 맵핑을 나타내는 도면이다. 논리적 블록(52)과 관련되는 페이지가 업데이트되는 경우 그 업데이트가 물리적 블록(54) 내로 쓰여지도록, 논리적 블록(52)은 각각 물리적 블록(54)의 페이지에 맵핑되는 다수의 페이지들을 포함한다. 페이지가 업데이트되는 경우, 그 페이지에 대응되는 물리적 블록은 페이지를 통합하는 새로운 물리적 블록으로 효과적으로 재복사되며, 원래의 물리적 블록은 소거된다. 일반적으로, 단일 페이지가 블록 내에서 업데이트되는 시간마다 물리적 블록의 전체 내용을 복사하는 것은 상대적으로 많은 양의 오버헤드를 이용하며, 시간 소비적인 것으로 판명될 수 있다.
따라서, 바람직한 바는 시스템 블록들과 관련된 페이지가 효과적으로 업데이트될 수 있게 하는 방법 및 장치이다. 즉, 필요한 것은 임의의 주어진 시간에 실질적으로 단지 하나의 페이지가 재기록되는 블록이 많은 양의 계산 자원(computational resource)을 사용하지 않고도 효과적으로 업데이트될 수 있게 하는 프로세스 및 시스템이다.
도 1a는 파일 시스템에 의해 효과적으로 분할된 메모리의 다이어그램 표현이다.
도 1b는 논리적 블록과 물리적 블록 사이의 맵핑을 나타내는 다이어그램이다.
도 2a는 비휘발성 메모리를 포함하는 일반적인 호스트 시스템의 다이어그램 표현이다.
도 2b는 도 2a의 메모리 장치(120)와 같은 메모리 장치의 다이어그램 표현이다.
도 2c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 다이어그램 표현이다.
도 3은 본 발명의 실시예에 따른 논리적 블록들의 파일 시스템 및 물리적 블록들을 구비한 매체의 다이어그램 표현이다.
도 4는 본 발명의 실시예에 따른 논리적 블록과 물리적 블록 사이의 맵핑에 대한 다이어그램 표현이다.
도 5a는 논리적 블록과 물리적 블록, 즉 도 4의 논리적 블록(410)과 물리적 블록(414) 사이의 맵핑에 대한 다이어그램 표현이며, 이는 본 발명의 실시예에 따라 페이지가 논리적 블록 및 물리적 블록에 할당되는 방법을 나타낸다.
도 5b는 본 발명의 실시예에 따라 새롭게 기록된 페이지를 갖는 시스템 메모리, 즉 도 5a의 시스템 메모리의 블록 다이어그램 표현이다.
도 5c는 본 발명의 실시예에 따라 분할된 논리적 블록에 할당된 새로운 물리적 블록을 갖는 시스템 메모리, 즉 도 5a의 시스템 메모리에 대한 블록 다이어그램 표현이다.
도 6은 본 발명의 실시예에 따라 분할된 논리적 블록을 사용하는 제 1 방법과 관련되는 단계들을 도시하는 흐름도이다.
도 7은 본 발명의 실시예에 따라 분할된 논리적 블록을 이용하는 제 2 방법과 관련되는 단계들을 도시하는 흐름도이다.
도 8은 본 발명의 실시예에 따른 시스템 아키텍처에 대한 블록 다이어그램 표현이다.
본 발명은 논리적 블록을 2 이상의 물리적 블록들로 분할하는 시스템 및 방법에 관한 것이다. 본 발명의 한 측면에 따라, 다수의 비휘발성 메모리의 물리적 블록들을 논리적 블록 요소들을 포함하는 논리적 블록에 관련시키는 방법은 논리적 블록 요소들을 적어도 제 1 논리적 세트 및 제 2 논리적 세트로 그룹화하는 것을 포함한다. 제 1 논리에 관련된 데이타는 제 1 물리적 블록에 제공되며, 제 2 논리적 세트에 관련된 데이터는 제 2 물리적 블록에 제공된다.
일 실시예에서, 제 1 물리적 블록은 물리적 블록 요소들을 포함하며, 상기 방법은 또한 제 1 물리적 블록에 포함되는 다수의 물리적 블록 요소들을 제 1 물리적 세트 및 제 2 물리적 세트로 그룹화하는 것을 포함한다. 제 1 논리적 세트에 관련되는 데이터는 제 1 물리적 세트로 기록될 수 있다. 상기 실시예에서, 상기 방법은, 또한, 제 1 논리적 세트와 관련되는 업데이트된 데이터를 기록하는 단계가 제 2 물리적 세트 내로 업데이트된 데이터를 기록하는 단계를 포함하도록, 제 1 논리적 세트와 관련되는 새로운 데이터를 기록하는 단계를 포함할 수 있다.
일반적으로 한번에 4 페이지 이하로 액세스되는 논리적 블록을 다수의 물리적 블록들로 분할함으로써, 전체 플래시 메모리가 포맷되는 경우, 논리적 블록과 관련되는 각각의 물리적 블록이 실질적으로 단지 부분적으로만 채워지게 되며, 따라서 논리적 블록 데이터의 일부가 다수의 물리적 블록의 각각으로 기록될 수 있다. 각각의 물리적 블록이 실질적으로 부분적으로만 채워지는 경우, 각각의 물리적 블록은 본질적으로 업데이트가 기록될 수 있는 가용한 페이지들을 갖는다. 그와 같이, 충만된 물리적 블록을 빈 물리적 블록으로 재기록할 필요성은 업데이트와 관련되는 정보를 물리적 블록의 가용 페이지에 기록할 수 있는 능력에 의하여 감소된다. 물리적 블록이 재기록될 필요성이 있게 되는 것은 단지 가용 페이지들이 모두 채워진 후이다. 그와 같이, 물리적 블록들이 다른 물리적 블록으로 복사되고 소거되는 횟수를 감소시킴으로써, 전체 시스템의 성능이 개선될 수 있다.
본 발명의 또 하나의 측면에 따라, 메모리 장치는 다수의 논리적 요소들을 포함하는 논리적 블록을 식별하는 제 1 컴포넌트, 제 1 물리적 블록 및 제 2 물리적 블록을 포함하는 제 2 컴포넌트, 및 제 3 컴포넌트를 포함한다. 제 1 물리적 블록 및 제 2 컴포넌트에 포함되는 제 2 물리적 블록은 각각 다수의 물리적 요소들을 포함한다. 제 3 컴포넌트는 실질적으로 논리적 블록에 포함되는 다수의 논리적 요소들을 제 1 논리적 세트 및 제 2 논리적 세트로 분할하며, 제 1 논리적 세트와 관련되는 내용을 제 1 물리적 블록에 기록하며, 제 2 논리적 세트에 관련되는 내용을 제 2 물리적 블록에 기록한다. 일 실시예에서, 제 1 물리적 블록은 다수의 물리적 요소들의 제 1 물리적 요소 세트 및 다수의 물리적 요소들의 제 2 물리적 요소 세트를 포함하며, 제 3 컴포넌트는 제 1 논리적 세트와 관련된 내용을 제 1 물리적 요소 세트에 기록하도록 배치된다.
또 하나의 실시예에서, 제 2 물리적 블록은 다수의 물리적 요소들의 제 1 물리적 요소 세트 및 다수의 물리적 요소들의 제 2 물리적 요소 세트를 포함하며, 제 3 컴포넌트는 제 2 논리적 세트와 관련되는 내용을 제 1 물리적 요소 세트에 기록하도록 배치된다. 상기 실시예에서, 제 3 컴포넌트는 또한 제 2 논리적 세트와 관련되는 업데이트된 내용을 제 2 물리적 요소 세트에 기록한다.
본 발명의 또 하나의 측면에 따라, 논리적 블록일 수 있으며 비휘발성 메모리 시스템의 파일 시스템과 관련되는 제 1 블록을 분할하는 방법은, 실질적으로 제 1 블록을 제 1 부분 및 제 2 부분으로 구획(partition)하는 단계, 제 1 블록의 제 1 부분을 물리적 블록일 수 있으며 비휘발성 메모리 시스템의 비휘발성 메모리와 관련되는 제 2 블록에 관련시키는 단계, 및 제 1 블록의 제 2 부분을 비휘발성 메모리와 관련되는 제 3 블록에 관련시키는 단계를 포함한다. 제 1 블록의 제 1 부분과 관련된 내용이 업데이트될 경우, 제 1 부분과 관련되는 업데이트된 내용은 제 2 블록에 기록되며, 제 1 블록의 제 2 부분과 관련되는 내용이 업데이트될 경우에는, 제 2 부분과 관련되는 업데이트된 내용은 제 3 블록에 기록된다.
이러한 본 발명의 이점 및 다른 이점들이 이하의 상세한 설명 및 도면을 숙지하여 자명해질 것이다.
본 발명은 첨부된 도면 및 이하의 설명을 참조하여 가장 잘 이해될 수 있다.
하나의 페이지가 업데이트되는 경우 업데이트된 페이지를 저장하거나 또는 재기록하는데 필요한 오버헤드의 양을 감소시키는 것은, 예를 들어 내장형 비휘발성 메모리 칩을 갖는 전체 호스트 시스템과 같은 전체 시스템이 보다 효율적으로 작동하는 것을 가능하게 할 수 있다. 예를 들어 물리적 블록과 관련되는 단일 페이지가 업데이트될 때마다 파일 할당 테이블(FAT)과 관련되는 블록과 같은 전체 물리적 블록을 복사하는 것은 상당량의 오버헤드를 사용할 수 있으며, 따라서 상대적으로 비효율적일 수 있다.
논리 FAT 블록과 같은 논리적 블록을 다수의 물리적 블록들, 예를 들어 2개의 물리적 블록들로 분할함으로써, 플레시 메모리가 포맷되는 경우 논리적 블록과 관련되는 각각의 물리적 블록이 실질적으로 부분적으로만 채워지게 된다. 다시 말하면, 논리적 블록 데이터의 일부가 다수의 물리적 블록 각각에 기록될 수 있다. 예를 들어, 분할된 32 페이지 논리적 블록 중 페이지 0-15가 32 페이지 제 1 물리적 블록의 페이지 0-15에 기록될 수 있으며, 이와 동시에 논리적 블록의 페이지 16-32가 32 페이지 제 2 물리적 블록의 페이지 0-15에 기록될 수 있다. 각각의 물리적 블록이 실질적으로 부분적으로만 채워지는 경우, 각각의 물리적 블록은 본질적으로 업데이트가 기록될 수 있는 가용 페이지를 가지게 된다.
만일 논리적 블록과 관련되는 새로운 페이지가 기록될 경우, 그 페이지는 적절한 물리적 블록과 관련되는 가용 페이지들에 기록될 수 있다. 예를 들어, 논리적 페이지 0-15의 범위 내에 있는 새로운 논리적 페이지가 기록될 경우, 새로운 논리적 페이지가 제 1 물리적 블록의 페이지 16-31의 제 1 가용 페이지에 기록될 수 있다. 마찬가지로, 논리적 페이지 16-31 범위의 새로운 논리적 페이지가 기록될 경우, 그 새로운 논리적 페이지는 제 2 물리적 블록의 페이지 16-31의 제 1 가용 페이지에 기록될 수 있다. 물리적 블록이 가용 페이지를 모두 소모하게 될 때까지, 물리적 블록의 내용을 새로운 물리적 블록으로 복사할 필요가 없게 된다. 이와 같이, 물리적 블록과 관련되는 복사 작동의 횟수가 현저히 감소될 수 있으며, 전체 시스템의 성능 역시 개선될 수 있다.
분할 블록의 사용은 일반적으로 적어도 2개의 물리적 블록들을 임의의 하나의 논리적 블록에 관련시키지만, 분할 블록들이 통상적으로 FAT 블록과 같은 블록 또는 루트 디렉토리와 관련된 블록에 대하여 구현되기 때문에, 시스템에서 필요한 추가적인 물리적 블록의 개수가 상대적으로 적다. FAT 블록 및 루트 디렉토리 블록이 분할 블록으로 구현되는 경우, 그 블록들은 분할 블록의 사용으로 야기되는 성능 향상과 비교할 때 미미한 수준으로 오버헤드를 소비한다. 예를 들어, 블록당 64 페이지를 갖는 128 메가바이트 NAND 플레시 칩은 FAT 및 루트 디렉토리에 대하여 단지 2개의 블록만을 필요로 할 수 있다. 실질적으로 단지 2개의 추가적인 블록이 분할 블록 구현을 위하여 요구될 수 있는 것이다.
분할 블록의 사용이 유익할 수 있는 플레시 메모리 시스템 또는 보다 일반적으로는 비휘발성 메모리 장치는 플레시 메모리 카드 및 칩 세트를 포함한다. 통상적으로, 플레시 메모리 시스템들은, 호스트 시스템이 플레시 메모리 시스템에 데이터를 기록하거나 그 플레시 메모리 시스템으로부터 데이터를 판독할 수 있도록 그 호스트 시스템과 관련되어 사용된다. 그러나 몇몇 플레시 메모리 시스템들은 내장형 플레시 메모리 및 호스트로 하여금 내장형 플레시 메모리의 제어기로 작용하도록 하는 소프트웨어를 포함하며, 이는 도 2c와 관련하여 이하에서 논의될 것이다. 도 2a를 참조하여, 예를 들어 컴팩플레시 메모리 카드와 같은 비휘발성 메모리 장치를 포함하는 호스트 시스템이 설명될 것이다. 호스트 또는 컴퓨터 시스템(100)은 일반적으로 마이크로프로세서(108), 랜덤 액세스 메모리(RAM)(112) 및 입력/출력 회로(116)가 연결되도록 하는 시스템 버스(104)를 포함한다. 호스트 시스템(100)이 일반적으로 다른 컴포넌트들, 예를 들어 도시되지 않은 디스플레이 장치 및 네트워크 장치들을 포함할 수 있음이 이해될 것이다.
업데이트된 페이지들을 저장하거나 그렇지 않으면 재기록하기 위해 요구되는 전체 오버헤드 및 시간의 양을 감소시키는 것은 전체 시스템, 예를 들어, 내장형 비휘발성 메모리 칩을 구비한 전체 호스트 시스템이 보다 효율적으로 동작할 수 있게 한다. 물리적 블록과 연관된 페이지는 페이지가 다른 최근에 기록된 페이지들보다 더 낮은 페이지 번호를 가질 때 업데이트되어야 하고, 그때마다 매번 새로운 물리적 블록을 획득하는 것은 상당한 양의 시스템 자원을 소비할 수 있고, 결과적으로 상대적으로 비효율적일 수 있다. 반면, 임의의 페이지가 블록 내 다음의 이용가능한 공간 내로 기록될 수 있게 하는 것은 특정 페이지를 찾아내기 위하여 과도한 수의 판독 동작들이 수행되게 한다.
물리적 블록 내에 적어도 하나의 이용가능한 그룹이 존재할 때 페이지를 물리적 블록 내로 기록하기 위하여 물리적 블록 내 그룹이 새로운 물리적 블록 대신에 획득될 수 있도록 블록들 내의 페이지들을 그룹화함으로써, 일반적으로 페이지 기록과 연관된 전체 효율은 개선될 수 있다. 즉, 데이터가 기록될 수 있게 하기 위하여 새로운 블록이 획득되어야 할 확률은 새로운 블록 내 그룹이 이용가능할 가능성 때문에 감소될 수 있다. 그룹들 또는 서브-그룹들을 사용함으로써, 블록들은 일반적으로 보다 효율적으로 할당될 수 있다.
플래시 메모리 시스템들, 또는 보다 일반적으로, 물리적 블록 내의 페이지들을 그룹화하는 것으로부터 이득을 취할 수 있는 비휘발성 메모리 장치들은 플래시 메모리 카드들 및 칩 세트들을 포함한다. 전형적으로, 플래시 메모리 시스템들은 호스트 시스템이 플래시 메모리 시스템들로 데이터를 기록하거나 플래시 메모리 시스템들로부터 데이터를 판독할 수 있도록 호스트 시스템과 결합하여 사용된다. 그러나 소정의 플래시 메모리 시스템들은 내장형 플래시 메모리 및 호스트 상에서 내장형 플래시 메모리에 대한 컨트롤러로서 작용하기 위해 실행되는 소프트웨어를 포함하고, 이것은 이하에서 도 2c에 관련하여 설명될 것이다. 도 2a를 참조하면, 비휘발성 메모리 장치, 예를 들어, CompactFlash 메모리 카드를 포함하는 일반적인 호스트 시스템이 설명될 것이다. 호스트 또는 컴퓨터 시스템(100)은 일반적으로 마이크로프로세서(108), 랜덤 액세스 메모리(RAM)(112), 및 입력/출력 회로(116)가 통신할 수 있게 하는 시스템 버스(104)를 포함한다. 호스트 시스템(100)은 일반적으로 다른 컴포넌트들, 예를 들어, 디스플레이 장치들 및 네트워크 장치를 포함할 수 있는데, 이것들은 예시의 목적으로 도시되지 않았다.
일반적으로, 호스트 시스템(100)은 스틸 이미지 정보, 오디오 정보, 및 비디오 이미지 정보를 포함하는 정보를 포착할 수 있는데, 상기 정보는 스틸 이미지 정보, 오디오 정보 및 비디오 이미지 정보에만 제한되는 것은 아니다. 상기 정보는 실시간으로 포착될 수 있고, 무선 방식으로 호스트 시스템(100)으로 전달될 수 있다. 호스트 시스템(100) 실질적으로 임의의 시스템일 수 있는 한편, 호스트 시스템(100)은 전형적으로 디지털 카메라, 비디오 카메라, 휴대용 통신 장치, 오디오 플레이어 또는 비디오 플레이어와 같은 시스템이다. 그러나 호스트 시스템(100)은 일반적으로 데이터 또는 정보를 저장하고 데이터 또는 정보를 검색하는 실질적으로 임의의 시스템일 수 있다.
호스트 시스템(100)은 또한 단지 데이터를 포착하기만 하거나, 아니면 단지 데이터를 검색하기만 하는 시스템일 수도 있다. 즉, 호스트 시스템(100)은 일 실시예로 데이터를 저장하는 전용 시스템이거나, 또는 호스트 시스템(100)은 데이터를 판독하는 전용 시스템일 수 있다. 예시의 방식으로, 호스트 시스템(100)은 단지 데이터를 기록 또는 저장하도록 배열된 메모리 라이터일 수 있다. 대안적으로, 호스트 시스템(100)은 전형적으로 데이터를 포착하기 위해서가 아니라 데이터를 판독하거나 검색하기 위해 배열된 MP3 플레이어와 같은 장치일 수 있다.
일 실시예로 이동식 비휘발성 메모리 장치인 비휘발성 메모리 장치(120)는 정보를 저장하기 위하여 버스(104)와 인터페이스하도록 배열된다. 선택적인 인터페이스 블록(130)은 비휘발성 메모리 장치(120)가 버스(104)와 간접적으로 인터페이스할 수 있게 한다. 당업자가 알 수 있듯이, 입력/출력 회로 블록(116)이 존재할 때, 입력/출력 회로 블록(116)은 버스(104) 상의 로딩을 감소시키기 위해 사용된다. 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 선택적인 메모리 제어 시스템(128)을 포함한다. 일 실시예에서, 비휘발성 메모리 장치(120)는 단일의 칩 또는 다이(die) 상에 구현될 수 있다. 대안적으로, 비휘발성 메모리 장치(120)는 멀티-칩 모듈 상에, 또는 칩 세트를 형성하여 비휘발성 메모리 장치(120)로서 함께 사용될 수 있는 다수의 이산 컴포넌트들 상에 구현될 수 있다. 비휘발성 메모리 장치(120)의 일 실시예는 도 2b에 관련하여 더욱 상세히 기술될 것이다.
비휘발성 메모리(124), 예를 들어, NAND 플래시 메모리와 같은 플래시 메모리는 데이터가 요구될 때 액세스되어 판독될 수 있도록 데이터를 저장하기 위해 배열된다. 비록 비휘발성 메모리(124)의 소정의 데이터는 소거될 수 없지만, 비휘발성 메모리(124)에 저장된 데이터는 또한 적절한 경우에 소거될 수 있다. 데이터 저장, 데이터 판독, 및 데이터 소거 프로세스는 일반적으로 메모리 제어 시스템(128)에 의해 제어되고, 메모리 제어 시스템(128)이 존재하지 않을 때는 마이크로프로세서(108)에 의해 실행되는 소프트웨어에 의해 제어된다. 비휘발성 메모리(124)의 동작은 비휘발성 메모리(124)의 수명이 필수적으로 비휘발성 메모리(124)의 섹션들이 실질적으로 똑같이 마모될 수 있게 함으로써 실질적으로 최대화되도록 관리될 수 있다.
비휘발성 메모리 장치(120)는 대체로 선택적인 메모리 제어 시스템(128), 즉, 컨트롤러를 포함하는 것으로서 기술되어 왔다. 종종, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124) 및 메모리 제어 시스템(128), 즉, 컨트롤러 기능들을 위한 별개의 칩들을 포함할 수 있다. 예를 들어, PC 카드들, CompactFlash 카드들, MultiMedia 카드들, 및 Secure Digital 카드들을 포함(그러나 이에 제한되지는 않음)하는 비휘발성 메모리 장치들은 별개의 칩 상에서 구현될 수 있는 컨트롤러들을 포함하는 반면, 다른 비휘발성 메모리 장치들은 별개의 칩 상에서 구현되는 컨트롤러들을 포함하지 않을 수 있다. 당업자가 알 수 있듯이, 비휘발성 메모리 장치(120)가 별개의 메모리 및 컨트롤러 칩들을 포함하지 않는 실시예에서, 메모리 및 컨트롤러 기능들은 단일 칩 내로 통합될 수 있다. 대안적으로, 메모리 제어 시스템(128)의 기능은, 예를 들어, 앞서 설명한 바와 같이, 비휘발성 메모리 장치(120)가 메모리 컨트롤러(128)를 포함하지 않는 실시예에서 마이크로프로세서(108)에 의해 제공될 수 있다.
도 2b를 참조하여, 비휘발성 메모리 장치(120)가 본 발명의 실시예에 따라 보다 상세히 설명될 것이다. 앞서 기술된 바와 같이, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124)를 포함하고, 메모리 제어 시스템(128)을 포함할 수 있다. 비록, 메모리(124)가 내장형 NAND 장치일 때, 예를 들어, 비휘발성 메모리 장치(120)는 제어 시스템(128)을 포함하지 않을 수 있지만, 메모리(124) 및 제어 시스템(128), 또는 컨트롤러는 비휘발성 메모리 장치(120)의 주요 컴포넌트이다. 메모리(124)는 반도체 기판 상에 형성된 메모리 셀들의 어레이일 수 있고, 여기서, 하나 이상의 데이터 비트들은 메모리 셀들의 개개의 저장 엘리먼트들 상에 2 이상의 전하 레벨들 중 하나를 저장함으로써 개개의 메모리 셀들에 저장된다. 비휘발성 플래시 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(EEPROM)는 상기 시스템들에 대한 공통 타입의 메모리에 대한 예이다.
현재 제어 시스템(128)은 버스(15)를 거쳐 호스트 컴퓨터 또는 데이터를 저장하기 위하여 메모리 시스템을 사용하고 있는 다른 시스템들로 통신한다. 버스(15)는 일반적으로 도 2a의 버스(104)의 일부이다. 제어 시스템(128)은 또한, 호스트에 의해 제공된 데이터를 기록하고 호스트에 의해 요청된 데이터를 판독하며 동작하는 메모리(124)에서 여러 정리작업(housekeeping) 기능들을 수행하기 위하여, 메모리 셀 어레이(11)를 포함하는 메모리(124)의 동작을 제어한다. 제어 시스템(128)은 연관된 비휘발성 소프트웨어 메모리, 여러 논리 회로들, 및 이와 유사한 것을 구비하는 범용 마이크로프로세서를 포함한다. 하나 이상의 상태 기계(state machine)들은 또한 종종 특정 루틴들의 성능을 제어하기 위하여 포함된다.
메모리 셀 어레이(11)는 전형적으로 어드레스 디코더들(17)을 통하여 제어 시스템(128) 또는 마이크로프로세서(108)에 의해 어드레싱된다. 디코더들(17)은 제어 시스템(128)에 의해 어드레싱되는 메모리 셀들의 그룹으로 데이터를 프로그램하거나 상기 메모리 셀들의 그룹으로부터 데이터를 판독하거나, 또는 상기 메모리 셀들의 그룹을 소거하기 위하여 정확한 전압들을 어레이(11)의 게이트 및 비트 라인들에 인가할 수 있다. 부가의 회로들(19)은 어드레싱된 셀들의 그룹 내로 프로그래밍되는 데이터에 의존하는 어레이의 엘리먼트들에 인가되는 전압들을 제어하는 프로그래밍 드라이버들을 포함할 수 있다. 회로들(19)은 또한 감지 증폭기들 및 메모리 셀들의 어드레싱된 그룹으로부터 데이터를 판독하는데 필수적인 다른 회로들을 포함할 수 있다. 어레이(11) 내로 프로그래밍될 데이터, 또는 어레이(11)로부터 최근에 판독된 데이터는 도시된 바와 같이 제어 시스템(128) 내에 위치될 수 있는 버퍼 메모리(21)에 저장될 수 있다. 제어 시스템(128)은 또한 일시적으로 명령 및 상태 데이터, 및 이와 유사한 것을 저장하기 위한 여러 레지스터들을 포함할 수 있다.
어레이(11)는 다수의 BLOCK 0-N 메모리 셀들로 분할될 수 있다. 플래시 EEPROM 시스템들에 대하여 공통적인 것으로, 블록은 소거의 최소 단위일 수 있다. 즉, 각각의 블록은 함께 소거되는 최소 개수의 메모리 셀들을 포함할 수 있다. 각각의 블록은 전형적으로 다수의 페이지들로 분할된다. 당업자가 알 수 있듯이, 페이지는 프로그래밍의 최소 단위일 수 있다. 즉, 기본적인 프로그래밍 동작은 메모리 셀들의 최소 일 페이지 내로 데이터를 기록하거나, 일 페이지로부터 데이터를 판독한다. 하나 이상의 데이터 섹터들은 전형적으로 각각의 페이지 내에 저장된다. 도 2b에 도시된 바와 같이, 하나의 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 전형적으로 섹터의 사용자 데이터로부터 계산된 에러 수정 코드(ECC)를 포함한다. 제어 시스템(128)의 일 부분(23)은 데이터가 어레이(11) 내로 프로그래밍되고 있을 때 ECC를 계산할 수 있고, 또한 데이터가 어레이(11)로부터 판독되고 있을 때 ECC를 체크할 수 있다. 대안적으로, ECC는 상관된 사용자 데이터와 상이한 페이지들, 또는 상이한 블록들에 저장된다.
사용자 데이터의 섹터는 전형적으로 자기 디스크 드라이브 내 섹터의 크기에 대응하여 512 바이트이다. 기술된 실시예에서, 오버헤드 데이터는 전형적으로 부가적인 16 바이트이다. 데이터의 일 섹터는 가장 흔하게 각각의 페이지에 포함되나, 2 이상의 섹터들은 대신에 일 페이지를 형성할 수 있다. 임의의 페이지 수는 일반적으로 일 블록을 형성할 수 있다. 예를 들어, 블록은 8 페이지로부터 512, 1024 또는 그 이상의 페이지까지로 형성될 수 있다. 블록의 수는 메모리 시스템에 대하여 목적하는 데이터 저장 용량을 제공하도록 선택된다. 어레이(11)는 전형적으로 몇 개의 서브-어레이들(미도시)로 분할되고, 각각의 서브-어레이는 블록들의 일 부분을 포함하며, 블록들은 여러 메모리 동작들의 실행에서 병렬처리 정도를 증가시키기 위하여 서로에 다소 독립적으로 동작한다. 다수의 서브-어레이들을 사용하는 것에 대한 예시는 미국 특허 제 5,890,192호에 개시되며, 이는 전체가 참조로서 본 명세서에 편입된다.
일 실시예에서, 비휘발성 메모리는 시스템, 예를 들어, 호스트 시스템 내로 내장형이다. 도 2c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 다이어그램 표현이다. 호스트 또는 컴퓨터 시스템(150)은 일반적으로 호스트 시스템(150)의 다른 컴포넌트들(미도시) 가운데 마이크로프로세서(158), RAM(162), 및 입력/출력 회로들(166)이 통신할 수 있게 하는 시스템 버스(154)를 포함한다. 비휘발성 메모리(174), 예를 들어, 플래시 메모리는 정보가 호스트 시스템(150) 내에 저장될 수 있게 한다. 인터페이스(180)는 정보가 비휘발성 메모리(174)로부터 판독되고 비휘발성 메모리(174)에 기록될 수 있도록 비휘발성 메모리(174)와 버스(154) 사이에 제공될 수 있다.
비휘발성 메모리(174)는 비휘발성 메모리(174)를 제어하기 위해 배열된 소프트웨어 및 펌웨어 양자 또는 둘 중 하나를 효과적으로 실행하는 마이크로프로세서(158)에 의해 관리될 수 있다. 즉, 마이크로프로세서(158)는 코드 장치들(미도시), 즉, 소프트웨어 코드 장치들 또는 펌웨어 코드 장치들을 실행할 수 있고, 상기 코드 장치들은 비휘발성 메모리(174)가 제어될 수 있게 한다. 상기 코드 장치들은 이하에서 기술될 마이크로프로세서(158) 내부에 CPU와 패키징된 플래시 메모리, 별개의 플래시 ROM, 또는 내부의 비휘발성 메모리(174)일 수 있는데, 상기 코드 장치들은 비휘발성 메모리(174)의 물리적 블록들이 어드레싱될 수 있게 하고, 정보들이 물리적 블록들 내로 저장, 물리적 블록들로부터 판독 및 물리적 블록들로부터 소거될 수 있게 한다.
일반적으로, 사용자가 데이터를 기록하는 경우, 그 사용자는 그 데이터를 매체, 예를 들어 플레시 메모리 카드 또는 플레시 메모리를 포함하는 내장형 시스템에 효과적으로 기록한다. 매체 내의 데이터의 포맷은 통상적으로 파일 시스템에 의하여 조직된다. 파일 시스템은 제어기와 관련되는 소프트웨어 또는 펌웨어(firmware)에 의하여 저장 매체에 관련되는 물리적 블록에 맵핑되는 논리적 블록 또는 보다 구체적으로는 논리적 블록의 페이지들에 데이터를 관련시킨다. 도 3은 본 발명의 실시예에 따라 논리적 블록을 갖는 파일 시스템 및 물리적 블록을 갖는 매체의 다이어그램 표현이다. 파일 시스템(314)의 논리적 블록(310)은 임의의 개수의 페이지(318)들을 포함한다. 논리적 블록, 예를 들어 논리적 블록(310a)에 포함되는 페이지(318)의 개수는 소거 유닛의 크기에 달려 있다. 예를 들어, 가장 작은 소거 유닛이 약 32 페이지를 포함한다면, 도시된 바와 같이 약 32 페이지들이 논리적 블록(310a)에 포함될 수 있다.
매체(534), 예를 들어, 내장형 플래시 메모리의 물리적 블록들(530)이 다수의 페이지(538)를 포함한다. 당업자가 알 수 있듯이, 물리적 블록들(530)에 포함된 페이지들(538)의 수는 전형적으로 논리적 블록들(510)에 포함된 페이지들(318)의 수와 동일하다.
도 5와 관련하여 이하에서 설명되는 바와 같이, 데이터 관리자 또는 데이터 관리 소프트웨어를 사용하여, 논리적 블록들(510)은 물리적 블록들(530)로 맵핑될 수 있다. 논리적 블록들(510)과 물리적 블록들(530) 사이의 맵핑은 각각 일대일 맵핑, 즉, 논리적 블록 어드레스에 있는 제 1 논리적 블록(510)이 실질적으로 논리적 블록 어드레스와 동일한 물리적 블록 어드레스에 있는 제 1 물리적 블록(530a)으로 맵핑되는 맵핑일 수 있다. 그러나 논리적 블록들(510)과 물리적 블록들(530) 사이의 맵핑은 종종 논리적 블록 어드레스에 있는 제 1 논리적 블록(310a)이 제 1 물리적 블록(530a)으로 맵핑되지 않는 대신에 상이한 물리적 블록, 예를 들어, 논리적 블록 어드레스와 동일하지 않은 물리적 블록 어드레스를 갖는 물리적 블록(530c)으로 맵핑되도록 이루어진다.
도 4는 본 발명의 실시예에 따른 논리적 블록과 물리적 블록 사이의 맵핑에 대한 다이어그램 표현이다. 논리적 블록(410)은 플레시 소프트웨어를 사용하여 블록으로 효과적으로 그룹화되는 임의의 개수의 페이지들을 포함한다. 설명된 실시예에서, 논리적 블록(410)은 대략 32 페이지를 포함한다.
당업자가 이해할 수 있는 바와 같이, 페이지들을 논리적 블록(410)으로 그룹화하는 것에 부가하여, 플레시 소프트웨어는 또한 논리적 블록을 물리적 블록으로 전환 또는 맵핑할 수 있다. 플레시 소프트웨어는 또한 논리적 블록(410)을 2개의 물리적 블록(414)으로 분할할 수 있다. 물리적 블록(414)의 크기가 변동될 수 있는 반면, 물리적 블록(414)의 크기는 일반적으로 논리적 블록(410)의 크기와 일치한다. 예를 들어, 논리적 블록(410)이 대략 32 페이지를 포함하는 경우에는, 물리적 블록(414)은 각각 대략 32 페이지를 포함하게 된다.
논리적 블록(410)을 물리적 블록들(414a, 414b)로 분할하는 것은 통상적으로 논리적 블록(410)과 물리적 블록들(414a, 414b)을 포함하는 전체 시스템이 포맷되는 경우에 발생한다. 통상적으로, 논리적 블록(410)을 분할하는 것은 논리적 블록(410)과 관련되는 페이지의 일부에 포함되는 데이터를 물리적 블록(414a)에 제공하고 논리적 블록(410)에 관련된 나머지 페이지에 포함되는 데이터를 물리적 블록(414b)에 제공하는 것을 야기할 수 있다. 예를 들어, 논리적 블록(410)과 관련된 페이지의 실질적인 절반, 예를 들어 (418)로 나타내어진 페이지 0-15가 물리적 블록(414a)으로 복사될 수 있으며, 그와 동시에 (422)로 표시된 페이지 16-31이 물리적 블록(414b)으로 복사될 수 있다. 응용예에 따라, 분할이 여러 다른 방법으로 이루어질 수 있음이 이해될 것이다. 일 실시예에서, 분할은 상대적으로 균일할 수 있으며 짝수 페이지가 하나의 물리적 블록으로 그룹화되는 동시에 홀수 페이지가 다른 물리적 블록으로 그룹화되도록 수행될 수 있다. 또한, 분할은 상대적으로 불균일할 수 있으며, 예를 들어 페이지 0-7이 자주 기록되는 반면 페이지 8-31이 거의 수정되지 않는다면, 페이지 0-7이 하나의 물리적 블록으로 그룹화될 수 있으며 그와 동시에 페이지 8-31이 다른 물리적 블록으로 그룹화될 수 있다.
도 5a는 논리적 블록과 물리적 블록, 즉 도 4의 논리적 블록(410)과 물리적 블록(414) 사이의 맵핑에 대한 다이어그램 표현이며, 이는 본 발명의 일 실시예에 따라 페이지들이 논리적 블록 및 물리적 블록에 할당되는 방법을 나타낸다. 초기에, 논리적 블록(410)이 효과적으로 물리적 블록들(414)로 분할되는 경우, (418)로 표시되는 논리적 블록 페이지 0-15는 (518)로 표시되는 물리적 블록(414a)의 물리적 블록 페이지 0-15로 효과적으로 복사되며, (422)로 표시되는 논리적 블록 페이지 16-31은 (522)로 표시되는 물리적 블록(414b)의 물리적 블록 페이지 0-15로 효과적으로 복사된다. 즉, 논리적 블록(410)과 관련된 페이지의 절반의 내용은 물리적 블록(414a)의 대응 페이지 세트(518)에 복사되며, 페이지의 나머지 절반의 내용은 물리적 블록(414b)의 제 1 절반 페이지(522)에 복사된다.
전체 시스템이 포맷되는 경우, 논리적 블록(410)과 관련되는 각각의 물리적 블록(414)의 실질적인 절반은 가용상태로 남아 있으며, 다시 말해 실질적으로 채워지지 않은 상태로 남아 있다. 구체적으로, (526)으로 표시되는 바와 같이 물리적 블록 페이지들 16-31은 물리적 블록(414a)에서 채워지지 않으며, (532)로 표시되는 바와 같이 물리적 블록 페이지들 16-31은 물리적 블록(414b)에서 채워지지 않는다. (526)으로 표시된 페이지 16-31은, 업데이트가 이루어지는 경우, (418)로 표시된 임의의 논리적 블록 페이지 0-15의 업데이트된 내용을 저장하는데 사용된다. 마찬가지로, (532)로 표시되 페이지 16-31은 업데이트가 이루어지는 경우, (422)로 표시되는 임의의 논리적 블록 페이지 16-31의 업데이트된 내용을 저장하는데 사용된다.
도 5b에 도시된 바와 같이, (418)로 표시된 논리적 블록 페이지의 일부인 논리적 블록 페이지(530a)가 업데이트되는 경우, 업데이트된 내용은 (526)으로 표시된 물리적 블록 페이지 16-31 내의 페이지(530b)에 기록된다. 즉, 논리적 블록 페이지(530a)와 관련된 업데이트가 이루어지는 경우 (518)로 표시된 물리적 블록 페이지 0-15의 모두를 재기록하기보다는 업데이트된 논리적 블록 페이지(530a)가 (414a)에서 가용한 제 1 미기록 페이지인 블록(530b)에 효과적으로 기록된다. 마찬가지로, 논리적 블록 페이지(422)에 포함되는 논리 블록 페이지(534a)가 업데이트되는 경우, 그 업데이트된 내용은 (532)로 표시되는 물리적 블록 페이지 16-31 내의 페이지(534b)에 기록된다.
논리적 블록 페이지, 예를 들어 논리적 블록 페이지(530a)의 업데이트된 내용이 물리적 블록 페이지(530b)에 저장되는 경우, 실질적으로 언제든지 논리적 블록 페이지(530a)와 관련된 내용이 액세스되며 물리적 블록 페이지(530b)의 내용이 액세스되도록 맵핑이 효과적으로 업데이트됨이 이해될 것이다. 다시 말해, 논리적 블록 페이지(530a)와 관련된 내용에 대한 액세스가 바람직한 경우 (518)로 표시되는 물리적 블록 페이지 0-15의 일부인 페이지에 대해 액세스하기 보다는, 논리적 블록 페이지(530a)와 관련된 최신 내용이 물리적 블록 페이지(530b)에서 액세스될 수 있다. 논리적 블록 페이지(530a)가 다시 업데이트되는 경우, 새로운 내용이 물리적 블록(414a) 내의 다음 미기록 물리적 블록 페이지에 저장될 수 있다. 논리적 블록 페이지(530a)에 관련된 내용이 액세스되는 경우마다 논리적 블록 페이지(530a)와 관련된 내용을 포함하며 가장 최근에 기록된 물리적 블록(414a)의 물리적 블록 페이지, 즉 물리적 블록 페이지(530b)가 액세스되도록 맵핑이 효과적으로 업데이트된다.
일반적으로, 물리적 블록(414)과 관련된 가용 페이지기 있는 한, 논리적 블록(410)에 관련된 업데이트는 상대적으로 낮은 오버헤드 비용으로 물리적 블록(414)에 기록될 수 있으며, 따라서 업데이트가 이루어지는 경우마다 물리적 블록(414)을 소거하고 논리적 블록(410)과 관련된 실질적인 모든 내용을 복사할 필요가 없게 된다. 그러나 물리적 블록(414)에 가용 블록 페이지가 없는 경우, 예를 들어 (526)으로 표시된 물리적 블록 페이지 16-31에 포함된 가용 페이지가 없는 경우에는, 업데이트된 내용은 가용 블록 페이지를 포함하지 않는 물리적 블록(414)에 복사될 수 없다.
업데이트된 내용이 복사될 수 있는 물리적 블록(414) 내의 가용 공간이 없는 경우에는, 가용 공간이 없는 물리적 블록(414)의 가장 최근 내용이 새로운 물리적 블록으로 복사될 수 있다. 도 5c를 참조하여, 최소 물리적 블록이 실질적으로 채워진 경우 예를 들어 도 5a 및 5b의 물리적 블록(414b)과 같은 물리적 블록을 새로운 물리적 블록으로 실질적으로 대체하는 것이 본 발명의 실시예에 따라 설명될 것이다. (532)로 표시된 페이지 16-31이 모두 기록되도록 물리적 블록(414b)이 실질적으로 충만되는 경우, 즉 물리적 블록과 관련된 실질적으로 모든 가용 페이지들이 기록된 경우, (422)로 표시된 논리적 블록 16-31과 관련된 가장 최근의 내용에 대응하는 물리적 블록(414b)의 내용이 새로운 물리적 블록(574)의 (580)으로 표시된 물리적 블록 페이지 0-15로 복사될 수 있다. 그 결과, 물리적 블록(574)의 (580)으로 표시된 페이지 0-15가 (422)로 표시된 논리적 블록 페이지 16-31과 관련된 현재 내용을 포함하게 되며, 물리적 블록(574)의 (584)로 표시된 페이지 16-31이 기록되지 않은 채로 남아 있어 가용하다.
일단 내용이 (580)으로 표시된 페이지 0-15로 복사되면, 물리적 블록(414b)이 소거될 수 있다. 물리적 블록(414b)의 내용을 물리적 블록(574)으로 복사하는 것에 부가하여, 물리적 블록(414b)을 소거하는 것은 상대적으로 상당량의 계산 자원을 소비할 수 있다. 그러나 실질적으로 어떠한 소거도 발생하지 않고 매우 적은 양의 페이지 복사가 발생하기 때문에, 초기에 물리적 블록(414)으로 분할되는 논리적 블록(410)을 포함하는 시스템의 효율은 강화되며, 이는 특정 블록과 관련된 모든 가용 페이지들이 기록될 때까지 특정 물리적 블록(414)에서의 소거 처리가 통상적으로 수행되지 않기 때문이다. 물리적 블록(414) 각각이 대략 16 가용 페이지를 포함하는 실시예에서, 시스템이 포맷되거나 또는 물리적 블록(414)이 초기에 할당되는 경우, 논리적 블록(410)과 관련되는 내용을 업데이트하는 것과 관련된 시스템의 성능이 대략 16배까지 향상될 수 있다. 물리적 블록(414b)의 모든 가용 페이지들이 충만되기 전까지, 즉 대략 16개의 업데이트가 이루어지기 전까지 물리적 블록(414), 예를 들어 물리적 블록(414b)의 내용을 복사할 필요성이 없으며 물리적 블록(414b)을 소거할 필요가 없기 때문에 상기 개선이 야기되는 것이다.
(422)로 표시된 페이지 16-31과 관련된 내용이 물리적 블록(574)에 복사된 후에, 업데이트가 (422)로 표시된 페이지 16-31과 관련된 내용에 대하여 이루어지는 매 경우마다, 업데이트된 페이지는 (584)로 표시된 페이지 16-31 중 하나에 저장되거나 또는 기록된다. 다시 말해, 물리적 블록(414b)이 소거되면, 물리적 블록(574)은 논리적 블록(410)의 (422)로 표시된 페이지 16-31과 관련되는 물리적 블록으로서 효과적으로 인계받는다.
앞서 언급된 바와 같이, FAT 파일 시스템의 FAT 또는 루트 디렉토리의 블록에 대응하는 논리적 블록은 플레시 메모리를 포함하는 전체 시스템의 성능을 향상시키기 위하여 분할될 수 있다. 분할된 블록이 사용되는 경우 FAT 파일 시스템에서 FAT 및 루트 디렉토리에 대해 요구되는 물리적 블록의 개수가 두 배가 될지라도, FAT 및 루트 디렉토리에 대한 블록의 개수가 전체 시스템에서 상대적으로 적기 때문에, 추가적인 물리적 블록의 사용이 상대적으로 미미한 것이다. 그러나 FAT 파일 시스템 내의 페이지가 자주 업데이트되는 경우, FAT 블록이 복사되고 소거되는 횟수를 감소시키는 것은 성능 향상에 상당한 기여를 한다. 그러나 분할 블록의 사용은 하나의 페이지가 주어진 시간에 업데이트되는 상황, 예를 들어 블록이 통상적으로 하나의 섹터에서 액세스되는 임의의 상황에서 유리할 수 있음이 이해될 것이다.
도 6을 참조하여, 분할 논리적 블록을 사용하는 하나의 방법이 본 발명의 실시예에 따라 설명될 것이다. 상기 설명된 바와 같이, 논리적 블록은 일반적으로 2개의 물리적 블록, 즉 물리적 블록 'A' 및 물리적 블록 'B'을 분할된다. 다시 말하면, 논리적 블록은, 그 논리적 블록의 몇몇 데이터가 물리적 블록 'A'에 저장될 수 있고, 그와 함께 본질적으로 그 데이터의 나머지가 물리적 블록 'B'에 저장될 수 있도록 맵핑될 수 있다. 예를 들어, 16 페이지가 물리적 블록 'A'에 저장되고 16 페이지가 물리적 블록 'B'에 저장되도록 32 페이지와 관련된 논리적 블록이 분할될 수 있다. 마찬가지로, 32 페이지가 물리적 블록 'A'에 저장되고 32 페이지가 물리적 블록 'B'에 저장되도록 64 페이지와 관련된 논리적 블록이 분할될 수 있다. 논리적 블록에 관련된 페이지들이 물리적 블록 'A' 및 물리적 블록 'B'에 저장된 후에, 물리적 블록 'A' 및 물리적 블록 'B' 양자 모두가 가용 공간, 예를 들어 업데이트된 페이지가 기록될 수 있는 공간을 포함하는 것이 이해될 것이다.
통상적으로, 비휘발성 메모리를 포함하는 전체 시스템이 포맷되는 경우 논리적 블록이 분할된다. 앞선 설명된 바와 같이, 분할된 논리적 블록은 일반적으로 단일의 섹터가 임의의 주어진 시간에서 업데이트되는 시스템에 사용된다. 즉, 논리적 블록과 관련된 실질적으로 단지 하나의 페이지가 임의의 시점에서 업데이트되는 경우, 논리적 블록을 분할하는 단계를 사용하는 것이 특히 바람직한데, 이는 페이지를 업데이트하는 것과 관련된 작동의 개수가 실질적으로 최소화되기 때문이다.
논리적 블록을 사용하는 처리(600), 예를 들어 논리적 블록을 업데이트하는 처리는 단계(608)에서 저장되거나 물리적 블록 'A'와 관련되는 페이지가 업데이트될 것인지 여부에 대하여 결정이 이루어지는 경우 시작된다. 페이지와 관련된 섹터가 업데이트될 경우에는, 전체 페이지가 업데이트되는데, 이는 페이지가 통상적으로 프로그래밍의 최소 유닛이기 때문이다. 물리적 블록 'A'와 관련된 페이지가 업데이트되지 않을 것으로 결정되는 경우, 처리 흐름은 물리적 블록 'B'과 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(612)로 이동한다. 물리적 블록 'B'와 관련된 페이지가 업데이트되지 않을 것으로 결정된다면, 논리적 블록을 업데이트하는 처리가 종료된다.
또는, 단계(612)에서 물리적 블록 'B'와 관련된 페이지가 업데이트될 것으로 결정되는 경우에는, 업데이트된 내용이 물리적 블록 'B'의 가용 페이지로 복사된다. 통상적으로, 업데이트된 내용은 물리적 블록 'B'과 관련된 제 1 가용 페이지로 복사된다. 업데이트된 내용이 복사되면, 단계(620)에서 물리적 블록 'B'이 충만되어 있는지에 대한 결정이 이루어진다. 즉, 물리적 블록 'B'에 잔존하는 추가적인 가용 페이지가 존재하는지 여부가 결정된다.
물리적 블록 'B'가 충만되지 않은 것으로 단계(620)에서 결정된다면, 추가적인 업데이트가 물리적 블록 'B'와 관련된 페이지에 대하여 이루어지는 것이 지시된다. 따라서, 처리 흐름은 추가적인 업데이트, 예를 들어 물리적 블록 'A'와 관련된 페이지에 대한 업데이트가 이루어질 것인지에 대한 결정이 이루어지는 단계(608)로 회귀한다. 단계(620)에서 물리적 블록 'B'가 충만된 것으로 결정되는 경우에는, 물리적 블록 'B'에 잔존하는 가용 페이지가 더이상 존재하는 않는다는 것을 의미한다. 이와 같이, 단계(624)에서, 새로운 물리적 블록이 가장 최근의 내용을 포함하고 장래의 업데이트를 위한 가용 페이지를 가질 수 있도록 물리적 블록 'B'에 나타나는 각각의 논리적 페이지에 대응하는 가장 최근의 내용이 새로운 물리적 블록에 복사된다. 구체적으로, 물리적 블록 'B'에 나타나는 각각의 논리적 페이지에 속하는 가장 최근의 정보가 실질적으로 순서대로 새로운 물리적 블록에 복사된다. 예를 들어, 물리적 블록 'B'이 31의 분할된 논리적 블록 중 16 페이지를 포함하는 경우, 물리적 블록 'B'에 저장되는 31의 분할된 논리적 블록 중 16 페이지만이 새로운 물리적 블록에 저장되는 것이다.
가장 최근의 내용이 새로운 물리적 블록에 복사되면, 물리적 블록 'B'가 단계(628)에서 소거되며, 새로운 물리적 블록은 물리적 블록 'B'으로서 효과적으로 재설정된다. 그 후, 처리 흐름은 물리적 블록 'A'에 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(608)로 회귀한다.
단계(608)로 회귀하여, 물리적 블록 'A'와 관련된 페이지가 업데이트될 것으로 결정되는 경우에는, 업데이트될 페이지와 관련된 업데이트된 내용은 물리적 블록 'A' 내의 가용 페이지에 복사된다. 내용이 가용 페이지에 복사되거나 기록된 후에, 단계(636)에서 물리적 블록 'A'가 충만되었는지 여부가 결정된다. 물리적 블록 'A'가 충만되지 않다고 결정되는 경우에는, 추가적인 업데이트가 물리적 블록 'A'와 관련된 페이지에 대하여 이루어질 수 있다. 따라서, 처리 흐름은 물리적 블록 'A'와 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(608)로 회귀하게 된다.
다른 한편으로, 단계(636)에서 물리적 블록 'A'가 충만되었다고 결정되는 경우에는, 물리적 블록 'A'에 잔존하는 가용 페이지가 더이상 존재하는 않는다는 것을 나타낸다. 따라서, 물리적 블록 'A'에 나타난 각각의 논리적 페이지에 대응하는 가장 최근의 내용이 단계(640)에서 새로운 물리적 블록에 복사된다. 내용이 새로운 물리적 블록에 복사된 후에, 물리적 블록 'A'이 단계(644)에서 소거되며, 새로운 물리적 블록은 물리적 블록 'A'로 설정된다. 다시 말해, 새로운 물리적 블록은 물리적 블록 'A'로 알려지게 된다. 새로운 물리적 블록이 물리적 블록 'A'로 설정된 후에, 처리 흐름은 물리적 블록 'A'와 관련된 페이지가 업데이트될 것인지 여부에 관하여 결정이 이루어지는 단계(608)로 회귀하게 된다.
분할된 논리적 블록을 사용하는 방법은 폭넓게 변화할 수 있다. 즉, 도 6과 관련하여 설명된 방법 이외의 방법이 사용될 수 있다. 분할된 논리적 블록을 사용하는 또 하나의 적절한 방법이 도 7을 참조하여 설명될 것이다. 분할된 블록을 이용하는, 예를 들어 업데이트하는 처리(700)는 일반적으로 논리적 블록이 두 개의 물리적 블록들, 즉 물리적 블록 'A' 및 물리적 블록 'B'으로 분할된 후에 발생한다. 일반적으로, 논리적 블록은 비휘발성 메모리를 포함하는 전체 시스템이 포맷되는 경우에 분할된다.
논리적 블록이 분할된 후에, 단계(708)에서 물리적 블록 'A'에 저장된, 또는 그와 관련된 페이지가 업데이트될 것인지 여부가 결정되면서 처리(700)가 개시된다. 물리적 블록 'A'와 관련된 페이지가 업데이트되지 않을 것으로 결정되는 경우에는 처리 흐름은 물리적 블록 'B'와 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(712)로 이동한다. 물리적 블록 'B'와 관련된 페이지가 업데이트되지 않을 것으로 결정되는 경우에는, 분할된 논리적 블록을 업데이트하는 처리가 종료된다.
또는, 단계(712)에서 물리적 블록 'B'와 관련된 페이지가 업데이트될 것으로 결정되는 경우에는, 단계(714)에서 물리적 블록 'B'가 충만되었는지 여부, 즉 물리적 블록 'B'에 업데이트된 내용을 기록할 여유가 있는지 여부가 결정된다. 물리적 블록 'B'가 충만되지 않았으며 그 물리적 블록 'B'에 업데이트된 내용을 기록할 여유가 있다고 결정된 경우에는, 그 업데이트된 내용은 단계(716)에서 물리적 블록 'B'의 가용 페이지에 복사된다. 통상적으로, 업데이트된 내용은 물리적 블록 'B'와 관련된 제 1 가용 페이지에 복사된다. 업데이트된 내용이 복사되면, 처리 흐름은 물리적 블록 'A'와 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(708)로 회귀한다.
단계(714)로 회귀하여, 물리적 블록 'B'가 충만되었으며, 따라서 그 물리적 블록 'B'에는 아무런 추가적인 가용 페이지가 잔존하지 않는다는 것으로 결정되는 경우에는, 새로운 물리적 블록이 가장 최근의 내용을 포함할 수 있고 장래의 업데이트를 위한 가용 페이지를 가질 수 있도록 물리적 블록 'B'에 나타난 각각의 페이지에 대응되는 가장 최근의 내용이 새로운 물리적 블록에 복사된다. 가장 최근의 내용을 복사하는 단계는 물리적 블록 'B'가 충만되었기 때문에 물리적 블록 'B'에 저장될 수 없는 업데이트된 내용을 복사하는 단계를 포함하며, 각각의 논리적 페이지에 관련되는 물리적 블록 'B'에 저장된 상기 가장 최근의 내용은 먼저 저장되었다.
가장 최근의 내용이 새로운 물리적 블록으로 기록되면, 물리적 블록 'B'는 단계(728)에서 소거되며, 새로운 물리적 블록은 물리적 블록 'B'의 목적으로 기능하며, 예를 들어 새로운 물리적 블록은 본질적으로 물리적 블록 'B'가 되는 것이다. 그 후, 처리 흐름은 물리적 블록 'A'와 관련된 페이지가 업데이트될 것인지 여부에 대한 결정이 이루어지는 단계(708)로 회귀한다.
단계(708)로 회귀하여, 물리적 블록 'A'과 관련된 페이지가 업데이트될 것으로 결정되는 경우에는, 단계(710)에서 물리적 블록 'A'가 충만되었는지 여부가 결정된다. 물리적 블록 'A'가 충만되지 않은 것으로 결정되는 경우에는, 업데이트될 페이지와 관련된 업데이트된 내용은 물리적 블록 'A' 내의 가용 페이지에 복사된다. 내용이 가용 페이지에 복사되거나 기록된 후에, 처리 흐름은 단계(708)로 회귀한다.
한편, 단계(710)에서 물리적 블록 'A'이 충만되었다고 결정되는 경우에는, 이는 물리적 블록 'A'와 관련된 페이에 대해서는 추가적인 업데이트가 이루어질 수 없음을 의미한다. 따라서, 일반적으로 물리적 블록 'A'에 나타난 각각의 논리적 페이지에 대응되는 가장 최근의 내용이 단계(740)에서 새로운 물리적 블록에 복사된다. 새로운 물리적 블록에 내용이 기록되면, 물리적 블록 'A'은 단계(744)에서 소거되고, 새로운 물리적 블록은 물리적 블록 'A'로 설정된다. 새로운 물리적 블록이 물리적 블록 'A'로 설정된 후에는, 처리 흐름은 물리적 블록 'A'와 관련된 페이지가 업데이트될 것인지 여부가 결정되는 단계(708)로 회귀하게 된다.
일반적으로, 논리적 블록을 다수의 물리적 블록으로 분할하는 것과 업데이트가 이루어질 수 있게 하는 것과 관련된 기능성은 예를 들어 프로그램 코드 장치 또는 호스트 시스템에 제공된다. 마모 균등화(wear leveling)가 일어날 수 있게 하기 위하여 호스트 시스템에 제공된 소프트웨어 또는 펌웨어와 연관된 적절한 시스템 구조의 일 실시예는 도 8에 도시된다. 시스템 구조(900)는 일반적으로 여러가지 모듈들을 포함하는데, 상기 모듈들은 애플리케이션 인터페이스 모듈(804), 시스템 관리자 모듈(808), 데이터 관리자 모듈(812), 데이터 무결성 관리자(data integrity manager)(816), 및 장치 관리자 및 인터페이스 모듈(820)을 포함할 수 있고, 이에만 제한되는 것은 아니다. 일반적으로, 시스템 구조(900)는 프로세서, 예를 들어, 도 2a의 프로세서(108)에 의해 액세스될 수 있는 소프트웨어 코드 장치들 또는 펌웨어를 사용하여 구현될 수 있다.
일반적으로, 애플리케이션 인터페이스 모듈(804)는 호스트 운영 시스템 또는 사용자와 직접 통신하도록 배열될 수 있다. 애플리케이션 인터페이스 모듈(804)은 또한 시스템 관리자 모듈(808) 및 데이터 관리자 모듈(812)과 통신한다. 사용자가 플래시 메모리를 판독, 기록, 또는 포맷하기 원할 때, 사용자는 운영 시스템에 요청들을 보내고, 요청들은 애플리케이션 인터페이스 모듈(804)로 전달된다. 애플리케이션 인터페이스 모듈(804)은 요청들에 의존하여 시스템 관리자 모듈(808) 또는 데이터 관리자 모듈(812)로 요청들을 안내한다.
시스템 관리자 모듈(808)은 시스템 초기화 서브모듈(824), 소거 카운트 블록 관리 서브모듈(826), 및 전원 관리 블록 서브모듈(830)을 포함한다. 시스템 초기화 서브모듈(824)은 일반적으로 초기화 요청이 프로세싱될 수 있게 하도록 배열되고, 전형적으로 소거 카운트 블록 관리 서브모듈(826)과 통신한다. 소거 카운트 블록 관리 서브모듈(826)은 블록들의 소거 카운트들이 저장되게 하는 기능, 및 평균 소거 카운트가 개개의 소거 카운트들을 사용하여 계산 및 업데이트되게 하는 기능을 포함한다. 소거 카운트들의 사용은 2002년 10월 28일에 출원되어 동시계류 중인 미국 특허출원 제 10/281,739호(Atty. Docket No. SANDP023)에 기술되어 있고, 상기 출원은 전체가 참조로서 본 명세서에 편입된다. 시스템 초기화 모듈(824)은 또한 예를 들어 FAT 파일 시스템에 대하여 시스템 블록 리스트 및 분할된 블록 리스트를 생성하도록 배치되는데, 이는 분할된 블록들이 식별되는 것을 가능하게 한다. 상기 분할된 블록의 리스트는 분할된 블록 및 그 분할된 블록에 대응되는 물리적 블록이 용이하게 식별되는 것을 가능하게 한다.
애플리케이션 인터페이스 모듈(804)과 통신하는 것에 부가하여, 시스템 관리자 모듈(808)은 또한 데이터 관리자 모듈(812), 및 장치 관리자 및 인터페이스 모듈(820)과 통신한다. 데이터 관리자 모듈(812)은 시스템 관리자 모듈(808) 및 애플리케이션 인터페이스 모듈(804)과 통신하며, 논리적 섹터들을 물리적 섹터들로 효과적으로 전환하는 섹터 맵핑을 제공하는 기능을 포함할 수 있다. 즉, 데이터 관리자 모듈(812)은 논리적 블록들을 물리적 블록들로 맵핑하도록 배열된다. 데이터 관리자 모듈(812)은 또한 운영 시스템 및 파일 시스템 인터페이스 층들과 연관된 기능을 포함할 수 있고, 블록들 내 그룹들이 관리될 수 있게 한다.
장치 관리자 및 인터페이스 모듈(820)은 시스템 관리자 모듈(808), 데이터 관리자(812) 및 데이터 무결성 관리자(816)와 통신하고, 전형적으로 플래시 메모리 인터페이스를 제공하며, 하드웨어 추상화(hardware abstraction)와 연관된 기능, 예를 들어, I/O 인터페이스를 포함한다. 데이터 무결성 관리자 모듈(816)은 다른 기능들 가운데 ECC 핸들링을 제공한다.
비록 본 발명의 단지 몇몇 실시예들만이 설명되었지만, 본 발명은 본 발명의 사상 또는 범위를 벗어나지 않으면서 다수의 다른 특정 형태들로 구현될 수 있다. 예를 들어, 논리적 블록이 2개의 물리적 블록으로 분할되는 것으로 설명되었지만, 논리적 블록이 일반적으로 임의의 개수의 물리적 블록들로 분할될 수 있다. 즉, 논리적 블록이 2이상의 물리적 블록으로 분할될 수 있는 것이다.
논리적 블록이 2개의 물리적 블록으로 분할되는 경우, 물리적 블록은 일반적으로 각각 논리적 블록과 관련되는 내용의 대략 절반을 포함한다. 즉, 각각의 물리적 블록은 초기에는 논리적 블록과 관련된 내용의 절반으로 채워질 수 있다. 그러나, 논리적 블록과 관련된 내용이 물리적 블록들 간에 상대적으로 불균일하게 분할될 수 있음이 이해될 것이다. 예를 들어, 논리적 블록과 관련된 내용의 50 퍼센트 미만이 하나의 물리적 블록에 기록될 수 있으며 그 논리적 블록과 관련된 나머지 내용이 다른 물리적 블록에 기록될 수 있다. 상대적으로 불균일하게 논리적 블록을 분할하는 것은, 몇몇 페이지가 다른 페이지들에 비하여 보다 자주 새롭게 기록되거나 재기록되는 것이 관찰되는 실시예에서 유리한데, 이는 자주 기록되는 페이지와 관련된 물리적 블록에 포함된 보다 이용가능한 공간이 요구되는 전체 복사 및 소거 동작의 회수를 감소시킬 수 있기 때문이다.
일반적으로, 논리적 블록을 다수의 물리적 블록들로 분할하는 것은 FAT 블록 및 루트 디렉토리 블록이 저장되는 시스템 영역에 특히 적절한 것으로 설명되어왔다. 다시 말해, 분할된 블록은 통상적으로 시스템 영역 내에 포함되는데, 이는 FAT 블록 및 루트 디렉토리 블록과 같은 블록들이 일반적으로 단일의 섹터 또는 단일의 페이지에서 액세스되기 때문이다. 그러나, 본 발명의 발명 사상을 벗어나지 않으면서 통상적으로 한번에 한 페이지씩 기록되거나 업데이트되는 실질적으로 임의의 블록이 분할된 블록으로 될 수 있음이 이해될 것이다.
플레시 메모리의 크기 및 그 플레시 메모리 내의 블록의 크기는 폭넓게 변동될 수 있다. 블록의 크기가 일반적으로 대략 32 페이지를 포함하는 것으로 설명되었지만, 블록은 임의의 개수의 페이지를 포함할 수 있으며, 보다 일반적으로는 블록 이루는 임의의 개수의 요소들을 포함할 수 있다. 예를 들어, 블록은 대략 64 페이지를 포함할 수 있다. 그 결과, 시스템 내의 블록의 개수가 변동될 수 있다. 512 Mb NAND 플레시 메모리 내에서, 각각 대략 512 바이트를 포함하는 대략 32개 페이지를 블록이 포함한다면, 전체 4096개의 물리적 블록이 플레시 메모리에 존재하게 되는 것이다. 또는, 동일한 512 Mb NAND 플레시 메모리 내에서, 각각의 물리적 블록이 각각 대략 512 바이트를 포함하는 페이지를 64개 포함하는 경우에는, 전체 2048개의 물리적 블록들이 플레시 메모리 내에 존재하게 되는 것이다. 일반적으로 페이지의 크기 역시 변동될 수 있다.
본 발명의 여러 방법과 관련된 단계들은 광범위하게 변동될 수 있다. 일바적으로, 단계들이 추가되고, 제거되고, 재배열되고, 그리고 변경될 수 있다. 따라서, 본 예들은 예시적인 것이지 제한적인 것은 아닌 것으로 간주될 것이며, 본 발명은 본 명세서에서 주어진 세부 사항들에 제한되지 않으며 첨부된 청구 범위의 범위내에서 수정될 수 있다.

Claims (49)

  1. 비휘발성 메모리의 다수의 물리적 블록들을 논리적 블록에 관련시키는 방법으로서, 상기 논리적 블록은 다수의 논리적 블록 요소들을 포함하며, 상기 방법은
    상기 다수의 논리적 블록 요소들을 제 1 논리적 세트 및 제 2 논리적 세트를 포함하는 세트들로 실질적으로 그룹화(group)하는 단계;
    상기 제 1 논리적 세트와 관련된 데이터를 상기 다수의 물리적 블록 중 제 1 물리적 블록에 제공하는 단계; 및
    상기 제 2 논리적 세트와 관련된 데이터를 상기 다수의 물리적 블록 중 제 2 물리적 블록에 제공하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  2. 제 1 항에 있어서, 상기 제 1 물리적 블록은 다수의 물리적 블록 요소들을 포함하며, 상기 방법은
    상기 제 1 물리적 블록에 포함되는 상기 다수의 물리적 블록 요소들을 제 1 물리적 세트 및 제 2 물리적 세트로 그룹화하는 단계를 더 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  3. 제 2 항에 있어서, 상기 제 1 논리적 세트와 관련된 데이터를 상기 제 1 물리적 블록에 제공하는 단계는 상기 데이터를 상기 제 1 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  4. 제 3 항에 있어서, 상기 제 2 물리적 블록은 다수의 물리적 블록 요소들을 포함하며, 상기 방법은
    상기 제 2 물리적 블록에 포함되는 상기 다수의 물리적 블록 요소들을 제 3 물리적 세트 및 제 4 물리적 세트로 그룹화하는 단계를 더 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  5. 제 4 항에 있어서, 상기 제 2 논리적 세트와 관련되는 데이터를 상기 제 2 물리적 블록에 제공하는 단계는 상기 데이터를 상기 제 3 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  6. 제 5 항에 있어서, 상기 제 1 논리적 세트 및 상기 제 2 논리적 세트는 실질적으로 동일한 크기이며, 상기 제 1 물리적 세트 및 상기 제 3 물리적 세트는 실질적으로 동일한 크기인, 물리적 블록을 논리적 블록에 관련시키는 방법.
  7. 제 5 항에 있어서, 상기 방법은
    상기 제 1 논리적 세트와 관련되는 새로운 데이터를 기록하는 단계를 더 포함하며, 상기 제 1 논리적 세트와 관련되는 상기 새로운 데이터를 기록하는 상기 단계는 상기 새로운 데이터를 상기 제 2 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  8. 제 7 항에 있어서, 상기 방법은
    상기 제 1 물리적 블록이 충만한지를 결정하는 단계; 및
    상기 제 1 물리적 블록이 충만하다고 결정되는 경우 상기 데이터 및 상기 새로운 데이터 중 적어도 몇몇을 물리적 요소의 제 5 물리적 세트 및 물리적 요소의 제 6 물리적 세트를 포함하는 제 3 물리적 블록에 기록하는 단계를 더 포함하며, 상기 제 3 물리적 블록에 상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 기록하는 상기 단계는 상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 상기 제 5 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  9. 제 8 항에 있어서, 상기 데이터의 상기 적어도 몇몇은 상기 데이터에 포함되는 가장 최근에 저장된 데이터를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  10. 제 5 항에 있어서, 상기 방법은
    상기 제 2 논리적 세트와 관련되는 새로운 데이터를 기록하는 단계를 더 포함하며, 상기 제 2 논리적 세트와 관련되는 상기 새로운 데이터를 기록하는 상기 단계는 상기 새로운 데이터를 상기 제 4 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  11. 제 10 항에 있어서, 상기 방법은
    상기 제 2 물리적 블록이 충만하는지를 결정하는 단계; 및
    상기 제 2 물리적 블록이 충만하다고 결정되는 경우 상기 데이터 및 상기 새로운 데이터 중 적어도 몇몇을 물리적 요소의 제 5 물리적 세트 및 물리적 요소의 제 6 물리적 세트를 포함하는 제 3 물리적 블록에 기록하는 단계를 더 포함하며, 상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 상기 제 3 물리적 블록에 기록하는 상기 단계는 상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 상기 제 5 물리적 세트에 기록하는 단계를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  12. 제 10 항에 있어서, 상기 데이터의 상기 적어도 몇몇은 상기 데이터에 포함되는 가장 최근에 저장된 데이터를 포함하는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  13. 제 1 항에 있어서, 상기 논리적 블록은 한번에 하나의 논리적 요소에 액세스되는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  14. 제 1 항에 있어서, 상기 논리적 블록은 파일 할당 테이블 및 루트 디렉토리 중 하나와 관련되는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  15. 제 1 항에 있어서, 상기 논리적 블록은 파일 시스템에 관련되며, 상기 제 1 물리적 블록 및 상기 제 2 물리적 블록은 플레시 메모리에 관련되는, 물리적 블록을 논리적 블록에 관련시키는 방법.
  16. 제 1 항에 있어서, 상기 논리적 요소들은 논리적 페이지들이며 상기 물리적 요소들은 물리적 페이지들인, 물리적 블록을 논리적 블록에 관련시키는 방법.
  17. 다수의 물리적 블록들을 논리적 블록에 관련시키기 위한 시스템으로서, 상기 논리적 블록은 다수의 논리적 블록 페이지들을 포함하고, 상기 시스템은
    상기 다수의 물리적 블록들을 포함하는 비휘발성 메모리;
    상기 다수의 논리적 블록 페이지들을 제 1 논리적 세트 및 제 2 논리적 세트를 포함하는 세트들로 실질적으로 그룹화하기 위한 코드 장치들;
    상기 제 1 논리적 세트와 관련되는 데이터를 상기 다수의 물리적 블록들 중 제 1 물리적 블록에 제공하기 위한 코드 장치들;
    상기 제 2 논리적 세트와 관련되는 데이터를 상기 다수의 물리적 블록들 중 제 2 물리적 블록에 제공하기 위한 코드 장치들; 및
    상기 코드 디바이스들을 저장하는 메모리 장치를 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  18. 제 17 항에 있어서, 상기 제 1 물리적 블록은 다수의 물리적 블록 페이지들을 포함하며, 상기 시스템은
    상기 제 1 물리적 블록에 포함되는 상기 다수의 물리적 블록 페이지들을 제 1 물리적 세트 및 제 2 물리적 세트로 그룹화하기 위한 코드 장치들을 더 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  19. 제 18 항에 있어서, 상기 제 1 논리적 세트와 관련되는 상기 데이터를 상기 제 1 물리적 블록에 제공하는 상기 코드 장치들은 상기 데이터를 상기 제 1 물리적 세트에 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  20. 제 19 항에 있어서, 상기 제 2 물리적 블록은 다수의 물리적 블록 페이지들을 포함하며, 상기 시스템은
    상기 제 2 물리적 블록에 포함되는 상기 다수의 물리적 블록 페이지들을 제 3 물리적 세트 및 제 4 물리적 세트로 그룹화하기 위한 코드 장치들을 더 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  21. 제 20 항에 있어서, 상기 제 2 논리적 세트와 관련되는 상기 데이터를 상기 제 2 물리적 블록에 제공하기 위한 상기 코드 장치들은 상기 데이터를 상기 제 3 물리적 세트에 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  22. 제 21 항에 있어서, 상기 시스템은
    상기 제 1 논리적 세트와 관련되는 새로운 데이터를 기록하기 위한 코드 장치들을 더 포함하며, 상기 제 1 논리적 세트와 관련되는 상기 새로운 데이터를 기록하기 위한 상기 코드 장치들은 상기 새로운 데이터를 상기 제 2 물리적 세트에 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  23. 제 22 항에 있어서, 상기 시스템은
    상기 제 1 물리적 블록이 충만되는지를 결정하기 위한 코드 장치들; 및
    상기 제 1 물리적 블록이 충만된 것으로 결정된 경우 상기 데이터 및 상기 새로운 데이터 중 적어도 몇몇을 물리적 페이지의 제 5 물리적 세트 및 물리적 페이지의 제 6 물리적 세트를 포함하는 제 3 물리적 블록에 기록하기 위한 코드 장치들을 더 포함하며, 상기 데이터 및 상기 새로운 데이터의 상기 적어도 몇몇을 상기 제 3 물리적 블록에 기록하기 위한 상기 코드 장치들은 상기 데이터 및 상기 새로운 데이터의 상기 적어도 몇몇을 상기 제 5 물리적 세트에 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  24. 제 23 항에 있어서, 상기 데이터의 적어도 몇몇을 기록하기 위한 상기 코드 장치들은 상기 데이터에 포함되는 가장 최근에 저장된 데이터를 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  25. 다수의 물리적 블록들을 논리적 블록에 관련시키기 위한 시스템으로서, 상기 논리적 블록은 다수의 논리적 블록 요소들을 포함하며, 상기 시스템은
    상기 다수의 물리적 블록들을 포함하는 비휘발성 메모리;
    상기 다수의 논리적 블록 요소들을 제 1 논리적 세트 및 제 2 논리적 세트를 포함하는 세트들로 실질적으로 그룹화하기 위한 수단;
    상기 제 1 논리적 세트와 관련되는 데이터를 상기 다수의 물리적 블록들 중 제 1 물리적 블록에 제공하기 위한 수단; 및
    상기 제 2 논리적 세트와 관련되는 데이터를 상기 다수의 물리적 블록들 중 제 2 물리적 블록에 제공하기 위한 수단을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  26. 제 25 항에 있어서, 상기 제 1 물리적 블록은 다수의 물리적 블록 요소들을 포함하며, 상기 시스템은
    상기 제 1 물리적 블록에 포함되는 상기 다수의 물리적 블록 요소들을 제 1 물리적 세트 및 제 2 물리적 세트로 그룹화하기 위한 수단을 더 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  27. 제 26 항에 있어서, 상기 제 1 논리적 세트와 관련되는 상기 데이터를 상기 제 1 물리적 블록에 제공하기 위한 상기 수단은 상기 데이터를 상기 제 1 물리적 세트에 기록하기 위한 수단을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  28. 제 27 항에 있어서, 상기 제 2 물리적 블록은 다수의 물리적 블록 요소들을 포함하며, 상기 시스템은 상기 제 2 물리적 블록에 포함되는 상기 다수의 물리적 블록 요소들을 제 3 물리적 세트 및 제 4 물리적 세트로 그룹화하기 위한 수단을 더 포함하며, 상기 제 2 논리적 세트와 관련되는 상기 데이터를 상기 제 2 물리적 블록에 제공하기 위한 상기 수단은 상기 데이터를 상기 제 3 물리적 세트에 기록하기 위한 수단을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  29. 제 28 항에 있어서, 상기 시스템은
    상기 제 1 논리적 세트와 관련되는 새로운 데이터를 기록하기 위한 수단 - 상기 제 1 논리적 세트와 관련되는 상기 새로운 데이터를 기록하기 위한 상기 수단은 상기 새로운 데이터를 상기 제 2 물리적 세트에 기록하기 위한 수단을 포함함 - ;
    상기 제 1 물리적 블록이 충만되는지를 결정하기 위한 수단; 및
    상기 제 1 물리적 블록이 충만된다고 결정되는 경우 상기 데이터 및 상기 새로운 데이터 중 적어도 몇몇을 물리적 요소들의 제 5 물리적 세트 및 물리적 요소들의 제 6 물리적 세트를 포함하는 제 3 물리적 블록에 기록하기 위한 수단을 더 포함하며,
    상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 상기 제 3 물리적 블록에 기록하기 위한 코드 장치들은 상기 데이터 및 상기 새로운 데이터 중 상기 적어도 몇몇을 제 5 물리적 세트에 기록하기 위한 코드 장치들을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  30. 제 29 항에 있어서, 상기 데이터 중 적어도 몇몇을 기록하기 위한 상기 수단은 상기 데이터에 포함되는 가장 최근에 저장된 데이터를 기록하기 위한 수단을 포함하는, 물리적 블록을 논리적 블록에 관련시키기 위한 시스템.
  31. 메모리 장치로서,
    다수의 논리적 요소들을 포함하는 논리적 블록을 확인하도록 배치되는 제 1 컴포넌트;
    제 1 물리적 블록 및 제 2 물리적 블록을 포함하는 제 2 컴포넌트 - 상기 제 1 물리적 블록 및 상기 제 2 물리적 블록은 각각 다수의 물리적 요소들을 포함함 - ;
    상기 논리적 블록에 포함되는 상기 다수의 논리적 요소들을 제 1 논리적 세트 및 제 2 논리적 세트로 실질적으로 분할하도록 배치되는 제 3 컴포넌트를 포함하며,
    상기 제 3 컴포넌트는 상기 제 1 논리적 세트와 관련되는 내용들을 상기 제 1 물리적 블록에 기록하고 상기 제 2 논리적 세트와 관련되는 내용들을 상기 제 2 물리적 블록에 기록하도록 추가적으로 배치되는, 메모리 장치.
  32. 제 31 항에 있어서, 상기 제 1 물리적 블록은 상기 다수의 물리적 요소들의 제 1 물리적 요소 세트 및 상기 다수의 물리적 요소들의 제 2 물리적 요소 세트를 포함하며, 상기 제 3 컴포넌트는 상기 제 1 논리적 세트와 관련되는 내용들을 상기 제 1 물리적 요소 세트들에 기록하도록 배치되는, 메모리 장치.
  33. 제 32 항에 있어서, 상기 제 3 컴포넌트는 상기 제 1 논리적 세트와 관련되는 업데이트되는 내용들을 상기 제 2 물리적 요소 세트에 기록하도록 추가적으로 배치되는, 메모리 장치.
  34. 제 33 항에 있어서, 상기 제 3 컴포넌트는 상기 제 1 물리적 블록이 실질적으로 충만되는지를 결정하고 상기 제 1 물리적 블록이 실질적으로 충만된다고 결정되는 경우 상기 내용들 및 상기 업데이트된 내용들 중 적어도 몇몇을 제 3 물리적 블록에 복사하도록 추가적으로 배치되는, 메모리 장치.
  35. 제 34 항에 있어서, 상기 제 3 컴포넌트는 상기 제 1 물리적 블록을 소거하도록 추가적으로 배치되는, 메모리 장치.
  36. 제 34 항에 있어서, 상기 제 3 물리적 블록은 제 3 물리적 요소 세트 및 제 4 물리적 요소 세트를 포함하며, 상기 내용들 및 상기 업데이트된 내용들 중 상기 적어도 몇몇은 상기 제 3 물리적 요소 세트에 복사되는, 메모리 장치.
  37. 제 31 항에 있어서, 상기 제 2 물리적 블록은 상기 다수의 물리적 요소들의 제 1 물리적 요소 세트 및 상기 다수의 물리적 요소들의 제 2 물리적 요소 세트를 포함하며, 상기 제 3 컴포넌트는 상기 제 2 논리적 세트와 관련되는 내용들을 상기 제 1 물리적 요소 세트에 기록하도록 배치되는, 메모리 장치.
  38. 제 37 항에 있어서, 상기 제 3 컴포넌트는 상기 제 2 논리적 세트와 관련되는 업데이트된 내용들을 상기 제 2 물리적 요소 세트에 기록하도록 추가적으로 배치되는, 메모리 장치.
  39. 제 31 항에 있어서, 상기 다수의 논리적 요소들은 다수의 논리적 페이지들이며, 상기 다수의 물리적 요소들은 다수의 물리적 페이지들인, 메모리 장치.
  40. 비휘발성 메모리 시스템의 파일 시스템과 관련된 제 1 블록을 분할하는 방법으로서, 상기 방법은
    상기 제 1 블록을 제 1 부분 및 제 2 부분으로 실질적으로 분할하는 단계;
    상기 제 1 블록의 상기 제 1 부분을 상기 비휘발성 메모리 시스템의 비휘발성 메모리와 관련되는 제 2 블록에 관련시키는 단계; 및
    상기 제 1 블록의 상기 제 2 부분을 상기 비휘발성 메모리와 관련되는 제 3 블록에 관련시키는 단계를 포함하며, 상기 제 1 블록의 상기 제 1 부분과 관련되는 내용들이 업데이트될 경우, 상기 제 1 부분과 관련되는 상기 업데이트되는 내용들이 상기 제 2 블록에 기록되며, 상기 제 1 블록의 상기 제 2 부분과 관련되는 내용들이 업데이트될 경우, 상기 제 2 부분과 관련되는 상기 업데이트되는 내용들이 상기 제 3 블록에 기록되는, 블록 분할 방법.
  41. 제 40 항에 있어서, 상기 제 1 블록을 상기 제 1 부분 및 상기 제 2 부분으로 실질적으로 분할하는 상기 단계는 상기 제 1 블록을 상기 제 1 부분 및 상기 제 2 부분으로 실질적으로 균일하게 분할하는 단계를 포함하는, 블록 분할 방법.
  42. 제 41 항에 있어서, 상기 제 1 블록의 상기 제 1 부분을 상기 제 2 블록에 관련시키는 상기 단계는 상기 제 1 블록의 상기 제 1 부분과 관련되는 내용들을 상기 제 2 블록의 제 1 영역에 기록하는 단계를 포함하며, 상기 제 2 블록은 상기 제 1 영역 및 제 2 영역을 포함하는, 블록 분할 방법.
  43. 제 42 항에 있어서, 상기 제 1 블록의 상기 제 1 부분과 관련되는 상기 내용들이 업데이트될 경우, 상기 제 1 부분과 관련되는 상기 업데이트될 내용들이 상기 제 2 블록의 상기 제 2 영역에 기록되는, 블록 분할 방법.
  44. 제 43 항에 있어서, 상기 방법은
    상기 제 2 블록의 상기 제 2 영역이 실질적으로 충만되는지를 결정하는 단계; 및
    상기 제 1 블록의 상기 제 1 부분과 관련되는 상기 내용들 및 상기 업데이트되는 내용들을 제 4 블록의 제 1 부분에 기록하는 단계를 더 포함하며, 상기 제 4 블록은 상기 제 1 부분과 제 2 부분을 포함하도록 배치되는, 블록 분할 방법.
  45. 제 41 항에 있어서, 상기 제 1 블록의 상기 제 2 부분을 상기 제 3 블록에 관련시키는 상기 단계는 상기 제 1 블록의 상기 제 1 부분과 관련되는 내용들을 상기 제 3 블록의 제 1 영역에 기록하는 단계를 포함하며, 상기 제 3 블록은 상기 제 1 영역 및 제 2 영역을 포함하는, 블록 분할 방법.
  46. 제 45 항에 있어서, 상기 제 1 블록의 상기 제 1 부분과 관련되는 상기 내용들이 업데이트될 경우, 상기 제 1 부분과 관련되는 상기 업데이트되는 내용들이 상기 제 3 블록의 상기 제 2 영역에 기록되는, 블록 분할 방법.
  47. 제 41 항에 있어서, 상기 제 1 블록, 상기 제 2 블록, 및 상기 제 3 블록은 실질적으로 동일한 크기인, 블록 분할 방법.
  48. 제 41 항에 있어서, 상기 제 1 블록은 관련 개수의 페이지들을 가지며, 상기 제 2 블록은 상기 관련 개수의 페이지들을 가지며, 그리고 상기 제 3 블록은 상기 관련 개수의 페이지들을 갖는, 블록 분할 방법.
  49. 제 41 항에 있어서, 상기 제 1 블록은 논리적 블록이며, 상기 제 2 블록은 물리적 블록이며, 그리고 상기 제 3 블록은 물리적 블록인, 블록 분할 방법.
KR1020057007265A 2002-10-28 2003-09-10 논리적 블록을 분할하기 위한 방법 및 장치 KR100923814B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/281,631 2002-10-28
US10/281,631 US7039788B1 (en) 2002-10-28 2002-10-28 Method and apparatus for splitting a logical block

Publications (2)

Publication Number Publication Date
KR20050065631A true KR20050065631A (ko) 2005-06-29
KR100923814B1 KR100923814B1 (ko) 2009-10-27

Family

ID=32228769

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007265A KR100923814B1 (ko) 2002-10-28 2003-09-10 논리적 블록을 분할하기 위한 방법 및 장치

Country Status (8)

Country Link
US (1) US7039788B1 (ko)
EP (1) EP1561168B1 (ko)
JP (1) JP5005171B2 (ko)
KR (1) KR100923814B1 (ko)
CN (1) CN100487672C (ko)
AU (1) AU2003270528A1 (ko)
TW (1) TWI240865B (ko)
WO (1) WO2004040455A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101025375B1 (ko) * 2009-12-17 2011-03-28 성균관대학교산학협력단 비휘발성 메모리 장치의 데이터 기록 방법 및 이를 수행하는 비휘발성 메모리 장치
KR101329497B1 (ko) * 2011-03-10 2013-11-13 한양대학교 산학협력단 파티션에 따라서 저장 위치를 물리적으로 구분하는 nvram 기반의 저장 장치 및 상기 저장 장치의 동작 방법

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI258701B (en) * 2002-08-26 2006-07-21 Interdigital Tech Corp Wireless device operating system (OS) application programmer's interface
WO2004040586A1 (en) * 2002-10-28 2004-05-13 Sandisk Corporation Automated wear leveling in non-volatile storage systems
US7904635B2 (en) * 2003-03-04 2011-03-08 Netac Technology Co., Ltd. Power cut data recovery and data management method for flash media
JP4667243B2 (ja) * 2003-08-29 2011-04-06 パナソニック株式会社 不揮発性記憶装置及びその書込み方法
GB0426241D0 (en) * 2004-11-30 2004-12-29 Ibm A method and apparatus for configuring a storage device
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US20090172269A1 (en) * 2005-02-04 2009-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and associated data merge method
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
JP4679581B2 (ja) * 2005-07-29 2011-04-27 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
JP4751163B2 (ja) * 2005-09-29 2011-08-17 株式会社東芝 メモリシステム
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
CN102522118A (zh) * 2006-07-31 2012-06-27 株式会社东芝 控制非易失性存储器的方法
KR100826654B1 (ko) * 2007-04-24 2008-05-06 주식회사 하이닉스반도체 플래시 메모리소자의 동작방법 및 이를 위한 제어회로
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
JP5166118B2 (ja) * 2008-05-21 2013-03-21 株式会社東芝 半導体メモリの制御方法
JP5216463B2 (ja) 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
CN101655819B (zh) * 2008-08-18 2012-11-28 深圳市朗科科技股份有限公司 对半导体存储介质进行空块回收的方法、系统及设备
TWI386800B (zh) * 2008-10-03 2013-02-21 Silicon Motion Inc 快閃記憶體之更新資料的管理方法以及相關之記憶卡
CN101510173B (zh) * 2008-10-10 2010-12-29 慧帝科技(深圳)有限公司 一种减少储存次数的资料储存方法及其装置
JP5349897B2 (ja) * 2008-10-21 2013-11-20 株式会社日立製作所 ストレージシステム
JP5264459B2 (ja) * 2008-12-17 2013-08-14 パナソニック株式会社 半導体記憶装置
US9201824B2 (en) * 2009-01-22 2015-12-01 Intel Deutschland Gmbh Method and apparatus for adaptive data chunk transfer
US8738621B2 (en) 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
JP5185156B2 (ja) * 2009-02-24 2013-04-17 株式会社東芝 メモリコントローラおよび半導体記憶装置
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
TWI410795B (zh) * 2009-06-23 2013-10-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制電路與儲存系統
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US8176234B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Multi-write coding of non-volatile memories
US8176235B2 (en) * 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
TWI446349B (zh) * 2010-03-04 2014-07-21 Phison Electronics Corp 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器
TWI498731B (zh) * 2010-03-17 2015-09-01 Phison Electronics Corp 非揮發性記憶體儲存系統
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
US8732431B2 (en) * 2011-03-06 2014-05-20 Micron Technology, Inc. Logical address translation
CN102866955A (zh) * 2012-09-14 2013-01-09 记忆科技(深圳)有限公司 一种闪存数据管理方法及系统
CN104657083B (zh) * 2013-11-19 2017-12-22 群联电子股份有限公司 数据写入方法、存储器储存装置、存储器控制电路单元
US11275687B2 (en) * 2020-07-07 2022-03-15 Micron Technology, Inc. Memory cache management based on storage capacity for parallel independent threads

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0618535B1 (en) 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
JP3078946B2 (ja) 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
JPH09212411A (ja) 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US6139177A (en) 1996-12-03 2000-10-31 Hewlett Packard Company Device access and control using embedded web access functionality
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6405295B1 (en) 1999-09-07 2002-06-11 Oki Electric Industry, Co., Ltd. Data storage apparatus for efficient utilization of limited cycle memory material
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
KR100644602B1 (ko) 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6684289B1 (en) 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
EP1383775B1 (en) * 2001-04-30 2006-08-02 The Regents of The University of Michigan Isoreticular metal-organic frameworks, process for forming the same, and systematic design of pore size and functionality therein,with application for gas storage
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6823526B2 (en) 2001-07-05 2004-11-23 Hewlett-Packard Development Company, L.P. Computer-based system and method for automatic configuration of an external device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101025375B1 (ko) * 2009-12-17 2011-03-28 성균관대학교산학협력단 비휘발성 메모리 장치의 데이터 기록 방법 및 이를 수행하는 비휘발성 메모리 장치
KR101329497B1 (ko) * 2011-03-10 2013-11-13 한양대학교 산학협력단 파티션에 따라서 저장 위치를 물리적으로 구분하는 nvram 기반의 저장 장치 및 상기 저장 장치의 동작 방법

Also Published As

Publication number Publication date
JP2006504198A (ja) 2006-02-02
EP1561168A2 (en) 2005-08-10
TW200417856A (en) 2004-09-16
CN100487672C (zh) 2009-05-13
TWI240865B (en) 2005-10-01
EP1561168B1 (en) 2015-11-18
JP5005171B2 (ja) 2012-08-22
AU2003270528A1 (en) 2004-05-25
WO2004040455A2 (en) 2004-05-13
AU2003270528A8 (en) 2004-05-25
WO2004040455A3 (en) 2004-12-23
CN1705936A (zh) 2005-12-07
US7039788B1 (en) 2006-05-02
KR100923814B1 (ko) 2009-10-27

Similar Documents

Publication Publication Date Title
KR100923814B1 (ko) 논리적 블록을 분할하기 위한 방법 및 장치
KR100886520B1 (ko) 블록 내에서 페이지들을 그룹화하는 방법 및 장치
US7702880B2 (en) Hybrid mapping implementation within a non-volatile memory system
US7174440B2 (en) Method and apparatus for performing block caching in a non-volatile memory system
JP4456486B2 (ja) 不揮発性記憶システムにおける摩耗一様化
US7526599B2 (en) Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US7096313B1 (en) Tracking the least frequently erased blocks in non-volatile memory systems
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
US6973531B1 (en) Tracking the most frequently erased blocks in non-volatile memory systems
US7234036B1 (en) Method and apparatus for resolving physical blocks associated with a common logical block

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
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: 20121009

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20141007

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee