KR20050070092A - 블록 내 페이지들을 그룹짓기 위한 방법 및 장치 - Google Patents

블록 내 페이지들을 그룹짓기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20050070092A
KR20050070092A KR1020057007311A KR20057007311A KR20050070092A KR 20050070092 A KR20050070092 A KR 20050070092A KR 1020057007311 A KR1020057007311 A KR 1020057007311A KR 20057007311 A KR20057007311 A KR 20057007311A KR 20050070092 A KR20050070092 A KR 20050070092A
Authority
KR
South Korea
Prior art keywords
physical
group
block
available
page
Prior art date
Application number
KR1020057007311A
Other languages
English (en)
Other versions
KR100886520B1 (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 KR20050070092A publication Critical patent/KR20050070092A/ko
Application granted granted Critical
Publication of KR100886520B1 publication Critical patent/KR100886520B1/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
    • 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

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)
  • Read Only Memory (AREA)
  • Supplying Of Containers To The Packaging Station (AREA)
  • Memory System (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)

Abstract

블록 내 페이지들이 효율적으로 액세스될 수 있게 하는 방법 및 장치가 개시된다. 본 발명의 일 태양에 따르면, 각각 2 이상의 페이지들을 포함하는 그룹들로 그룹지어지는 페이지들을 포함하는 비휘발성 메모리의 제 1 블록으로 데이터를 기록하는 방법은 제 1 그룹이 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계를 포함한다. 제 1 그룹이 데이터를 수신하기 위해 이용가능함이 결정되는 때, 데이터는 제 1 그룹에 포함된 제 1 페이지 내로 기록된다. 본 발명의 방법은 또한 제 1 그룹이 데이터를 수신하기 위해 이용가능하지 않음이 결정된다면, 제 2 그룹이 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계, 및 제 2 그룹이 데이터를 수신하기 위해 이용가능함이 결정된 때 제 2 그룹에 포함된 제 2 페이지 내로 데이터를 기록하는 단계를 포함한다.

Description

블록 내 페이지들을 그룹짓기 위한 방법 및 장치{METHOD AND APPARATUS FOR GROUPING PAGES WITHIN A 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,631호(Atty. Docket No. SANDP028/SDK0371.000US), "METHOD AND APPARATUS FOR SPLITTING A LOGICAL 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",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,696호(Atty. Docket No. SANDP031/SDK0420.000US), "MAINTAINING ERASE COUNTS IN NON-VOLATILE STORAGE SYSTEMS",
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,626호(Atty. Docket No. SANDP032/SDK0420.001US), "METHOD AND APPARATUS FOR MANAGING AN ERASE COUNT BLOCK", 및
2002년 10월 28일 출원되어 동시계류 중인 미국특허출원 제 10/281,804호(Atty. Docket No. SANDP033/SDK0426.000US), "METHOD AND APPARATUS FOR PERFORMING MULTI-PAGE READ AND WRITE OPERATIONS IN A NON-VOLATILE MEMORY"
와 관련되며, 각각의 출원은 전체가 본 명세서에 참조로서 편입된다.
본 발명은 일반적으로 대량 디지털 데이터 저장 시스템에 관한 것이다. 보다 상세하게, 본 발명은 플래시 메모리의 블록에 효과적으로 기록하기 위한 시스템 및 방법에 관한 것이다.
플래시 메모리 저장 시스템과 같은 비휘발성 메모리 시스템의 사용은 상기 메모리 시스템의 컴팩트한 물리적 크기, 및 비휘발성 메모리가 반복적으로 재프로그래밍될 수 있는 능력으로 인해 증가되고 있다. 플래시 메모리 저장 시스템들의 컴팩트한 물리적 크기는 점차적으로 널리 보급되는 장치들에 상기 저장 시스템들을 사용하는 것을 조장한다. 플래시 메모리 저장 시스템들을 사용하는 장치들은 디지털 카메라, 디지털 캠코더, 디지털 뮤직 플레이어, 핸드헬드 개인용 컴퓨터, 및 글로벌 포지셔닝 장치(global positioning device)들을 포함하며, 이에 제한되지 않는다. 플래시 메모리 저장 시스템들에 포함된 비휘발성 메모리를 반복적으로 재프로그래밍할 수 있는 능력은 플래시 메모리 저장 시스템들이 사용 및 재사용될 수 있게 한다.
일반적으로, 플래시 메모리 저장 시스템들은 플래시 메모리 카드 및 플래시 메모리 칩 세트들을 포함할 수 있다. 플래시 메모리 칩 세트들은 일반적으로 플래시 메모리 컴포넌트들 및 컨트롤러 컴포넌트들을 포함한다. 전형적으로, 플래시 메모리 칩 세트는 내장형 시스템(embedded system) 내로 어셈블리되어 배치될 수 있다. 상기 어셈블리 또는 호스트 시스템들의 제조자들은 전형적으로 다른 컴포넌트들과 마찬가지로 컴포넌트 형태의 플래시 메모리를 취득하여, 그 다음 플래시 메모리 및 다른 컴포넌트들을 호스트 시스템 내로 어셈블리한다.
도 1a에 도시된 바와 같이, 파일 시스템 내에서, 메모리(10)는 효과적으로 시스템 또는 디렉토리 영역(12) 및 데이터 영역(14)으로 분할된다. 시스템 영역(12)은 일반적으로 루트 디렉토리들 및 파일 할당 테이블(FAT)들을 포함하는 한편, 데이터 파일들은 전형적으로 데이터 영역(14)에 포함된다. 파일 시스템은 섹터들의 데이터를 예를 들어, 한 번에 한 페이지씩 시스템 영역(12) 내로 기록할 수 있는 반면, 클러스터들의 데이터를 예를 들어, 한 번에 다수의 페이지씩 데이터 영역(14) 내로 기록한다. 각각의 클러스터 크기는 일반적으로 데이터 영역(14)과 연관된 파일의 최소 크기로서, 변화될 수 있다. 예를 들어, 윈도우즈 또는 DOS 시스템을 구동하는 전체 시스템에서, 클러스터는 대략 4 내지 256 페이지를 포함하는 크기를 가질 수 있다.
논리적 블록 또는 파일 시스템과 연관된 블록과 관련된 임의의 업데이트는 물리적 블록이 논리적 블록으로 매핑되는 플래시 매체로 효과적으로 전파된다. 도 1b는 논리적 블록과 플래시 매체의 물리적 블록 사이의 매핑을 다이어그램으로 표현한 것이다. 논리적 블록(52)은, 논리적 블록과 연관된 페이지가 업데이트될 때 업데이트가 물리적 블록(54) 안으로 기록되도록 물리적 블록(54)의 페이지들에 각각 매핑되는 복수 개의 페이지들을 포함한다.
페이지, 예를 들어, 논리적 페이지가 업데이트될 때, 페이지와 연관된 물리적 블록이 기록된다. 통상적으로, 블록은 "고정된" 방식으로 또는 "랜덤" 방식으로 기록될 수 있다. 블록이 고정된 방식으로 기록될 때, 페이지는 대응하는 페이지 오프셋에서 블록 내로 기록된다. 도 2a에 도시된 바와 같이, 논리적 블록 페이지(214)가 업데이트될 때, 논리적 블록 페이지(214)와 연관된 내용들은 일반적으로 물리적 블록(210) 내에 대응하는 페이지(218) 내로 기록된다. 예를 들어, 논리적 블록 페이지(214)가 물리적 블록 페이지(218h)에 대응하고 물리적 블록 페이지(218h)가 이용가능할 때, 논리적 블록 페이지(214)의 내용들이 물리적 블록 페이지(218h) 내로 기록될 수 있다. 물리적 블록 페이지(218h)가 이용가능할 때, 표시는 물리적 블록 페이지(218h)보다 더 높은 페이지 수를 갖는, 블록(210)에 기록된 페이지들(218)이 유효하게 존재하지 않는다는 것을 나타낸다.
기록될 내용들을 갖는 논리적 블록 페이지보다 더 높은 페이지 수를 갖는 블록(210)에 기록된 페이지들(218)이 존재하는 경우에, 블록(210)이 고정된 방식으로 기록되도록 배열될 때, 논리적 블록의 내용들은 블록(210) 내로 기록되지 않을 수 있다. 더 높은 수의 페이지가 플래시 메모리 내로 기록된 이후에 더 낮은 페이지 수를 기록하는 것은 "아웃-오브-시퀀스(out-of-sequence)" 기록 동작이다. 당업자가 이해하는 바와 같이, 소정의 플래시 매체는 이러한 타입의 동작을 허용하지 않는다. 따라서, 논리적 블록 페이지의 내용들 및 페이지들(218)의 내용들은 새로운 블록 내로 기록된다. 도 2b는 기존의 블록, 예를 들어, 도 2a의 블록(210), 및 기존의 블록의 내용들을 수용하도록 배열된 새로운 블록의 다이어그램 표현이다. 논리적 블록 페이지(234)의 내용들이 고정된 방식으로 물리적 블록 내로 기록될 때, 블록(210), 즉, 현재 블록이 기록될지 말지가 결정된다. 만약 논리적 페이지(234)가 블록(210)에 이용가능한 것보다 더 낮은 페이지 수를 갖는다면, 논리적 페이지(234)의 내용들은 블록(210) 내로 기록될 수 없다. 즉, 논리적 블록(234)에 대응하는 페이지 오프셋을 갖는 물리적 페이지(218)가 이용가능하지 않다면, 즉, 이미 기록되지 않았다면, 일반적으로 새로운 물리적 페이지(230)가 논리적 페이지(234)의 내용들이 기록될 수 있도록 획득되어야 한다.
논리적 블록(234)이 물리적 블록(210)의 페이지(218c)에 대응하기 때문에, 블록(230)이 획득될 때, 페이지(218c)의 내용들을 제외한 페이지들(218)의 내용들이 일반적으로 물리적 블록(230)의 대응 페이지들(238)로 복사된다. 페이지(218c)의 내용들이 페이지(238c)로 복사되는 대신에, 논리적 블록(234)의 내용들이 페이지(238c)로 복사된다. 그러므로, 복사 또는 기록 동작 이후에, 페이지(238a), 페이지(238b), 및 페이지들(238d-238g)은 각각 페이지(218a), 페이지(218b), 및 페이지들(218d-218g)의 내용들을 포함하는 반면, 페이지(238c)는 논리적 페이지(234)와 연관된 내용들을 포함한다. 일단 블록(230)이 기록되면, 블록(210)이 소거될 수 있다.
고정된 방식으로 블록에 기록하는 것은 일반적으로 대응하는 페이지 오프셋을 가진 페이지가 기록되고 있는 페이지에 대한 블록 내에서 이용가능할 때 효율적이다. 그러나, 대응하는 오프셋을 갖는 페이지가 기록되는데 이용가능하지 않을 때, 블록 내에서 이용가능한 페이지들이 존재하지 않을 지라도, 일반적으로 새로운 블록은 기록 동작이 완료될 수 있도록 획득되어야 한다. 새로운 블록을 획득하는 것은 상당한 양의 계산 오버헤드를 소비해야 하고, 새로운 블록 내로 내용들을 복사하는 복사 동작들 및 기존의 블록을 소거하는 소거 동작들이 실행되어야 한다. 당업자가 알 수 있듯이, 상기 동작들, 특히 기록 및 소거 동작들은 상대적으로 비싸다.
고정된 방식 또는 블록에 기록하는 것 대신에, 랜덤 방식은 데이터를 블록에 기록하기 위해 대신 구현되어야 한다. 실질적으로 임의의 논리적 페이지와 연관된 내용들은 블록들이 랜덤 방식으로 기록될 때 블록 내에서 다음의 이용가능한 페이지 공간 안으로 기록될 수 있다. 도 3을 참조하여, 블록으로 데이터를 기록하는 랜덤 방식이 기술될 것이다. 논리적 블록 페이지(314)의 내용들이 물리적 블록(310) 내로 기록되어야 하고 블록(310) 내에서 이용가능한 페이지들(318)이 존재할 때, 논리적 블록 페이지(314)의 내용들이 다음의 순차적으로 이용가능한 페이지(318) 내로 기록될 수 있다. 예를 들어, 논리적 페이지(314a)의 내용들이 페이지(318h) 내로 기록될 수 있는 반면, 논리적 페이지(314b)의 내용들은 페이지(318i) 내로 기록될 수 있다.
비록 논리적 페이지(314b)가 페이지(318c)에 대응할 수 있지만, 페이지(318i)가 블록(310)에서 다음의 이용가능한 페이지라면 논리적 페이지(314b)의 업데이트된 내용들이 페이지(318i) 내로 기록될 수 있다. 논리적 페이지(314)가 필수적으로 판독되어야 할 때, 일반적으로 논리적 페이지(314b)와 연관된 최근의 내용들을 포함하는 것으로서 블록(310) 내 페이지(318i)를 식별하는 것이 필수적이다. 도시된 바와 같이, 페이지(318i)가 블록(310) 내 마지막 페이지일 때, 논리적 페이지(314b)와 연관된 내용들을 포함하는 것으로서 페이지(318i)를 식별하는 것은 모든 블록(310)을 판독하는 것을 요구할 수 있고, 그리하여 상대적으로 많은 수의 판독 동작들을 요구할 수 있다. 논리적 페이지(314b)와 연관된 내용들에 액세스하기 위하여 실질적으로 모든 블록(310)을 통해 판독하는 것은 상대적으로 시간소모적일 수 있다. 비록 논리적 페이지들(314)과 같은 논리적 페이지들과 연관된 내용들을 찾아내 액세스하기 위해 요구되는 판독 동작들의 횟수를 감소시키도록 페이지들(318) 및 페이지들(318)의 내용들과 관련된 정보를 캐싱(caching)하기 위한 전체 시스템 메모리 또는 플래시 메모리를 사용하는 기술들이 존재하지만, 상기 기술들은 전체 시스템, 또는 보다 상세하게는 전체 시스템 내에서 실행되는 소프트웨어의 메모리 요구조건들을 증가시킨다.
따라서, 요구되는 것은 물리적 블록들과 연관된 페이지들이 효과적으로 기록되고 액세스될 수 있게 하기 위한 하이브리드 방법 및 장치이다. 즉, 필요한 것은 실질적으로 상대적으로 빈번한 블록 소거 또는 상대적으로 많은 수의 판독 동작들을 요구하지 않으면서, 블록 내 페이지들이 효율적으로 기록되고 용이하게 액세스될 수 있도록 고정식 프로세스 및 랜덤 프로세스를 활용하는 하이브리드 시스템이다.
도 1a는 파일 시스템에 의해 효과적으로 분할된 메모리의 다이어그램 표현이다.
도 1b는 논리적 블록과 물리적 블록 사이의 매핑을 나타내는 다이어그램이다.
도 2a는 논리적 블록 페이지가 고정된 방식으로 있을 때 연관된 내용들을 수용하도록 배치된 물리적 블록의 다이어그램 표현이다.
도 2b는 기존의 물리적 블록, 예를 들어, 도 2a의 블록(210), 및 기존 블록의 내용들을 수용하도록 배치된 새로운 물리적 블록의 다이어그램 표현이다.
도 3은 논리적 블록 페이지와 연관된 내용들이 랜덤 방식으로 기록될 물리적 블록의 다이어그램 표현이다.
도 4a는 비휘발성 메모리를 포함하는 일반적 호스트 시스템의 다이어그램 표현이다.
도 4b는 메모리 장치, 예를 들어, 도 4a의 메모리 장치(120)의 다이어그램 표현이다.
도 4c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 다이어그램 표현이다.
도 5는 본 발명의 실시예에 따른 논리적 블록들의 파일 시스템 및 물리적 블록들을 구비한 매체의 다이어그램 표현이다.
도 6은 본 발명의 일 실시예에 따른 그룹들로 배열되는 페이지들을 구비한 블록의 다이어그램 표현이다.
도 7은 본 발명의 일 실시예에 따른 페이지의 다이어그램 표현이다.
도 8a는 본 발명의 일 실시예에 따른 논리적 블록 및 각각 그룹들로 분할된 물리적 블록의 다이어그램 표현이다.
도 8b는 논리적 블록 및 물리적 블록, 즉, 도 8a의 논리적 블록(802) 및 물리적 블록(806)의 다이어그램 표현이고, 본 발명의 일 실시예에 따라 물리적 블록 내 그룹들이 기록되는 방식을 나타낸다.
도 8c는 논리적 블록 및 물리적 블록, 즉, 도 8a의 논리적 블록(802) 및 물리적 블록(806)의 다이어그램 표현이고, 본 발명의 일 실시예에 따라 블록들 내의 그룹들이 연관되는 방식을 나타낸다.
도 8d는 본 발명의 일 실시예에 따른 논리적 블록, 즉, 도 8a-8c의 논리적 블록(802)과 병합 동작 이후의 새로운 물리적 블록 간의 연관을 나타내는 다이어그램이다.
도 9는 본 발명의 일 실시예에 따른 현재 작동 중인 블록 정보의 다이어그램 표현이다.
도 10a 및 도 10b는 본 발명의 일 실시예에 따른 물리적 그룹의 일부인 물리적 페이지 내로 논리적 그룹의 일부인 논리적 페이지와 연관된 내용들을 기록하는 방법과 관련된 단계들을 도시하는 프로세스 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 시스템 구조의 블록 다이어그램 표현이다.
본 발명은 블록 내의 페이지들이 효과적으로 액세스될 수 있게 하는 시스템 및 방법에 관한 것이다. 본 발명의 일 태양에 따르면, 각각의 그룹이 2 이상의 페이지들을 포함하는 복수 개의 그룹들 내로 그룹지어지는 복수 개의 페이지들을 포함하는 비휘발성 메모리의 제 1 블록 내로 데이터를 기록하기 위한 방법은 복수 개의 그룹들 중 제 1 그룹이 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계를 포함한다. 제 1 그룹이 데이터를 수신하기 위해 이용가능한 것이 결정될 때, 데이터는 제 1 그룹에 포함된 제 1 페이지 내로 기록된다. 상기 방법은 또한 제 1 그룹이 데이터를 수신하기 위해 이용가능하지 않음이 결정된다면 복수 개의 그룹들 중 제 2 그룹이 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계, 및 제 2 그룹이 데이터를 수신하기 위해 이용가능함이 결정된 때 제 2 그룹에 포함된 제 2 페이지 내로 데이터를 기록하는 단계를 포함한다.
일 실시예에서, 본 방법은 또한 제 2 그룹이 데이터를 수신하기 위해 이용가능하지 않음이 결정된다면 제 2 블록이 상기 데이터를 수신하기 위해 이용가능하지 않을 때를 결정하는 단계를 포함한다. 다른 실시예에서, 데이터는 논리적 페이지와 연관되고, 제 1 블록은 제 1 물리적 블록이다.
페이지가 기록되어야 할 때 물리적 블록 내 페이지들의 일 그룹이 새로운 물리적 블록 대신에 획득될 수 있도록 블록들 내 페이지들을 그룹짓는 것은 페이지 기록과 연관된 전체 효율성이 개선될 수 있게 한다. 즉, 데이터가 기록될 수 있게 하기 위하여 새로운 블록이 획득되어야 할 확률은 새로운 블록 내 그룹이 이용가능할 가능성 때문에 감소될 수 있다. 그리하여, 기록 프로세스는 보다 효율적으로 일어날 수 있고, 적어도 부분적으로 소거 프로세스들, 예를 들어, 일단 새로운 블록들이 획득되면 기존의 블록들을 소거하기 위해 사용되는 소거 프로세스들의 발생이 현저히 감소될 수 있다. 부가하여, 그룹들이 특정 페이지를 찾아내기 위해 전체 블록을 판독하는 것 대신에 특정 페이지를 식별하기 위한 시도로 정밀 검사될 때, 특정 페이지에 저장된 데이터 세트를 판독하는 판독 프로세스는 보다 효율적으로 일어날 수 있다. 예를 들어, 페이지들의 그룹이 특정 페이지를 포함하지 않도록 결정된다면, 그룹의 페이지들은 개별적으로 판독될 필요가 없고, 즉, 실질적으로 특정 페이지를 포함하는 그룹의 페이지들만이 판독되어야 한다. 그룹 컨셉을 적용함으로써, 판독 동작은 판독 동작이 효과적 랜덤 방식으로 일어날 때보다 더 빠른데, 그것은 실질적으로 단지 동일 그룹의 페이지들만이 체크되어야 하기 때문이다. 그룹 컨셉과 연관된 기록 동작은 종래의 고정식 프로세스보다 더 빠른데, 그것은 단일의 물리적 블록에 기록될 페이지들에 대한 더 많은 위치들이 존재하기 때문이다. 그리하여, 새로운 블록을 할당하고 기존의 블록을 소거해야 할 필요성이 감소된다.
본 발명의 다른 태양에 따르면, 비휘발성 메모리의 부분인 메모리 블록은 적어도 제 1 페이지 세트 및 제 2 페이지 세트로 분할되는 복수 개의 페이지들을 포함한다. 메모리 블록은 또한 제 1 그룹을 포함한다. 제 1 그룹은 제 1 페이지 세트를 포함하고, 제 1 그룹을 식별하고 제 1 그룹에 저장된 제 1 그룹 식별자를 갖는다. 부가적으로, 메모리 블록은 또한 제 2 페이지 세트를 포함하는 제 2 그룹을 포함하고, 제 2 그룹을 식별하는 제 2 그룹 식별자를 갖는다. 제 2 그룹 식별자는 제 2 그룹에 저장된다. 일 실시예에서, 제 1 페이지 세트에 포함된 페이지들의 순서는 제 1 그룹의 시작에 관련하여 실질적으로 고정되고, 제 2 페이지 세트에 포함된 페이지들의 순서는 제 2 그룹의 시작에 관련하여 실질적으로 고정된다.
본 발명의 다른 태양에 따르면, 2 이상의 물리적 페이지들의 복수 개의 물리적 그룹들로 그룹지어지는 복수 개의 물리적 페이지들을 포함하는 비휘발성 메모리 내의 제 1 물리적 블록 내로 데이터를 기록하는 방법은 복수 개의 물리적 그룹들 중 제 1 물리적 그룹이 제 1 논리적 그룹과 연관될 때를 결정하는 제 1 논리적 페이지와 연관된 제 1 데이터 세트를 식별하는 단계를 포함한다. 제 1 논리적 페이지는 논리적 블록의 제 1 논리적 그룹에 포함된 복수 개의 논리적 페이지들 중 하나를 포함한다. 본 방법은 또한 제 1 물리적 그룹이 제 1 논리적 그룹과 연관됨이 결정된다면 제 1 물리적 그룹에 포함된 제 1 물리적 페이지가 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 단계, 및 제 1 물리적 페이지가 제 1 데이터 세트를 수용하기 위해 이용가능함이 결정된 때 제 1 데이터 세트를 제 1 물리적 페이지 내로 기록하는 단계를 포함한다.
일 실시예에서, 제 1 물리적 블록 내로 데이터를 기록하는 방법은 또한 제 1 물리적 페이지가 제 1 데이터 세트를 수용하기 위해 이용가능하지 않음이 결정된다면 복수 개의 물리적 그룹들에 포함된 제 2 물리적 그룹이 이용가능한 때를 결정하는 단계, 및 제 2 물리적 그룹과 연관된 제 2 물리적 페이지 내로 제 1 데이터 세트를 기록하는 단계를 포함한다. 상기 실시예에서, 본 방법은 부가하여 제 2 물리적 그룹이 이용가능하지 않음이 결정된 때 비휘발성 메모리와 연관된 제 2 물리적 블록이 제 1 데이터 세트를 수용하기 위해 이용가능할 때를 결정하는 단계를 포함할 수 있다.
이러한 본 발명의 이점 및 다른 이점들이 이하의 상세한 설명 및 도면을 숙지하여 자명해질 것이다.
본 발명은 첨부된 도면 및 이하의 설명을 참조하여 가장 잘 이해될 수 있다.
업데이트된 페이지들을 저장하거나 그렇지 않으면 재기록하기 위해 요구되는 전체 오버헤드 및 시간의 양을 감소시키는 것은 전체 시스템, 예를 들어, 내장형 비휘발성 메모리 칩을 구비한 전체 호스트 시스템이 보다 효율적으로 동작할 수 있게 한다. 물리적 블록과 연관된 페이지는 페이지가 다른 최근에 기록된 페이지들보다 더 낮은 페이지 번호를 가질 때 업데이트되어야 하고, 그 때마다 매번 새로운 물리적 블록을 획득하는 것은 상당한 양의 시스템 자원을 소비할 수 있고, 결과적으로 상대적으로 비효율적일 수 있다. 반면, 임의의 페이지가 블록 내 다음의 이용가능한 공간 내로 기록될 수 있게 하는 것은 특정 페이지를 찾아내기 위하여 과도한 수의 판독 동작들이 수행되게 한다.
물리적 블록 내에 적어도 하나의 이용가능한 그룹이 존재할 때 페이지를 물리적 블록 내로 기록하기 위하여 물리적 블록 내 그룹이 새로운 물리적 블록 대신에 획득될 수 있도록 블록들 내의 페이지들을 그룹지음으로써, 일반적으로 페이지 기록과 연관된 전체 효율은 개선될 수 있다. 즉, 데이터가 기록될 수 있게 하기 위하여 새로운 블록이 획득되어야 할 확률은 새로운 블록 내 그룹이 이용가능할 가능성 때문에 감소될 수 있다. 그룹들 또는 서브-그룹들을 사용함으로써, 블록들은 일반적으로 보다 효율적으로 할당될 수 있다.
플래시 메모리 시스템들, 또는 보다 일반적으로, 물리적 블록 내의 페이지들을 그룹짓는 것으로부터 이득을 취할 수 있는 비휘발성 메모리 장치들은 플래시 메모리 카드들 및 칩 세트들을 포함한다. 전형적으로, 플래시 메모리 시스템들은 호스트 시스템이 플래시 메모리 시스템들로 데이터를 기록하거나 플래시 메모리 시스템들로부터 데이터를 판독할 수 있도록 호스트 시스템과 결합하여 사용된다. 그러나, 소정의 플래시 메모리 시스템들은 내장형 플래시 메모리 및 호스트 상에서 내장형 플래시 메모리에 대한 컨트롤러로서 작용하기 위해 실행되는 소프트웨어를 포함하고, 이것은 이하에서 도 4c에 관련하여 설명될 것이다. 도 4a를 참조하면, 비휘발성 메모리 장치, 예를 들어, 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)의 일 실시예는 도 4b에 관련하여 보다 상세히 기술될 것이다.
비휘발성 메모리(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)에 의해 제공될 수 있다.
도 4b를 참조하여, 비휘발성 메모리 장치(120)가 본 발명의 실시예에 따라 보다 상세히 설명될 것이다. 앞서 기술된 바와 같이, 비휘발성 메모리 장치(120)는 비휘발성 메모리(124)를 포함하고, 메모리 제어 시스템(128)을 포함할 수 있다. 비록, 메모리(124)가 내장형 NAND 장치일 때, 예를 들어, 비휘발성 메모리 장치(120)는 제어 시스템(128)을 포함하지 않을 수 있지만, 메모리(124) 및 제어 시스템(128), 또는 컨트롤러는 비휘발성 메모리 장치(120)의 주요 컴포넌트이다. 메모리(124)는 반도체 기판 상에 형성된 메모리 셀들의 어레이일 수 있고, 여기서, 하나 이상의 데이터 비트들은 메모리 셀들의 개개의 저장 엘리먼트들 상에 2 이상의 전하 레벨들 중 하나를 저장함으로써 개개의 메모리 셀들에 저장된다. 비휘발성 플래시 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(EEPROM)는 상기 시스템들에 대한 공통 타입의 메모리에 대한 예이다.
현재 제어 시스템(128)은 버스(15)를 거쳐 호스트 컴퓨터 또는 데이터를 저장하기 위하여 메모리 시스템을 사용하고 있는 다른 시스템들로 통신한다. 버스(15)는 일반적으로 도 4a의 버스(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 시스템들에 대하여 공통적인 것으로, 블록은 소거의 최소 단위일 수 있다. 즉, 각각의 블록은 함께 소거되는 최소 개수의 메모리 셀들을 포함할 수 있다. 각각의 블록은 전형적으로 다수의 페이지들로 분할된다. 당업자가 알 수 있듯이, 페이지는 프로그래밍의 최소 단위일 수 있다. 즉, 기본적인 프로그래밍 동작은 메모리 셀들의 최소 일 페이지 내로 데이터를 기록하거나, 일 페이지로부터 데이터를 판독한다. 하나 이상의 데이터 섹터들은 전형적으로 각각의 페이지 내에 저장된다. 도 4b에 도시된 바와 같이, 하나의 섹터는 사용자 데이터 및 오버헤드 데이터를 포함한다. 오버헤드 데이터는 전형적으로 섹터의 사용자 데이터로부터 계산된 에러 수정 코드(ECC)를 포함한다. 제어 시스템(128)의 일 부분(23)은 데이터가 어레이(11) 내로 프로그래밍되고 있을 때 ECC를 계산할 수 있고, 또한 데이터가 어레이(11)로부터 판독되고 있을 때 ECC를 체크할 수 있다. 대안적으로, ECC는 상관된 사용자 데이터와 상이한 페이지들, 또는 상이한 블록들에 저장된다.
사용자 데이터의 섹터는 전형적으로 자기 디스크 드라이브 내 섹터의 크기에 대응하여 512 바이트이다. 기술된 실시예에서, 오버헤드 데이터는 전형적으로 부가적인 16 바이트이다. 데이터의 일 섹터는 가장 흔하게 각각의 페이지에 포함되나, 2 이상의 섹터들은 대신에 일 페이지를 형성할 수 있다. 임의의 페이지 수는 일반적으로 일 블록을 형성할 수 있다. 예를 들어, 블록은 8 페이지로부터 512, 1024 또는 그 이상의 페이지까지로 형성될 수 있다. 블록의 수는 메모리 시스템에 대하여 목적하는 데이터 저장 용량을 제공하도록 선택된다. 어레이(11)는 전형적으로 몇 개의 서브-어레이들(미도시)로 분할되고, 각각의 서브-어레이는 블록들의 일 부분을 포함하며, 블록들은 여러 메모리 동작들의 실행에서 병렬처리 정도를 증가시키기 위하여 서로에 다소 독립적으로 동작한다. 다수의 서브-어레이들을 사용하는 것에 대한 예시는 미국 특허 제 5,890,192호에 개시되며, 이는 전체가 참조로서 본 명세서에 편입된다.
일 실시예에서, 비휘발성 메모리는 시스템, 예를 들어, 호스트 시스템 내로 내장형다. 도 4c는 내장형 비휘발성 메모리를 포함하는 호스트 시스템의 다이어그램 표현이다. 호스트 또는 컴퓨터 시스템(150)은 일반적으로 호스트 시스템(150)의 다른 컴포넌트들(미도시) 가운데 마이크로프로세서(158), RAM(162), 및 입력/출력 회로들(166)이 통신할 수 있게 하는 시스템 버스(154)를 포함한다. 비휘발성 메모리(174), 예를 들어, 플래시 메모리는 정보가 호스트 시스템(150) 내에 저장될 수 있게 한다. 인터페이스(180)는 정보가 비휘발성 메모리(174)로부터 판독되고 비휘발성 메모리(174)에 기록될 수 있도록 비휘발성 메모리(174)와 버스(154) 사이에 제공될 수 있다.
비휘발성 메모리(174)는 비휘발성 메모리(174)를 제어하기 위해 배열된 소프트웨어 및 펌웨어 양자 또는 둘 중 하나를 효과적으로 실행하는 마이크로프로세서(158)에 의해 관리될 수 있다. 즉, 마이크로프로세서(158)는 코드 장치들(미도시), 즉, 소프트웨어 코드 장치들 또는 펌웨어 코드 장치들을 실행할 수 있고, 상기 코드 장치들은 비휘발성 메모리(174)가 제어될 수 있게 한다. 상기 코드 장치들은 이하에서 기술될 마이크로프로세서(158) 내부에 CPU와 패키징된 플래시 메모리, 별개의 플래시 ROM, 또는 내부의 비휘발성 메모리(174)일 수 있는데, 상기 코드 장치들은 비휘발성 메모리(174)의 물리적 블록들이 어드레싱될 수 있게 하고, 정보들이 물리적 블록들 내로 저장, 물리적 블록들로부터 판독 및 물리적 블록들로부터 소거될 수 있게 한다.
일반적으로, 사용자가 데이터를 기록할 때, 사용자들은 파일 시스템을 사용하여 데이터를 효과적으로 기록한다. 파일 시스템은 데이터를 논리적 블록, 또는 보다 특정하게, 저장 매체와 연관된 물리적 블록에 매핑되는 논리적 블록의 페이지들에 연관시킨다. 도 5는 본 발명의 일 실시예에 따른 논리적 블록들을 가진 파일 시스템 및 물리적 블록들을 가진 매체의 다이어그램 표현이다. 파일 시스템(514)의 논리적 블록들(510)은 임의의 수의 페이지(518)를 포함한다. 논리적 블록, 예를 들어, 논리적 블록(510a)에 포함된 페이지(518) 수는 소거 단위의 크기에 의존한다. 예를 들어, 대략 32 페이지는 도시된 바와 같이, 최소 소거 단위가 대략 32 페이지를 포함할 때 논리적 블록(510a)에 포함될 수 있다.
매체(534), 예를 들어, 내장형 플래시 메모리의 물리적 블록들(530)이 다수의 페이지(538)를 포함한다. 당업자가 알 수 있듯이, 물리적 블록들(530)에 포함된 페이지들(538)의 수는 전형적으로 논리적 블록들(510)에 포함된 페이지들(518)의 수와 동일하다.
도 5와 관련하여 이하에서 설명되는 바와 같이, 데이터 관리자 또는 데이터 관리 소프트웨어를 사용하여, 논리적 블록들(510)은 물리적 블록들(530)로 매핑될 수 있다. 논리적 블록들(510)과 물리적 블록들(530) 사이의 매핑은 각각 일대일 매핑, 즉, 논리적 블록 어드레스에 있는 제 1 논리적 블록(510)이 실질적으로 논리적 블록 어드레스와 동일한 물리적 블록 어드레스에 있는 제 1 물리적 블록(530a)으로 매핑되는 매핑일 수 있다. 그러나, 논리적 블록들(510)과 물리적 블록들(530) 사이의 매핑은 종종 논리적 블록 어드레스에 있는 제 1 논리적 블록(510a)이 제 1 물리적 블록(530a)으로 매핑되지 않는 대신에 상이한 물리적 블록, 예를 들어, 논리적 블록 어드레스와 동일하지 않은 물리적 블록 어드레스를 갖는 물리적 블록(530c)으로 매핑되도록 이루어진다.
비록 논리적 블록과 연관된 페이지 어드레스들의 세트는 모두 물리적 블록과 연관된 페이지 어드레스들의 세트에 효과적으로 대응할 수 있지만, 즉, 예를 들어, 논리적 블록은 논리적 페이지들 0-31에 연관될 수 있는 한편, 물리적 블록은 물리적 페이지들 0-31에 연관될 수 있지만, 주어진 논리적 페이지 어드레스와 연관된 내용들이 반드시 대응하는 물리적 페이지 어드레스에 배치되지 않을 수도 있다. 논리적 블록에 연관되어 포함되고 물리적 블록에 물리적으로 포함된 목적하는 내용들에 액세스하는 것을 용이하게 하기 위하여, 블록에 연관된 페이지들은 복수 개의 그룹들 또는 서브-그룹들로 그룹지어질 수 있다. 논리적 블록에 연관된 페이지들 및 물리적 블록에 연관된 페이지들 모두 또는 둘 중 하나는 그룹들 또는 유닛들로 그룹지어질 수 있다. 도 6는 본 발명의 실시예에 따라 그룹들로 배열된 페이지들을 가진 블록의 다이어그램 표현이다. 블록(600)은 페이지들(604)을 포함한다. 블록(600)은 일반적으로 임의의 수의 페이지들(604)을 포함할 수 있다.
페이지들(604)은 그룹들(608)로 배열된다. 일반적으로, 블록(600) 내 그룹들(608)의 수 및 그룹(608) 내 페이지들(604)의 수는 폭넓게 변화할 수 있다. 전형적으로, 그룹(608) 내 페이지들(604)의 수는 실질적으로 임의의 클러스터 크기가 수용될 수 있도록 선택된다. 예를 들어, 소정의 시스템들에서, 클러스터 크기는 대략 4 페이지(604)이다. 클러스터 크기가 대략 4 페이지(604)일 때, 그룹(608) 내 페이지들(604)의 수는 4의 배수, 예를 들어, 그룹(608) 당 4 또는 8 페이지(604)이다.
당업자가 알 수 있듯이, 클러스터는 일반적으로 파일에 대해 최소 크기인 것으로 고려된다. 그리하여, 파일 시스템이 파일에 대하여 실질적으로 단지 1 바이트를 기록하려고 시도할 때 조차, 전체 클러스터는 그 파일에 효과적으로 할당된다. 후속적인 파일은 전형적으로 다른 클러스터들 내로 기록될 것이다.
도 6을 다시 참조하면, 도시된 바와 같이 상기 실시예에서, 각각의 그룹(608)은 4 페이지(604)를 포함한다. 각각의 그룹(608) 내 페이지들(604)의 순서는 각각의 그룹(608)의 시작에 대해 고정된다. 예를 들어, 그룹(608a) 내 페이지들(604a-d)의 순서는 그룹(608b)의 페이지들(604e-h)의 순서와 같이 고정된다. 각각의 그룹(608) 내 페이지들(604)의 순서가 각 그룹(608)의 시작에 대해 고정되는 반면, 블록(600) 내 그룹들(608)의 순서는 일반적으로 고정되지 않는다.
각각의 논리적 페이지 및 물리적 페이지는 일반적으로 여분 영역 및 데이터 영역을 포함한다. 전술된 실시예에서, 여분 영역 또는 오버헤드 영역은 대략 16 바이트까지의 정보를 포함할 수 있고, 상기 정보는 특정 페이지가 속하는 그룹을 식별하는 바이트인 그룹 식별자를 포함하나 이에 한정되는 것은 아니다. 도 7은 본 발명의 실시예에 따른 페이지의 다이어그램 표현이다. 페이지(700)는 여분 영역(706) 및 데이터 영역(710)을 포함한다. 일반적으로, 페이지(700)는 대략 528 바이트를 포함하고, 528 바이트 중 대략 16 바이트는 여분 영역(706)에 포함될 수 있으며, 대략 512 바이트는 데이터 영역(710)에 포함될 수 있다. 비록 여분 영역(706)이 페이지(700)의 마지막 바이트와 연관될 수 있을지라도, 전술한 실시예에서, 여분 영역(706)은 페이지(700)의 제 1 바이트들과 연관된다.
데이터 영역(710)은 데이터 내용들(712), 예를 들어, 사용자 데이터 내용들을 저장하도록 배열된다. 여분 영역(706)은 페이지(700)가 추적될 수 있도록 하는 정보를 포함하도록 배열된다. 예를 들어, 여부 영역(706)은 페이지(700)가 어떤 그룹, 즉, 블록 내 어떤 그룹의 일부인지를 식별하는 그룹 식별자(714)를 포함할 수 있다. 그룹의 식별을 용이하게 하기 위하여, 그룹 식별자(714)는 여분 영역(706) 및, 그리하여, 페이지(700)와 연관된 제 1 바이트일 수 있다.
전형적으로, 그룹 식별자(714)가 특정 그룹의 식별자와 매칭되지 않는다면 페이지(700)가 판독되지 않을 때, 그룹 식별자(714)가 특정 그룹과 연관된 식별자와 매칭되는지 여부를 결정하기 위하여, 예를 들어, 전체 시스템 내에서 소프트웨어 또는 펌웨어를 사용하여 그룹 식별자(714)가 판독되어 체크가 이루어진다. 그룹 식별자(714)가 페이지(700)와 연관된 제 1 바이트이기 때문에, 그룹 식별자(714)를 판독하는 것은 상대적으로 적은 오버헤드를 요구하고 상대적으로 효율적이다. 만약 그룹 식별자(714)가 특정 그룹에 대한 식별자와 매칭된다면, 데이터(712)가 여분 영역(706)의 나머지에 부가하여 판독될 수 있다. 반면, 그룹 식별자(714)가 특정 그룹에 대한 식별자와 매칭되지 않는다면, 데이터(712) 및 여분 영역(706)의 나머지는 판독되지 않는다.
실질적으로 단지 그룹 식별자(714)가 특정 그룹의 식별자와 매칭될 때에만 페이지(700)와 연관된 모든 비트들을 판독함으로써, 그룹 식별자(714)가 특정 그룹의 식별자와 매칭되지 않을 때, 전형적으로 대략 527 바이트의 데이터의 전달과 연관된 전달 시간은 상당히 제거될 수 있다. 즉, 그룹 식별자(714)가 특정 그룹의 식별자와 매칭되지 않을 때, 페이지(700)의 나머지 바이트들을 판독 또는 전달하는 것과 연관된 시간은 효과적으로 제거될 수 있다.
대안적으로, 예를 들어, 그룹 식별자(714)가 특정 그룹의 식별자와 매칭되기 때문에 나머지 바이트들이 판독된다면, 하나의 액세스 시간, 또는 데이터를 판독하기 위한 명령 및 플래시 메모리로부터 전달할 준비가 되어 있는 데이터를 이슈(issue)하는 것 사이의 경과 시간은 효과적으로 절약된다. 여분 영역(706)은 또한 데이터 영역(710) 다음에 배치될 수 있다. 비록 여분 영역(706)이 데이터 영역(710) 다음에 배치될 때 판독 동작이 최적화되지 않을 수 있지만, 기록 동작의 성능은 여전히 앞서 기술한 바와 같이 일반적으로 더 낮은 수의 블록 소거 동작들로 인해 향상된다.
도 8a는 본 발명의 일 실시예에 따른, 각각 그룹들로 분할된 논리적 블록 및 물리적 블록의 다이어그랩 표현이다. 논리적 블록(802) 및 물리적 블록(806)은 각각 균등하게 그룹들(810) 및 그룹들(814)로 분할된다. 일 실시예에서, 그룹들(810, 814)의 수는 전형적으로 2의 거듭제곱이다. 예를 들어, 논리적 블록(802)에 1, 2, 4, 또는 8 개의 그룹들(810)이 존재할 수 있다.
비록 논리적 블록(802) 및 물리적 블록(806)의 페이지 수는 넓은 범위에 걸쳐 변화할 수 있지만, 논리적 블록(802) 및 물리적 블록(806)은 각각 32 페이지를 포함한다. 논리적 블록(802) 내 각각의 그룹(810)은 8 페이지를 포함하고, 즉, 예를 들어, 그룹(810c)는 8 페이지(826)를 포함하고, 물리적 블록(806) 내 각각의 그룹(814)은 8 페이지를 포함하며, 즉, 예를 들어, 그룹(814a)은 8 페이지(834)를 포함한다. 전형적으로, 각각의 그룹(810, 814)의 페이지 순서는 실질적으로 고정된다. 예를 들어, 그룹(810c) 내에서, 제 1 페이지(826a)는 실질적으로 "page 0"으로서 고정되고, 8 페이지(826h)는 실질적으로 "page 7"로서 고정된다. 그리하며, 그룹(814a)이 "group 0"이고 그룹(814d)이 "group 3"이 되도록 그룹들(814)이 정렬될 때, 물리적 블록(806)의 전체 "page 30"을 기록하는 것은 실질적으로 그룹(814d)의 "page 6"(846g)을 기록하는 것에 상당하다.
일반적으로, 물리적 블록(806) 내 그룹들(814)의 순서는 랜덤할 수 있다. 그룹(814)의 실제 그룹 번호는 도 7와 관련하여 앞서 설명한 바와 같이 페이지의 여분 영역에 저장될 수 있다. 그룹(814a)의 페이지들(834)에 저장된 그룹 번호는 그룹(814a)에 포함된 것으로서 페이지들(834)을 식별하도록 배열된다. 유사하게, 페이지들(838)에 저장된 그룹 번호들은 그룹(814b)에 포함된 것으로서 페이지들(838)을 식별하고, 페이지들(842)에 저장된 그룹 번호들은 그룹(814c)에 포함된 것으로서 페이지들(842)을 식별하며, 페이지들(846)에 저장된 그룹 번호들은 그룹(814d)에 포함된 것으로서 페이지들(846)을 식별한다.
도시된 바와 같이, 물리적 그룹(814a), 즉, 물리적 "group 0" 내 페이지들(834)의 데이터 영역은 논리적 그룹(810d)과 연관된 데이터를 저장하도록 배열된다. 물리적 그룹(814c)의 페이지들(842) 또한 논리적 그룹(810d)과 연관된 데이터를 저장하도록 배열된다. 논리적 그룹(810c)과 연관된 데이터는 물리적 그룹(814b)의 페이지들(838)의 데이터 영역에 저장되도록 배열된다. 특히, 전술된 실시예에서, 논리적 그룹(810d)과 연관된 데이터는 물리적 그룹(814a) 내로 기록되고, 그 다음 논리적 그룹(810c)과 연관된 데이터는 물리적 그룹(814b) 내로 기록된다. 물리적 그룹(814b)이 기록된 이후에, 논리적 그룹(810d)과 연관된 데이터는 다시 이번에 물리적 그룹(814c) 내로 기록된다.
도 8b와 관련하여, 그룹 연관이 도 8a에 도시된 바와 같이 되도록 물리적 블록(806)의 물리적 그룹들(814)이 기록될 수 있는 방식의 일예가 본 발명의 일 실시예에 따라 이하에서 기술될 것이다. 사용자는 논리적 그룹(810d)의 논리적 "page 1"(830b)와 연관된 데이터를 물리적 그룹(814a) 안으로 기록하도록 선택할 수 있고, 보다 특정하게, 860으로 표시된 것처럼, 물리적 그룹(814a)의 물리적 "page 1"(834b) 안으로 기록하도록 선택할 수 있다. 일단 물리적 "page 1"(834b)가 기록되면, 사용자는 862로 표시된 것처럼 논리적 "page 3"과 연관된 데이터를 물리적 그룹(814a)의 물리적 "page 3"(834d) 내로 기록할 수 있다.
만약 다음의 사용자 명령이 논리적 그룹(810c)과 연관된 데이터를 기록하라는 것이라면, 부가의 페이지들(834)이 물리적 그룹(814a) 내에서 이용가능할 때 조차, 논리적 그룹(810c)과 연관된 데이터는 실질적으로 비어있는 물리적 그룹(814), 또는 실질적으로 소거된 상태에 있는 물리적 그룹(814) 내로 기록된다. 예를 들어, 그룹(810c)의 논리적 "page 2"(826c)와 연관된 데이터는 864로 표시된 것처럼 그룹(814b)의 물리적 "page 2"(838c) 내로 기록될 수 있다. 논리적 그룹(810c)과 연관된 다른 페이지들은 866 및 868로 표시된 것처럼 그룹(814b) 내로 기록될 수 있다.
일단 논리적 블록(810c)과 연관된 데이터가 기록된다면, 사용자는 다시 한 번 논리적 블록(810d)과 연관된 데이터를 기록하도록 결정할 수 있다. 그리하여, 그룹(810d)의 논리적 "page 5-7"(830f-h)와 연관된 데이터는 870, 872, 874로 표시된 것처럼 그룹(814c)의 적절한 물리적 페이지들(842) 내로 기록될 수 있다. 전형적으로, 물리적 그룹(814b)이 이미 기록되었고 그룹(814b) 다음에 그룹(814a)을 기록하는 것이 일반적으로 허용되지 않는다는 사실로 인해 발생할 수 있는 아웃-오브-시퀀스 기록 위반 때문에, 논리적 "page 5-7"(830f-h)와 연관된 데이터는 물리적 그룹(814a) 내로 기록될 수 없다. 그 결과, 논리적 그룹(810d)과 연관된 데이터는 물리적 그룹(814a) 및 물리적 그룹(814c)에 배치될 수 있다.
논리적 블록(802)과 연관된 더 높은 전체 논리적 블록 어드레스들과 연관된 데이터는 더 낮은 전체 논리적 블록 어드레스들과 연관된 데이터들보다 더 낮은 전체 물리적 블록 어드레스들을 갖는 물리적 블록(806)의 물리적 페이지들에 저장될 수 있다. 예를 들어, 비록 논리적 페이지(830b)와 연관된 내용들은 논리적 페이지(826c)와 연관된 내용들이 기록될 수 있는 물리적 페이지(838c)보다 더 낮은 전체 물리적 블록 어드레스를 가질 수 있는 물리적 페이지(834b) 내로 기록될 수 있지만, 논리적 페이지(830b)와 연관된 전체 논리적 블록 어드레스는 논리적 페이지(826c)와 연관된 전체 논리적 블록 어드레스보다 더 높을 수 있다.
이전에 기록된 페이지가 중복기록되는 경우에, 즉, 예를 들어, 논리적 "page 1"(830b)와 연관된 데이터가, 논리적 "page 1"(830b)가 "page 1"(834) 내로 기록되고 물리적 그룹(814b)이 기록된 이후의 소정의 시간에서, 물리적 그룹(814d)(미도시) 내로 기록되는 경우에, "page 1"(834b)의 데이터 영역에 저장된 내용들은 정당하지 않은 것으로 고려될 수 있다. 그리하여, 논리적 "page 1"(830b)와 연관된 내용들을 검색하라는 명령은 대응하는 물리적 페이지가 발견될 때까지 물리적 블록(806)이 역방향으로 효과적으로 서치될 수 있게 한다. 즉, 물리적 그룹(814d)이 가장 먼저 서치될 수 있고, 그 다음 물리적 그룹(814c), 물리적 그룹(814b), 그리고 물리적 그룹(814a)가 서치될 수 있다. 역방향 서치는 일반적으로 가장 최근의 데이터가 액세스될 수 있도록 할 것이다.
물리적 그룹(814d)은 도시된 바와 같이 물리적 그룹들(814a-c)이 기록된 이후에 실질적으로 할당되지 않은 상태로 남아있다. 논리적 그룹(810b)이 기록되는 경우에, 논리적 그룹(810b)과 연관된 데이터는 물리적 그룹(814d) 내로 기록될 수 있다. 즉, 물리적 그룹(814d)은 도 8c에 도시된 바와 같이 논리적 그룹(810b)에 효과적으로 할당될 수 있다. 논리적 그룹(810b)과 연관된 데이터는 물리적 그룹(814d) 내로 기록되는 반면, 논리적 그룹(810c)과 연관된 데이터는 물리적 그룹(814b) 내로 기록된다. 논리적 그룹(810d)은 물리적 그룹(814a) 및 물리적 그룹(814c) 양자 모두에 연관된다.
물리적 그룹(814d)이 논리적 그룹(810b)에 할당되고, 논리적 그룹(810b)과 연관된 데이터가 물리적 그룹(814d)의 데이터 영역내로 기록될 때, 그 다음 논리적 그룹(810d)과 연관된 데이터가 다시 기록된다면, 데이터가 기록될 수 있는 이용가능한 물리적 그룹들(814)이 존재하지 않는다. 그리하여, 새로운, 예를 들어, 여분의 물리적 블록은 논리적 블록(802)에 대응하는 물리적 블록이 되도록 효과적으로 획득된다. 즉, 새로운 물리적 블록은 실질적으로 물리적 블록(806), 예를 들어, 현재 물리적 블록과 연관된 모든 현재 데이터, 및 새로운 사용자 데이터가 새로운 물리적 블록 내로 병합될 수 있도록 할당된다.
도 8d는 논리적 블록, 즉, 도 8a-c의 논리적 블록(802)과 본 발명의 실시예에 따른 병합 동작 이후의 새로운 물리적 블록 사이의 연관을 나타내는 다이어그램이다. 도 8c의 물리적 블록(806)의 내용들 및 논리적 블록(802)과 연관된 새로운 사용자 데이터가 새로운 물리적 블록(880) 내로 병합될 때, 예를 들어, 유효하게 중복기록되지 않은 페이지들로서 비어있는 부정당(invalid) 페이지들은 새로운 물리적 블록(880) 내로 기록되지 않는다. 부가하여, 도 8c의 물리적 블록(806)의 이용가능한 공간의 부족 때문에 새로운 물리적 블록(880)이 할당될 수 있게 조장하는 데이터와 같은 새로운 데이터는 새로운 데이터에 대응하는 기존의 데이터를 효과적으로 오버라이딩(override)한다. 즉, 새로운 데이터는 새로운 데이터와 동일한 논리적 페이지와 연관된 기존의 데이터를 오버라이딩한다.
일단 병합이 발생하고 새로운 데이터가 새로운 물리적 블록(880) 내로 기록되면, 논리적 블록(802)과 새로운 물리적 블록(880) 사이의 연관은 논리적 블록(802)의 그룹(810b)과 연관된 데이터가 물리적 그룹(884a)에 저장되고, 논리적 블록(802)의 그룹(810c)과 연관된 데이터가 물리적 그룹(884b)에 저장되며, 논리적 블록(802)의 그룹(810d)과 연관된 데이터가 물리적 그룹(884c)에 저장되도록 연관될 수 있다. 물리적 그룹(884d)은 물리적 그룹(884d)이 요구될 때까지 실질적으로 소거된 상태로 남아있다. 당업자가 알 수 있듯이, 일단 데이터가 새로운 물리적 블록(880) 내로 병합되거나 새로운 물리적 블록(880) 내로 기록되면, 도 8a의 원래의 물리적 블록(806)은 소거되어 여분의 물리적 블록으로서 사용되도록 이용가능하게 만들어질 수 있다.
페이지들과 연관된 그룹 식별자들에 액세스하는 판독 동작들이 보다 효율적으로 발생할 수 있게 하기 위하여, 현재 블록의 페이지가 판독되거나 기록될 때, 현재 작용하는 블록 정보 표가, 예를 들어, 도 4c의 RAM(162)에 만들어질 수 있다. 도 9는 본 발명의 일 실시예에 따른 현재 작용하는 블록 정보 표의 다이어그램 표현이다. 정보 표(950)는 그룹 번호들(954)을 저장하도록 배열된다. 페이지가 판독될 때, 그 그룹 번호(954)는 정보 표(950) 안으로 저장된다. 그룹 번호(954)를 저장하는 것은 전형적으로 동일한 블록, 즉, 그룹 번호(954)가 정보 표(950)에 저장된 페이지를 포함하는 블록에 대한 다음의 판독 요청에 대한 판독 횟수를 감소시키기 위해 이용된다. 전형적으로, 실질적으로 현재 작용하는 블록에 관련된 정보는 정보 표(950)에 유지된다. 전체 시스템 내의 RAM 요구사항을 실질적으로 최소화하기 위하여, 정보 표(950)는 단지 현재 액세스되고 있는 블록에 대해서만 만들어질 수 있다. 상이한 블록이 액세스될 때, 기존의 정보 표의 정보는 새로운 블록의 정보에 의해 효과적으로 대체된다.
도 10a 및 도 10b를 참조하면, 논리적 그룹의 일부인 논리적 페이지와 연관된 내용들을 물리적 그룹의 일부인 물리적 페이지 내로 기록하는 방법과 연관된 단계들이 본 발명의 일 실시예에 따라 기술될 것이다. 물리적 페이지 내로 내용들을 기록하는 프로세스(1000)는 물리적 페이지 내로 기록되는 내용들이 식별되는 단계(1004)에서 시작한다. 즉, 논리적 페이지, 예를 들어, 논리적 페이지 "A"와 연관된 기록될 새로운 데이터가 획득되거나 식별된다.
일단 기록될 내용들이 식별되면, 논리적 페이지 "A"에 대응하는 물리적 그룹이 존재하는지 여부에 대한 결정이 단계(1008)에서 이루어진다. 즉, 논리적 페이지 "A", 또는 보다 일반적으로, 논리적 페이지 "A"를 포함하는 논리적 그룹이 마지막으로 할당된 또는 연관된 물리적 그룹과 동일한지 여부가 결정된다. 그것이 논리적 페이지의 마지막으로 할당된 물리적 그룹이라는 것이 결정된다면, 논리적 페이지 "A"와 연관된 내용들이 기록될 수 있는, 할당된 물리적 그룹에 이용가능한 적절한 페이지가 존재하는지 여부과 관련한 결정이 단계(1012)에서 이루어진다. 적절한 페이지 존재 여부에 대한 결정은 논리적 페이지 "A"와 연관된 내용들이 할당된 물리적 그룹 내로 기록된다면 아웃-오브-시퀀스 기록 위반이 존재할 것인지 여부의 결정을 포함할 수 있다. 상기 결정은 또한 논리적 페이지 "A"와 연관된 내용들에 대해 이용가능한 할당된 물리적 그룹 내 기록되지 않은 페이지가 존재하는지 여부를 결정하는 단계를 포함한다.
만약 단계(1012)에서 할당된 물리적 그룹에 이용가능한 적절한 페이지가 존재함이 결정된다면, 논리적 페이지 "A"와 연관된 데이터 또는 내용들은 단계(1016)에서 적절한 페이지 내로 기록된다. 실질적으로 임의의 적절한 방법이 데이터를 물리적 페이지 내로 기록하기 위하여 사용될 수 있다. 데이터가 기록된 이후에, 물리적 그룹의 물리적 페이지 내로 데이터를 기록하는 프로세스는 완료된다.
대안적으로, 단계(1012)에서 할당된 물리적 그룹에서 이용가능한 페이지가 존재하지 않음이 결정된다면, 표시는 할당된 물리적 그룹의 페이지들이 채워졌음(full), 또는 아웃-오브-시퀀스 기록 위반을 야기하지 않을 이용가능한 적절한 페이지가 존재하지 않음을 나타낼 수 있다. 그리하여, 프로세스 흐름은 단계(1012)로부터 물리적 블록 내 이용가능한 물리적 그룹이 존재하는지 여부가 결정되는 단계(1020)로 이동한다. 즉, 단계(1020)에서 특정 논리적 그룹과 연관되지 않은 물리적 블록 내 그룹이 존재하는지 여부가 결정된다.
이용가능한 물리적 그룹이 존재함이 결정된 때, 이용가능한 물리적 그룹은 단계(1024)에서 논리적 페이지 "A"를 포함하는 논리적 그룹에 효과적으로 할당된다. 일단 이용가능한 물리적 그룹이 논리적 그룹에 할당되면, 논리적 페이지 "A"와 연관된 데이터 또는 내용들이 단계(1028)에서 새로이 할당된 물리적 그룹의 적절한 페이지 안으로 기록된다. 일단 데이터가 기록되면, 물리적 그룹의 물리적 페이지 내로 데이터를 기록하는 프로세스는 완료된다.
단계(1020) 및 논리적 페이지 "A"에 할당된 물리적 블록의 이용가능한 물리적 그룹이 존재하는지 여부의 결정으로 돌아가, 아무런 이용가능한 물리적 그룹이 존재하지 않음이 결정된다면, 논리적 페이지 "A"와 연관된 데이터 또는 내용들이 물리적 블록, 즉 현재 물리적 블록 내로 기록되지 않을 수 있음을 암시한다. 따라서, 프로세스 흐름은 이용가능한 여분의 물리적 블록이 존재하는지 여부가 결정되는 단계(1032)로 진행한다. 만약 아무런 이용가능한 여분의 물리적 블록이 존재하지 않음이 결정된다면, 예외가 논리적 페이지 "A"와 연관된 내용들이 기록되지 않을 수 있음을 나타내는 단계(1036)에서 던져진다. 일단 예외가 던져지면, 물리적 그룹의 물리적 페이지 내로 데이터를 기록하는 프로세스는 종료되고, 전형적으로 실패 표시가 보고된다. 컨트롤러 소프트웨어 및 펌웨어의 설계는 보통 실질적으로 이러한 상황이 플래시 메모리가 수명 종료시까지 균등하게 이용되지 않는다면 발생하는 것을 방지할 것이다.
반면, 단계(1032)에서 이용가능한 여분의 물리적 블록이 존재함이 결정된다면, 여분의 물리적 블록은 단계(1040)에서 논리적 페이지 "A"를 포함하는 논리적 블록에 사용하기 위해 할당된다. 그 다음, 단계(1044)에서, 논리적 페이지 "A"를 포함하는 논리적 블록에 이전에 할당된 "기존의" 물리적 블록으로부터 나온 정당한 데이터는 "새로운" 또는 여분의 물리적 블록 내의 그룹들로 병합된다. 부가하여, 새로운 데이터, 또는 단계(1004)에서 획득된 논리적 페이지 "A"와 연관된 내용들은 여분의 물리적 블록과 연관된 그룹의 페이지 안으로 기록된다. 기존의 물리적 블록으로부터 나온 정당한 데이터가 여분의 물리적 블록 내로 병합된 이후에, 기존의 물리적 블록은 단계(1048)에서 소거된다. 예를 들어, 기존의 물리적 블록이 실질적으로 수명의 종료에 도달하지 않는다면, 기존의 물리적 블록을 소거하는 것은 기존의 물리적 블록이 후속적으로 여분의 물리적 블록으로서 사용될 수 있게 한다. 일단 기존의 물리적 블록이 소거되면, 물리적 그룹의 물리적 페이지 안으로 데이터를 기록하는 프로세스는 종료된다.
일반적으로, 블록들 내의 페이지들을 그룹짓는 것과 연관된 기능은 소프트웨어로, 예를 들어, 프로그램 코드 장치들로서, 또는 펌웨어로서 호스트 시스템에 제공된다. 마모 균등화(wear leveling)가 일어날 수 있게 하기 위하여 호스트 시스템에 제공된 소프트웨어 또는 펌웨어와 연관된 적절한 시스템 구조의 일 실시예는 도 11에 도시된다. 시스템 구조(900)는 일반적으로 여러가지 모듈들을 포함하는데, 상기 모듈들은 애플리케이션 인터페이스 모듈(904), 시스템 관리자 모듈(908), 데이터 관리자 모듈(912), 데이터 무결성 관리자(data integrity manager)(916), 및 장치 관리자 및 인터페이스 모듈(920)을 포함할 수 있고, 이에만 제한되는 것은 아니다. 일반적으로, 시스템 구조(900)는 프로세서, 예를 들어, 도 4a의 프로세서(108)에 의해 액세스될 수 있는 소프트웨어 코드 장치들 또는 펌웨어를 사용하여 구현될 수 있다.
일반적으로, 애플리케이션 인터페이스 모듈(904)는 호스트 운영 시스템 또는 사용자와 직접 통신하도록 배열될 수 있다. 애플리케이션 인터페이스 모듈(904)은 또한 시스템 관리자 모듈(908) 및 데이터 관리자 모듈(912)과 통신한다. 사용자가 플래시 메모리를 판독, 기록, 또는 포맷하기 원할 때, 사용자는 운영 시스템에 요청들을 보내고, 요청들은 애플리케이션 인터페이스 모듈(904)로 전달된다. 애플리케이션 인터페이스 모듈(904)은 요청들에 의존하여 시스템 관리자 모듈(908) 또는 데이터 관리자 모듈(912)로 요청들을 안내한다.
시스템 관리자 모듈(908)은 시스템 초기화 서브모듈(924), 소거 카운트 블록 관리 서브모듈(926), 및 전원 관리 블록 서브모듈(930)을 포함한다. 시스템 초기화 서브모듈(924)은 일반적으로 초기화 요청이 프로세싱될 수 있게 하도록 배열되고, 전형적으로 소거 카운트 블록 관리 서브모듈(926)과 통신한다. 소거 카운트 블록 관리 서브모듈(926)은 블록들의 소거 카운트들이 저장되게 하는 기능, 및 평균 소거 카운트가 개개의 소거 카운트들을 사용하여 계산 및 업데이트되게 하는 기능을 포함한다. 소거 카운트들의 사용은 2002년 10월 28일에 출원되어 동시계류 중인 미국 특허출원 제 10/281,739호(Atty. Docket No. SANDP023)에 기술되어 있고, 상기 출원은 전체가 참조로서 본 명세서에 편입된다.
애플리케이션 인터페이스 모듈(904)과 통신하는 것에 부가하여, 시스템 관리자 모듈(908)은 또한 데이터 관리자 모듈(812), 및 장치 관리자 및 인터페이스 모듈(920)과 통신한다. 데이터 관리자 모듈(912)은 시스템 관리자 모듈(908) 및 애플리케이션 인터페이스 모듈(904)과 통신하며, 논리적 섹터들을 물리적 섹터들로 효과적으로 전환하는 섹터 매핑을 제공하는 기능을 포함할 수 있다. 즉, 데이터 관리자 모듈(912)은 논리적 블록들을 물리적 블록들로 매핑하도록 배열된다. 데이터 관리자 모듈(912)은 또한 운영 시스템 및 파일 시스템 인터페이스 층들과 연관된 기능을 포함할 수 있고, 블록들 내 그룹들이 관리될 수 있게 한다.
장치 관리자 및 인터페이스 모듈(920)은 시스템 관리자 모듈(908), 데이터 관리자(912) 및 데이터 무결성 관리자(916)와 통신하고, 전형적으로 플래시 메모리 인터페이스를 제공하며, 하드웨어 추상화(hardware abstraction)와 연관된 기능, 예를 들어, I/O 인터페이스를 포함한다. 데이터 무결성 관리자 모듈(916)은 다른 기능들 가운데 ECC 핸들링을 제공한다.
비록 본 발명의 단지 몇몇 실시예들만이 설명되었지만, 본 발명은 본 발명의 사상 또는 범위를 벗어나지 않으면서 다수의 다른 특정 형태들로 구현될 수 있다. 예를 들어, 논리적 블록들 내의 논리적 그룹들 및 물리적 블록들 내 대응하는 물리적 그룹들은 실질적으로 동일한 크기인 것으로 설명되었지만, 논리적 그룹들 및 물리적 그룹들은 일반적으로 상이한 크기로 이루어질 수 있다. 즉, 논리적 그룹에 포함된 페이지 수 및 논리적 그룹에 대응하는 물리적 그룹에 포함된 페이지 수는 반드시 똑같아야 하는 것은 아니다.
본 발명의 여러 방법들과 연관된 단계들은 폭넓게 변화될 수 있다. 일반적으로, 단계들은 부가되고, 제거되고, 재정렬되며, 변경될 수 있다. 따라서, 본 예시들은 한정적인 것이 아니라 예시적인 것으로 간주되어야 하고, 본 발명은 본 명세서에 기재된 세부사항들에 제한되지 않고 첨부된 청구범위의 범위 내에서 변형될 수 있다.

Claims (52)

  1. 비휘발성 메모리와 연관된 제 1 블록 내로 데이터를 기록하는 방법으로서,
    상기 제 1 블록은 복수 개의 페이지들을 포함하고, 상기 복수 개의 페이지들은 복수 개의 그룹들로 그룹지어지며, 여기서, 상기 복수 개의 그룹들 중 각각의 그룹은 2 이상의 페이지들을 포함하며,
    상기 방법은,
    상기 복수 개의 그룹들 중 제 1 그룹이 상기 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계;
    상기 제 1 그룹이 상기 데이터를 수신하기 위해 이용가능함이 결정된 때 상기 제 1 그룹에 포함된 제 1 페이지 내로 상기 데이터를 기록하는 단계;
    상기 제 1 그룹이 상기 데이터를 수신하기 위해 이용가능하지 않음이 결정된 때, 상기 복수 개의 그룹들 중 제 2 그룹이 상기 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계; 및
    상기 제 2 그룹이 상기 데이터를 수신하기 위해 이용가능함이 결정된 때 상기 제 2 그룹에 포함된 제 2 페이지 내로 상기 데이터를 기록하는 단계;
    를 포함하는 데이터 기록 방법.
  2. 제 1항에 있어서,
    상기 제 2 그룹이 상기 데이터를 수신하기 위해 이용가능하지 않음이 결정된 때, 제 2 블록이 상기 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계를 더 포함하는 데이터 기록 방법.
  3. 제 1항에 있어서,
    상기 제 1 그룹이 상기 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계는 상기 제 1 페이지가 상기 데이터를 수신하기에 적절한 때를 결정하는 단계를 포함하는 데이터 기록 방법.
  4. 제 1항에 있어서,
    상기 데이터는 논리적 페이지와 연관되고, 상기 제 1 블록은 제 1 물리적 블록인 데이터 기록 방법.
  5. 제 1항에 있어서,
    상기 제 1 그룹은 그룹 식별자에 의해 식별되고, 상기 그룹 식별자는 상기 제 1 그룹과 연관된 여분 영역에 저장되며, 상기 제 1 그룹이 상기 데이터를 수신하기 위해 이용가능한 때를 결정하는 단계는 상기 그룹 식별자를 획득하는 단계를 포함하는 데이터 기록 방법.
  6. 제 1 블록을 포함하는 비휘발성 메모리 - 여기서, 상기 제 1 블록은 복수 개의 페이지들을 포함하고, 상기 복수 개의 페이지들은 복수 개의 그룹들로 그룹지어지며, 상기 복수 개의 그룹들 중 각각의 그룹은 2 이상의 페이지들을 포함함 -;
    상기 복수 개의 그룹들 중 제 1 그룹이 데이터 세트를 수신하기 위해 이용가능한 때를 결정하기 위한 코드 장치들;
    상기 제 1 그룹이 상기 데이터 세트를 수신하기 위해 이용가능함이 결정된 때 상기 제 1 그룹에 포함된 제 1 페이지 내로 상기 데이터 세트를 기록하기 위한 코드 장치들;
    상기 제 1 그룹이 상기 데이터 세트를 수신하기 위해 이용가능하지 않음이 결정된 때, 상기 복수 개의 그룹들 중 제 2 그룹이 상기 데이터 세트를 수신하기 위해 이용가능한 때를 결정하기 위한 코드 장치들; 및
    상기 제 2 그룹이 상기 데이터 세트를 수신하기 위해 이용가능함이 결정된 때 상기 제 2 그룹에 포함된 제 2 페이지 내로 상기 데이터 세트를 기록하기 위한 코드 장치들;
    을 포함하는 메모리 시스템.
  7. 제 6항에 있어서,
    상기 제 2 그룹이 상기 데이터 세트를 수신하기 위해 이용가능하지 않음이 결정된 때, 제 2 블록이 상기 데이터 세트를 수신하기 위해 이용가능한 때를 결정하기 위한 코드 장치들 - 여기서, 상기 제 2 블록은 상기 비휘발성 메모리에 포함됨 -;
    을 더 포함하는 메모리 시스템.
  8. 제 7항에 있어서,
    상기 제 2 블록이 상기 데이터 세트를 수신하기 위해 이용가능함이 결정된 때, 상기 제 2 블록 내로 소정의 상기 복수 개의 페이지들의 내용들을 복사하기 위한 코드 장치들; 및
    상기 제 2 블록이 상기 데이터 세트를 수신하기 위해 이용가능함이 결정된 때, 상기 제 2 블록 내로 상기 데이터 세트를 기록하기 위한 코드 장치들;
    을 더 포함하는 메모리 시스템.
  9. 제 6항에 있어서,
    상기 제 1 그룹을 결정하기 위한 코드 장치들; 및
    상기 제 2 그룹을 결정하기 위한 코드 장치들;
    을 더 포함하는 메모리 시스템.
  10. 제 6항에 있어서,
    상기 제 1 그룹이 상기 데이터 세트를 수신하기 위해 이용가능한 때를 결정하기 위한 상기 코드 장치들은 상기 제 1 페이지가 상기 데이터 세트를 수신하기에 적절한 때를 결정하기 위한 코드 장치들을 포함하는 메모리 시스템.
  11. 제 6항에 있어서,
    상기 데이터는 논리적 페이지와 연관되고, 상기 제 1 블록은 제 1 물리적 블록인 메모리 시스템.
  12. 제 1항에 있어서,
    상기 제 1 그룹은 그룹 식별자에 의해 식별되고, 상기 그룹 식별자는 상기 제 1 그룹과 연관된 여분 영역에 저장되며, 상기 제 1 그룹이 상기 데이터 세트를 수신하기 위해 이용가능한 때를 결정하기 위한 상기 코드 장치들은 상기 그룹 식별자를 획득하기 위한 코드 장치들을 포함하는 메모리 시스템.
  13. 제 6항에 있어서,
    상기 코드 장치들을 저장하기 위한 메모리; 및
    상기 코드 장치들을 프로세싱하기 위한 프로세서;
    를 더 포함하는 메모리 시스템.
  14. 제 6항에 있어서,
    상기 비휘발성 메모리는 플래시 메모리인 메모리 시스템.
  15. 제 14항에 있어서,
    상기 플래시 메모리는 NAND 플래시 메모리인 메모리 시스템.
  16. 제 6항에 있어서,
    상기 코드 장치들은 소프트웨어 코드 장치들인 메모리 시스템.
  17. 제 6항에 있어서,
    상기 코드 장치들은 펌웨어 코드 장치들인 메모리 시스템.
  18. 비휘발성 메모리에 포함된 메모리 블록으로서,
    제 1 페이지들 세트 및 제 2 페이지들 세트를 포함하는 복수 개의 페이지들;
    상기 제 1 페이지들 세트를 포함하는 제 1 그룹 - 여기서, 상기 제 1 그룹은 상기 제 1 그룹을 식별하는 제 1 그룹 식별자를 구비하고, 상기 제 1 그룹 식별자는 상기 제 1 그룹에 저장됨 -; 및
    상기 제 2 페이지들 세트를 포함하는 제 2 그룹 - 여기서, 상기 제 2 그룹은 상기 제 2 그룹을 식별하는 제 2 그룹 식별자를 구비하고, 상기 제 2 그룹 식별자는 상기 제 2 그룹에 저장됨 -
    를 포함하는 메모리 블록.
  19. 제 18항에 있어서,
    상기 제 1 페이지들 세트에 포함된 페이지들의 순서는 상기 제 1 그룹의 시작에 대해 고정되고, 상기 제 2 페이지들 세트에 포함된 페이지들의 순서는 상기 제 2 그룹의 시작에 대해 고정되는 메모리 블록.
  20. 제 18항에 있어서,
    상기 메모리 블록은 물리적 블록이고, 상기 비휘발성 메모리는 플래시 메모리인 메모리 블록.
  21. 비휘발성 메모리와 연관된 제 1 물리적 블록 내로 데이터를 기록하는 방법으로서,
    상기 제 1 물리적 블록은 복수 개의 물리적 페이지들을 포함하고, 상기 복수 개의 물리적 페이지들은 복수 개의 물리적 그룹들로 그룹지어지며, 상기 복수 개의 물리적 그룹들의 각각의 물리적 그룹은 2 이상의 물리적 페이지들을 포함하며,
    상기 방법은,
    제 1 논리적 페이지와 연관된 제 1 데이터 세트를 식별하는 단계 - 여기서, 상기 제 1 논리적 페이지는 논리적 블록의 제 1 논리적 그룹에 포함된 복수 개의 논리적 페이지들 중 하나임 -;
    상기 복수 개의 물리적 그룹들 중 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하는 단계;
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관됨이 결정된 때, 상기 제 1 물리적 그룹에 포함된 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 단계; 및
    상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능함이 결정된 때, 상기 제 1 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 단계;
    를 포함하는 데이터 기록 방법.
  22. 제 21항에 있어서,
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되지 않음이 결정되는 때, 상기 제 1 물리적 그룹이 이용가능한 때를 결정하는 단계;
    상기 제 1 물리적 그룹이 이용가능함이 결정되는 때, 상기 제 1 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 단계; 및
    상기 제 1 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 단계;
    를 더 포함하는 데이터 기록 방법.
  23. 제 22항에 있어서,
    상기 제 1 논리적 그룹과 연관된 제 2 데이터 세트를 식별하는 단계; 및
    상기 제 1 물리적 그룹과 연관된 제 3 물리적 페이지 내로 상기 제 2 데이터 세트를 기록하는 단계;
    를 더 포함하는 데이터 기록 방법.
  24. 제 23항에 있어서,
    상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 단계 - 여기서, 상기 제 2 데이터 세트는, 상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능함이 결정되는 때, 상기 제 3 물리적 페이지 내로 기록됨 -;
    를 더 포함하는 데이터 기록 방법.
  25. 제 21항에 있어서,
    상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능하지 않음이 결정된 때, 상기 복수 개의 물리적 그룹들에 포함된 제 2 물리적 그룹이 이용가능한 때를 결정하는 단계; 및
    상기 제 2 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 단계;
    를 더 포함하는 데이터 기록 방법.
  26. 제 25항에 있어서,
    상기 제 2 물리적 그룹이 이용가능함이 결정되는 때, 상기 제 2 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 단계;
    를 더 포함하는 데이터 기록 방법.
  27. 제 25항에 있어서,
    상기 제 2 물리적 그룹이 이용가능하지 않음이 결정된 때, 상기 비휘발성 메모리와 연관된 제 2 물리적 블록이 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 단계;
    를 더 포함하는 데이터 기록 방법.
  28. 제 27항에 있어서,
    상기 제 2 물리적 블록이 이용가능함이 결정되는 때, 상기 방법은,
    상기 제 1 물리적 블록에 포함된 상기 복수 개의 물리적 페이지들의 소정 내용들을 상기 제 2 물리적 블록에 포함된 물리적 페이지들 내로 복사하는 단계; 및
    상기 제 2 물리적 블록과 연관된 제 3 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 단계;
    를 더 포함하는 데이터 기록 방법.
  29. 제 28항에 있어서,
    상기 제 1 물리적 블록을 소거하는 단계;
    를 더 포함하는 데이터 기록 방법.
  30. 제 28항에 있어서,
    상기 제 2 물리적 블록과 연관된 상기 제 3 물리적 페이지는 상기 제 2 물리적 블록에 포함된 제 3 물리적 그룹의 일 부분이고, 상기 제 3 물리적 그룹은 2 이상의 물리적 페이지들을 포함하는 데이터 기록 방법.
  31. 제 30항에 있어서,
    상기 제 3 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 단계;
    를 더 포함하는 데이터 기록 방법.
  32. 제 21항에 있어서,
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하는 단계는,
    상기 제 1 물리적 그룹으로부터 그룹 식별자를 획득하는 단계 - 여기서, 상기 그룹 식별자는 상기 제 1 물리적 그룹을 식별하도록 배열됨 -; 및
    상기 그룹 식별자가 상기 제 1 논리적 그룹과 연관되는지 여부를 결정하는 단계;
    를 포함하는 데이터 기록 방법.
  33. 복수 개의 물리적 페이지들을 구비한 제 1 물리적 블록을 포함하는 비휘발성 메모리 - 여기서, 상기 복수 개의 물리적 페이지들은 복수 개의 물리적 그룹들로 그룹지어지고, 상기 복수 개의 물리적 그룹들의 각각의 물리적 그룹은 2 이상의 물리적 페이지들을 포함함 -; 및
    제 1 논리적 페이지와 연관된 제 1 데이터 세트를 식별하도록 배열된 모듈 - 여기서, 제 1 논리적 페이지는 논리적 블록의 제 1 논리적 그룹에 포함된 복수 개의 논리적 페이지들 중 하나이며, 상기 모듈은 부가하여 상기 복수 개의 물리적 그룹들 중 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하도록, 그리고 상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관됨이 결정된 때, 상기 제 1 물리적 그룹에 포함된 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하도록, 그리고 상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능함이 결정된 때, 상기 제 1 데이터 세트를 상기 제 1 물리적 페이지 내로 기록하도록 배치됨 -;
    을 포함하는 메모리 시스템.
  34. 제 33항에 있어서,
    상기 모듈은 부가하여, 상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되지 않음이 결정된 때, 상기 제 1 물리적 그룹이 이용가능한 때를 결정하도록, 그리고 상기 제 1 물리적 그룹이 이용가능함이 결정된 때 상기 제 1 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키도록, 그리고 상기 제 1 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하도록 배치되는 메모리 시스템.
  35. 제 34항에 있어서,
    상기 모듈은 부가하여, 상기 제 1 논리적 그룹과 연관된 제 2 데이터 세트를 식별하도록, 그리고 상기 제 1 물리적 그룹과 연관된 제 3 물리적 페이지 내로 상기 제 2 데이터 세트를 기록하도록 배치되는 메모리 시스템.
  36. 제 35항에 있어서,
    상기 모듈은 부가하여, 상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능한 때를 결정하도록 배치되고, 여기서, 상기 제 2 데이터 세트는, 상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능함이 결정된 때, 상기 제 3 물리적 페이지 내로 기록되는 메모리 시스템.
  37. 제 33항에 있어서,
    상기 모듈은 부가하여, 상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능하지 않음이 결정되는 때, 상기 복수 개의 물리적 그룹들에 포함된 제 2 물리적 그룹이 이용가능한 때를 결정하도록, 그리고 상기 제 2 물리적 그룹이 이용가능함이 결정된 때, 상기 제 2 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키도록, 그리고 상기 제 2 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하도록 배치되는 메모리 시스템.
  38. 제 37항에 있어서,
    상기 메모리 시스템은 부가하여 제 2 물리적 블록을 포함하고,
    상기 모듈은 부가하여, 상기 제 2 물리적 그룹이 이용가능하지 않음이 결정된 때, 상기 비휘발성 메모리와 연관된 상기 제 2 물리적 블록이 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하도록, 그리고 상기 제 2 물리적 블록이 이용가능함이 결정되는 때, 상기 제 1 물리적 블록에 포함된 상기 복수 개의 물리적 페이지들의 소정의 내용들을 상기 제 2 물리적 블록에 포함된 물리적 페이지들 내로 복사하도록, 그리고 상기 제 2 물리적 블록이 이용가능함이 결정되는 때, 상기 제 2 물리적 블록과 연관된 제 3 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하도록 배치되는 메모리 시스템.
  39. 제 38항에 있어서,
    상기 모듈은 부가하여 상기 제 1 물리적 블록을 소거하도록 배치하는 메모리 시스템.
  40. 제 33항에 있어서,
    상기 모듈은 상기 제 1 물리적 그룹으로부터 그룹 식별자를 획득함으로써, 그리고 상기 그룹 식별자가 상기 제 1 논리적 그룹과 연관되는지 여부를 결정함으로써 상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하도록 배치되고, 여기서, 상기 그룹 식별자는 상기 제 1 물리적 그룹을 식별하도록 배치되는 메모리 시스템.
  41. 제 33항에 있어서,
    상기 비휘발성 메모리는 NAND 플래시 메모리인 메모리 시스템.
  42. 비휘발성 메모리와 연관된 제 1 물리적 블록 내로 데이터를 기록하는 시스템으로서,
    상기 제 1 물리적 블록은 복수 개의 물리적 페이지들을 포함하고, 상기 복수 개의 물리적 페이지들은 복수 개의 물리적 그룹들로 그룹지어지며, 상기 복수 개의 물리적 그룹들의 각각의 물리적 그룹은 2 이상의 물리적 페이지들을 포함하며,
    상기 시스템은,
    제 1 논리적 페이지와 연관된 제 1 데이터 세트를 식별하는 수단 - 여기서, 상기 제 1 논리적 페이지는 논리적 블록의 제 1 논리적 그룹에 포함된 복수 개의 논리적 페이지들 중 하나임 -;
    상기 복수 개의 물리적 그룹들 중 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하는 수단;
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관됨이 결정된 때, 상기 제 1 물리적 그룹에 포함된 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 수단; 및
    상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능함이 결정된 때, 상기 제 1 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 수단;
    을 포함하는 데이터 기록 시스템.
  43. 제 42항에 있어서,
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되지 않음이 결정되는 때, 상기 제 1 물리적 그룹이 이용가능한 때를 결정하는 수단;
    상기 제 1 물리적 그룹이 이용가능함이 결정되는 때, 상기 제 1 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 수단; 및
    상기 제 1 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 수단;
    을 더 포함하는 데이터 기록 시스템.
  44. 제 43항에 있어서,
    상기 제 1 논리적 그룹과 연관된 제 2 데이터 세트를 식별하는 수단;
    상기 제 1 물리적 그룹과 연관된 제 3 물리적 페이지 내로 상기 제 2 데이터 세트를 기록하는 수단;
    상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 수단 - 여기서, 상기 제 2 데이터 세트는, 상기 제 3 물리적 페이지가 상기 제 2 데이터 세트를 수용하기 위해 이용가능함이 결정되는 때, 상기 제 3 물리적 페이지 내로 기록됨 -;
    을 더 포함하는 데이터 기록 시스템.
  45. 제 42항에 있어서,
    상기 제 1 물리적 페이지가 상기 제 1 데이터 세트를 수용하기 위해 이용가능하지 않음이 결정된 때, 상기 복수 개의 물리적 그룹들에 포함된 제 2 물리적 그룹이 이용가능한 때를 결정하는 수단; 및
    상기 제 2 물리적 그룹과 연관된 제 2 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 수단;
    을 더 포함하는 데이터 기록 시스템.
  46. 제 45항에 있어서,
    상기 제 2 물리적 그룹이 이용가능함이 결정되는 때, 상기 제 2 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 수단;
    을 더 포함하는 데이터 기록 시스템.
  47. 제 45항에 있어서,
    상기 제 2 물리적 그룹이 이용가능하지 않음이 결정된 때, 상기 비휘발성 메모리와 연관된 제 2 물리적 블록이 상기 제 1 데이터 세트를 수용하기 위해 이용가능한 때를 결정하는 수단;
    을 더 포함하는 데이터 기록 시스템.
  48. 제 47항에 있어서,
    상기 제 2 물리적 블록이 이용가능함이 결정되는 때, 상기 제 1 물리적 블록에 포함된 상기 복수 개의 물리적 페이지들의 소정 내용들을 상기 제 2 물리적 블록에 포함된 물리적 페이지들 내로 복사하는 수단; 및
    상기 제 2 물리적 블록이 이용가능함이 결정된 때, 상기 제 2 물리적 블록과 연관된 제 3 물리적 페이지 내로 상기 제 1 데이터 세트를 기록하는 수단;
    을 더 포함하는 데이터 기록 시스템.
  49. 제 48항에 있어서,
    상기 제 1 물리적 블록을 소거하는 수단;
    을 더 포함하는 데이터 기록 시스템.
  50. 제 48항에 있어서,
    상기 제 2 물리적 블록과 연관된 상기 제 3 물리적 페이지는 상기 제 2 물리적 블록에 포함된 제 3 물리적 그룹의 일 부분이고, 상기 제 3 물리적 그룹은 2 이상의 물리적 페이지들을 포함하는 데이터 기록 시스템.
  51. 제 50항에 있어서,
    상기 제 3 물리적 그룹을 상기 제 1 논리적 그룹과 연관시키는 수단;
    을 더 포함하는 데이터 기록 시스템.
  52. 제 42항에 있어서,
    상기 제 1 물리적 그룹이 상기 제 1 논리적 그룹과 연관되는 때를 결정하는 상기 수단은,
    상기 제 1 물리적 그룹으로부터 그룹 식별자를 획득하는 수단 - 여기서, 상기 그룹 식별자는 상기 제 1 물리적 그룹을 식별하도록 배열됨 -; 및
    상기 그룹 식별자가 상기 제 1 논리적 그룹과 연관되는지 여부를 결정하는 수단;
    을 포함하는 데이터 기록 시스템.
KR1020057007311A 2002-10-28 2003-09-10 블록 내에서 페이지들을 그룹화하는 방법 및 장치 KR100886520B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/281,855 2002-10-28
US10/281,855 US7254668B1 (en) 2002-10-28 2002-10-28 Method and apparatus for grouping pages within a block
PCT/US2003/028047 WO2004040453A2 (en) 2002-10-28 2003-09-10 Method and apparatus for grouping pages within a block

Publications (2)

Publication Number Publication Date
KR20050070092A true KR20050070092A (ko) 2005-07-05
KR100886520B1 KR100886520B1 (ko) 2009-03-02

Family

ID=32228778

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057007311A KR100886520B1 (ko) 2002-10-28 2003-09-10 블록 내에서 페이지들을 그룹화하는 방법 및 장치

Country Status (10)

Country Link
US (1) US7254668B1 (ko)
EP (1) EP1576478B1 (ko)
JP (1) JP4611024B2 (ko)
KR (1) KR100886520B1 (ko)
CN (1) CN100454273C (ko)
AT (1) ATE466337T1 (ko)
AU (1) AU2003268530A1 (ko)
DE (1) DE60332394D1 (ko)
TW (1) TWI262388B (ko)
WO (1) WO2004040453A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101947286B1 (ko) * 2017-11-29 2019-02-12 울산과학기술원 메모리 컨트롤 장치 및 방법

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
JP4261892B2 (ja) * 2002-12-12 2009-04-30 キヤノン株式会社 データ処理装置および制御方法および記憶媒体
JP4661086B2 (ja) * 2004-05-24 2011-03-30 パナソニック株式会社 不揮発性記憶装置および不揮発性メモリの消去方法と書込み方法
JP3942612B2 (ja) * 2004-09-10 2007-07-11 東京エレクトロンデバイス株式会社 記憶装置、メモリ管理方法及びプログラム
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
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
WO2007019155A1 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Reclaiming data storage capacity in flash memory systems
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
ATE493707T1 (de) * 2005-08-03 2011-01-15 Sandisk Corp Nichtflüchtiger speicher mit blockverwaltung
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
KR100806343B1 (ko) * 2006-10-19 2008-02-27 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법
US8073648B2 (en) * 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
KR101433860B1 (ko) * 2007-10-10 2014-08-26 삼성전자주식회사 파일을 효율적으로 관리할 수 있는 정보 처리 장치
US7613045B2 (en) * 2007-11-26 2009-11-03 Sandisk Il, Ltd. Operation sequence and commands for measuring threshold voltage distribution in memory
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
TWI485563B (zh) * 2008-09-17 2015-05-21 Silicon Motion Inc 快閃記憶裝置及其運作方法
TWI394161B (zh) * 2008-12-15 2013-04-21 Silicon Motion Inc 快閃記憶體裝置及其資料管理方法
US9201824B2 (en) * 2009-01-22 2015-12-01 Intel Deutschland Gmbh Method and apparatus for adaptive data chunk transfer
KR101586047B1 (ko) 2009-03-25 2016-01-18 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
EP2417524A4 (en) * 2009-04-10 2013-03-06 Kaminario Tehnologies Ltd MASS STORAGE SYSTEM USING AN AUXILIARY SEMICONDUCTOR STORAGE SUBSYSTEM
TWI453747B (zh) * 2009-09-02 2014-09-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
TWI450271B (zh) * 2009-09-02 2014-08-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
TWI451439B (zh) * 2010-12-10 2014-09-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
TWI553654B (zh) * 2010-12-16 2016-10-11 群聯電子股份有限公司 資料管理方法、記憶體控制器與記憶體儲存裝置
US10089017B2 (en) * 2011-07-20 2018-10-02 Futurewei Technologies, Inc. Method and apparatus for SSD storage access
CN104536906B (zh) * 2011-08-02 2017-10-10 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
KR20130043445A (ko) * 2011-10-20 2013-04-30 삼성전자주식회사 인터페이스 관리 방법 및 이를 이용한 저장 장치에서의 매핑 처리 방법
TWI486766B (zh) 2012-05-11 2015-06-01 Phison Electronics Corp 資料處理方法、記憶體控制器與記憶體儲存裝置
US9116792B2 (en) * 2012-05-18 2015-08-25 Silicon Motion, Inc. Data storage device and method for flash block management
CN103425594B (zh) * 2012-05-23 2016-09-14 群联电子股份有限公司 数据处理方法、存储器控制器与存储器存储装置
US9076545B2 (en) 2013-01-17 2015-07-07 Sandisk Tecnologies Inc. Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9927996B2 (en) 2014-02-05 2018-03-27 Hitachi, Ltd. Information processing device
US10616144B2 (en) 2015-03-30 2020-04-07 Cavium, Llc Packet processing system, method and device having reduced static power consumption
US9747226B2 (en) * 2015-03-30 2017-08-29 Cavium, Inc. Packet processing system, method and device to optimize packet buffer space
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
CN106293521B (zh) * 2016-08-02 2019-04-12 华中科技大学 一种映射粒度自适应的闪存转换层管理方法
US10785301B2 (en) * 2017-08-03 2020-09-22 Toshiba Memory Corporation NVM express over fabrics
US11294580B2 (en) * 2017-12-22 2022-04-05 Samsung Electronics Co., Ltd. Nonvolatile memory device
KR102469539B1 (ko) 2017-12-22 2022-11-22 삼성전자주식회사 비휘발성 메모리 장치, 비휘발성 메모리 장치의 동작 방법 및 저장 장치

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5095420A (en) 1988-11-21 1992-03-10 International Business Machines Method and system for performing virtual address range mapping in a virtual storage data processing system
DE69033262T2 (de) 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
EP0508577A1 (en) 1991-03-13 1992-10-14 International Business Machines Corporation Address translation mechanism
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
CA2285096C (en) 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
JP3641280B2 (ja) 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP3078946B2 (ja) * 1993-03-11 2000-08-21 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
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
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
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
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
GB9801373D0 (en) * 1998-01-22 1998-03-18 Memory Corp Plc Memory system
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
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
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
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
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101947286B1 (ko) * 2017-11-29 2019-02-12 울산과학기술원 메모리 컨트롤 장치 및 방법

Also Published As

Publication number Publication date
US7254668B1 (en) 2007-08-07
TWI262388B (en) 2006-09-21
KR100886520B1 (ko) 2009-03-02
EP1576478B1 (en) 2010-04-28
TW200413916A (en) 2004-08-01
EP1576478A2 (en) 2005-09-21
WO2004040453A3 (en) 2006-02-16
WO2004040453A2 (en) 2004-05-13
JP4611024B2 (ja) 2011-01-12
DE60332394D1 (de) 2010-06-10
AU2003268530A1 (en) 2004-05-25
ATE466337T1 (de) 2010-05-15
CN1795437A (zh) 2006-06-28
AU2003268530A8 (en) 2004-05-25
JP2006515086A (ja) 2006-05-18
CN100454273C (zh) 2009-01-21

Similar Documents

Publication Publication Date Title
KR100886520B1 (ko) 블록 내에서 페이지들을 그룹화하는 방법 및 장치
KR100923814B1 (ko) 논리적 블록을 분할하기 위한 방법 및 장치
US7702880B2 (en) Hybrid mapping implementation within a non-volatile memory system
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
US7287118B2 (en) Maintaining an average erase count in a non-volatile storage system
US7526599B2 (en) Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
JP4456486B2 (ja) 不揮発性記憶システムにおける摩耗一様化
US7096313B1 (en) Tracking the least frequently erased blocks in non-volatile memory systems
US6973531B1 (en) Tracking the most frequently erased blocks in non-volatile memory systems
KR100910680B1 (ko) 소거 카운트 블록을 유지하는 방법 및 장치
US20130254465A1 (en) Solid state memory formatting
JP2010267290A (ja) 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置

Legal Events

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

Payment date: 20130201

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140204

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee