KR20080025178A - 저장 장치에서 파티션들을 관리하기 위한 방법 및 시스템 - Google Patents

저장 장치에서 파티션들을 관리하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20080025178A
KR20080025178A KR1020087001992A KR20087001992A KR20080025178A KR 20080025178 A KR20080025178 A KR 20080025178A KR 1020087001992 A KR1020087001992 A KR 1020087001992A KR 20087001992 A KR20087001992 A KR 20087001992A KR 20080025178 A KR20080025178 A KR 20080025178A
Authority
KR
South Korea
Prior art keywords
memory
partition
area
mass storage
data
Prior art date
Application number
KR1020087001992A
Other languages
English (en)
Inventor
로버트 씨. 창
마이클 홀트즈만
파르시드 사벳-샤흐이
폴 맥어보이
바흐만 콰와미
Original Assignee
쌘디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20080025178A publication Critical patent/KR20080025178A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

대량 저장 메모리 시스템 및 메모리 파티션 공간을 재할당하기 위한 방법은 제공된다. 저장 시스템은 호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 가진 메모리 제어기; 시스템 영역 및 데이터 영역을 가진 제 1 메모리 파티션; 및 시스템 영역 및 데이터 영역을 가진 제 2 메모리 파티션을 포함하고, 메모리 제어기는 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대한 버츄얼 블록 어드레스를 사용함으로써, 풀(full) 되거나 임계 값에 도달된 제 1 메모리 파티션에 제 2 메모리 파티션으로부터의 메모리 공간을 재할당한다.

Description

저장 장치에서 파티션들을 관리하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR MANAGING PARTITIONS IN A STORAGE DEVICE}
본 발명은 일반적으로 메모리 저장 장치들, 및 특히 저장 장치의 파티션들을 관리하는 것에 관한 것이다.
종래 컴퓨터 시스템들은 통상적으로 일부 기능 구성요소들을 포함한다. 이들 구성요소들은 중앙 처리 유니트(CPU), 메인 메모리, 입력/출력("I/O") 장치들, 및 대량 저장 장치를 포함한다. 종래 시스템들에서, 메인 메모리는 시스템 버스 또는 로컬 메모리 버스를 통하여 CPU에 결합된다. 메인 메모리는 실행 시간에 메인 메모리에 저장된 데이터 및/또는 프로그램 정보에 대한 CPU 액세스를 제공하기 위하여 사용된다. 통상적으로, 메인 메모리는 랜덤 액세스 메모리(RAM) 회로들로 구성된다. CPU 및 메인 메모리를 가진 컴퓨터 시스템은 종종 호스트 시스템이라 불린다.
대량 저장장치는 통상적으로 데이터를 유지하기 위하여 사용된다. 일반적으로, 대량 저장 장치에 저장된 프로그램은 CPU에 의해 실행되기 전에 메인 메모리에 카피된다. 공통 대량 저장 장치들은 플로피 디스크들, 하드 디스크들, 광학 디스크들 및 테이프 드라이브들을 포함한다. 부가적으로, 플래시 메모리는 호스트 시 스템을 위한 비휘발성 저장장치를 제공하기 위하여 사용될 수 있다.
호스트 시스템은 하나의 인터페이스를 통하여 플래시 메모리(또한 이 명세서에서 상호 교환되게 사용되는 "플래시 장치", "플래시" 또는 "플래시 카드"라 불린다)와 인터페이스한다. 플래시 메모리는 통상적으로 정보를 저장하기 위한 비휘발성 메모리 셀 어레이들을 포함한다. 플래시 메모리 시스템들은 가장 일반적으로 퍼스널 컴퓨터, 카메라 또는 등등 같은 다양한 호스트들과 탈착 가능하게 접속되는 메모리 카드 또는 플래시 드라이브 형태로 제공되지만, 상기 호스트 시스템들 내에 내장될 수 있다.
플래시 메모리 제어기는 통상적으로 메모리 어레이의 동작들을 제어한다. 메모리 제어기는 마이크로프로세서, 몇몇 비휘발성 판독 전용 메모리("ROM"), 휘발성 랜덤 액세스 메모리("RAM") 및 하나 또는 그 이상의 특정 회로들, 예를 들어 메모리 제어기를 통해 통과할 때 데이터로부터 ECC를 계산하는 에러 수정 코드 회로("ECC")를 포함한다.
상업용 플래시 메모리 시스템들의 초기(early) 세대에서, 메모리 셀들의 직사각형 어레이는 표준 디스크 드라이브 섹터의 데이터 양, 즉 512 바이트들이 각각 저장된 다수의 셀들의 그룹들로 분할된다. 16 바이트들 같은 부가적인 데이터 양은 또한 에러 수정 코드(ECC) 및 사용자 데이터에 관련된 다른 오버헤드 데이터를 저장하기 위하여 각각의 그룹 및/또는 저장되는 메모리 셀 그룹에 포함된다. 각각의 상기 그룹에서 메모리 셀들은 함께 소거할 수 있는 최소 수의 메모리 셀들이다. 즉, 소거 단위는 효과적으로 포함된 하나의 데이터 섹터 및 임의의 오버헤드 데이 터를 저장하는 메모리 셀들의 수이다. 이런 형태의 메모리 시스템의 예들은 미국특허들 5,602,987 및 6,426,893에 기술된다. 메모리 셀들이 데이터와 함께 재프로그래밍하기 전에 소거될 필요가 있다는 것은 플래시 메모리의 특성이다.
논리 인터페이스를 통하여 플래시 메모리에 데이터를 기입할 때, 호스트는 통상적으로 섹터들, 클러스터들 또는 메모리 시스템의 연속적인 버츄얼(virtual) 어드레스 공간내 데이터의 다른 유니트들에 유일한 논리 어드레스들을 할당한다. 호스트는 통상적으로 파일 시스템을 유지하고 논리 클러스터들에 파일 데이터를 할당하고, 여기서 클러스터 크기는 통상적으로 고정된다. 플래시 장치는 복수의(plural) 논리 섹터들로 분할되고 호스트는 다수의 논리 섹터들을 포함하는 클러스터들 내에 공간을 할당한다. 클러스터는 논리 어드레스들의 서브 분할부이고 클러스터 맵은 파일 할당 테이블("FAT")로서 표시된다. FAT는 일반적으로 저장 장치 자체에 저장된다.
디스크 동작 시스템(DOS)과 같이, 호스트는 메모리 시스템의 논리 어드레스 공간내 어드레스들에 데이터를 기입하고 상기 어드레스들로부터 데이터를 판독한다. 메모리 시스템내 제어기는 호스트로부터 수신된 논리 어드레스들을 메모리 어레이내 물리적 어드레스들로 전환하고, 여기서 데이터는 실제로 저장되고, 그 다음 이들 어드레스 전환 트랙을 유지한다.
통상적으로, 메모리 장치(예를 들어, 플래시 메모리)는 호스트 시스템에 의해 분할된다. 일반적으로 두 개의 파티션들은 하나의 드라이브를 공유하고 각각의 파티션 크기는 호스트 시스템에 의해 설정된다. 만약 하나의 파티션이 풀(full)이 고 다른 파티션이 임의의 주어진 시간에 많은 공간이 남겨지면, 각각의 파티션에 할당된 공간 양을 재할당하는 것은 유용하다. 종래 시스템들에서, 호스트는 드라이브를 재포맷함으로써 이 기능을 수행한다. 이런 처리는 재포맷하기 전 드라이브로부터 모든 데이터를 카피하고 그 다음 각각의 파티션에 대한 공간을 재할당하는 것을 포함한다. 이런 과정은 지루하고 시간 소비적이며, 따라서 바람직하지 않다.
그러므로, 메모리 저장 공간의 최적 사용을 위하여 필수적으로 파티션들을 관리하는 방법 및 시스템이 필요하다.
본 발명의 일측면에서, 대량 저장 메모리 시스템은 제공된다. 시스템은 재프로그램 가능 비휘발성 메모리 셀들을 포함하고, 상기 메모리 셀들은 함께 소거할 수 있고 데이터를 저장하기 위한 메모리 셀들의 행들을 정의하기 위한 다수의 직렬 문자열들에 함께 결합되는 다수의 메모리 셀들의 블록들에 배열되고, 여기서 메모리 셀들은 적어도 두 개의 메모리 파티션들로 분할되고 각각의 메모리 파티션은 시스템 영역 및 데이터 영역을 가지며; 및 호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 포함하는 제어기를 포함하고, 상기 제어기는 맵핑 테이블을 사용함으로써 사용되지 않은 저장 공간을 가진 제 2 메모리 파티션으로부터 임계 값이 풀이거나 도달된 제 1 메모리 파티션에 메모리 공간을 재할당하고, 맵핑 테이블은 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대한 버츄얼 블록 어드레스, 및 액츄얼(actual) 논리 블록 어드레스에 버츄얼(virtual) 블록 어드레스를 맵핑하는 리얼(real) 논리 블록 어드레스를 사용한다.
본 발명의 다른 측면에서, 대량 저장 메모리 시스템은 호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 가진 제어기; 시스템 영역 및 데이터 영역을 가진 제 1 메모리 파티션; 및 시스템 영역 및 데이터 영역을 가진 제 2 메모리 파티션을 포함하고, 상기 제어기는 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대한 버츄얼 블록 어드레스를 사용함으로써 풀이거나 임계 값에 도달된 제 1 메모리 파티션에 사용되지 않은 저장 공간을 가진 제 2 메모리 파티션으로부터의 메모리 공간을 재할당한다.
다른 측면에서, 시스템 영역 및 데이터 영역을 가진 제 1 메모리 파티션, 및 시스템 영역 및 데이터 영역을 가진 제 2 메모리 파티션 사이의 데이터 저장 공간을 동적으로 재할당하기 위한 방법이 제공된다. 상기 방법은 제 1 메모리 파티션이 풀이고 및/또는 임계 값에 도달되었는지를 결정하는 단계; 제 2 메모리 파티션이 풀이고 및/또는 임계 값에 도달된 제 1 메모리 파티션에 할당될 수 있는 빈 저장 공간을 가졌는지를 결정하는 단계; 및 제 1 메모리 파티션에 제 2 메모리 파티션으로부터의 일부 빈 공간을 할당하는 단계를 포함하고, 메모리 제어기는 빈 공간을 할당한다.
이런 짧은 요약은 본 발명의 성질이 빠르게 이해될 수 있도록 제공되었다. 본 발명의 보다 완전한 이해는 첨부된 도면들과 관련하여 바람직한 실시예들의 다음 상세한 설명을 참조하여 얻어질 수 있다.
본 발명의 상기 특징들 및 다른 특징들은 바람직한 실시예의 도면들을 참조하여 지금 기술된다. 도면들에서, 동일한 구성요소들은 동일한 참조 번호들을 가진다. 도시된 실시예는 도시를 위한 것이고 본 발명을 제한하지 않는다. 도면들은 다음 도면들을 포함한다.
도 1A는 플래시 장치를 사용하는 호스트 시스템의 블록도를 도시한다.
도 1B는 도 1A의 호스트 시스템의 아키텍쳐를 도시한다.
도 1C는 본 발명의 일측면에 따라 사용된 플래시 장치의 메모리 제어기의 블록도를 도시한다.
도 1D는 플래시 메모리 시스템에 대한 예시적인 물리적 메모리 구성을 도시한다.
도 1E는 도 1D의 물리적 메모리 부분의 확대도를 도시한다.
도 1F는 호스트 및 재프로그래밍 가능 메모리 시스템 사이의 통상적인 논리 어드레스 인터페이스를 도시한다.
도 2A는 저장 장치에서 두 개의 메모리 파티션들을 도시하는 블록도를 도시한다.
도 2B는 도 2A에 도시된 하나의 파티션에 대한 시스템 영역 레이아웃에 대한 블록도를 도시한다.
도 2C는 본 발명의 일측면에 따라, 재할당된 메모리 파티션들의 호스트 시스템 도면을 도시한다.
도 2D는 본 발명의 일측면에 따른 재할당된 메모리 파티션들의 액츄얼 레이아웃을 도시한다.
도 3은 본 발명의 일측면에 따른 대량 저장 장치에서 메모리 공간을 재할당하기 위한 전체 처리 흐름도를 도시한다.
도 4A-F는 본 발명의 일측면에 따른 메모리 파티션 재할당 예를 도시한다.
바람직한 실시예의 이해를 용이하게 하기 위하여, 호스트 시스템/플래시 장치의 일반적인 아키텍쳐 및 동작은 기술될 것이다. 바람직한 실시예의 특정 아키텍쳐 및 동작은 일반적인 아키텍쳐를 참조하여 기술될 것이다.
호스트 시스템:
도 1A는 본 발명을 사용할 수 있는 범용 컴퓨터 시스템(호스트 시스템)(100)을 도시한다. 시스템(100)의 구성요소들은 컴퓨터(160)와, 마우스(170), 키보드(165), 모니터(120) 및 프린터(125) 같은 다양한 입력/출력("I/O") 장치들을 포함한다.
도 1B는 컴퓨터 시스템(100)의 요약 표현을 도시한다. 구성요소(130)는 사용자가 컴퓨터 시스템(100)과 상호작용하게 하는 마우스 및 키보드 같은 다수의 입력 장치들을 나타내기 위한 것이다. 유사하게, 출력(135)은 예를 들어 모니터(120) 및 프린터(125) 같은 하나 또는 그 이상의 출력 장치들을 나타낸다.
컴퓨터 시스템(100)은 시스템 버스(155)에 접속된 중앙 처리 유니트("CPU")(또는 마이크로프로세서)(175)를 포함한다. 메인 메모리(145)(예를 들어, 랜덤 액세스 메인 메모리("RAM"))는 또한 시스템 버스(155)에 결합되고 메모리 저장장치에 대한 액세스를 CPU(175)에게 제공한다. 프로그램 명령들을 실행할 때, CPU(175)는 RAM(145)의 처리 단계들을 저장하고 RAM(145)에서 저장된 처리 단계를 실행한다.
판독 전용 메모리("ROM")(도시되지 않음)는 시작 명령 시퀀스들 또는 기본 입력/출력 동작 시스템(BIOS) 시퀀스 같은 불변 명령 시퀀스들을 저장하기 위하여 제공된다.
대량 저장 장치(150)는 컴퓨터 시스템(100)이 영구적으로 데이터를 저장하게 한다. 대량 저장 장치(150)는 플래시 메모리 장치, 하드 디스크 또는 다른 타입의 미디어 저장 장치일 수 있다. 하기 본 발명의 적응성 측면들의 설명은 플래시 메모리 장치를 바탕으로 하지만 다른 타입들의 메모리 장치들에 응용할 수 있다. 대량 저장 장치(150)는 또한 플래시 장치(150)라 불린다.
상업적으로 이용 가능한 다른 플래시 장치들(또는 플래시 메모리 카드들), 예를 들어 컴팩트플래시(CF), 멀티미디어카드(MMC), 보안 디지털(SD), 미니SD, 메모리 스틱, 스마트미디어 및 트랜스플래시 카드들이 현재 많이 있다. 비록 각각의 이들 카드들이 표준화된 사양들에 따라 유일한 기계적 및/또는 전기적 인터페이스를 가지지만, 각각에 포함된 플래시 메모리는 매우 유사하다. 이들 카드들은 본 출원의 양수인인 샌디스크 코포레이션에서 모두 판매된다. 샌디스크는 또한 호스트의 USB 리셉터클에 플러깅함으로써 호스트와 접속하기 위하여 유니버셜 시리얼 버스(USB) 플러그를 가진 작은 패키지들의 휴대용 메모리 시스템들인 Cruzer 상표 하의 일련의 플래시 드라이브들을 제공한다. 각각의 이들 메모리 카드들 및 플래시 드라이브들은 호스트와 인터페이스하고 그들 내의 플래시 메모리의 동작을 제어하는 제어기들을 포함한다.
상기 식별된 비휘발성 메모리 카드들 및 플래시 드라이브들은 512 메가바이트들(MB), 1기가바이트(GB), 2GB 및 4GB의 데이터 저장 용량을 가지고 상업적으로 판매되고, 더 높은 용량을 가질 수 있다.
상기 메모리 카드들 및 플래시 드라이브들을 사용하는 호스트 시스템들은 많고 가변된다. 상기 호스트 시스템들은 퍼스널 컴퓨터들(PCs), 랩톱 및 다른 휴대용 컴퓨터들, 셀룰러 전화들, 퍼스널 디지털 어시스탄트들(PDAs), 디지털 스틸 카메라들, 디지털 무비 카메라들 및 휴대용 오디오 플레이어들을 포함한다. 통상적으로 호스트는 메모리 카드가 플러그되는 하나 또는 그 이상의 형태의 메모리 카드들 또는 플래시 드라이브들에 대한 빌트인 리셉터클들을 포함하지만 몇몇은 어댑터들을 요구한다.
메모리 셀 어레이들의 NAND 아키텍쳐는 비록 NOR 같은 다른 아키텍쳐들이 대신 사용될 수 있지만 현재 바람직하다. NAND 플래시 메모리들 및 메모리 시스템의 일부로서 상기 플래시 메모리들의 동작의 예들은 미국특허 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,771,536 및 6,781,877 및 미국특허출원 공개번호 2003/0147278이 참조될 수 있다.
플래시 장치(150)는 메모리 제어기 모듈("메모리 시스템 제어기" 또는 "메모리 제어기" 또는 "제어기"라 불림) 및 고형(solid-state) 메모리 모듈들을 포함한 다. 도 1C는 제어기 모듈(150A)의 내부 아키텍쳐의 블록도를 도시한다. 제어기(150A)는 논리 인터페이스 또는 다른 주변 버스(도시되지 않음) 또는 시스템 버스(155)를 통하여 호스트 시스템(100)과 인터페이스한다. 제어기 모듈(150A)은 인터페이스 논리(150E)를 통하여 다양한 다른 구성요소들과 인터페이스하는 마이크로제어기(150C)를 포함한다. 메모리(150D)는 플래시 장치(150)의 동작을 제어하기 위하여 마이크로제어기(150C)에 의해 사용된 펌웨어 및 소프트웨어 명령들을 저장한다. 메모리(150D)는 휘발성 재프로그램 가능 랜덤 액세스 메모리("RAM"), 재프로그램 가능하지 않은 비휘발성 메모리("ROM"), 한번 프로그램 가능 메모리 또는 재프로그램 가능 플래시 전기 소거 가능 및 프로그램 가능 판독 전용 메모리("EEPROM")일 수 있다.
호스트 인터페이스(150G)는 호스트 시스템(100)과 인터페이스하고, 플래시 인터페이스(150F)는 메모리 모듈들(150B)과 인터페이스한다.
도 1D는 하기에 추가 설명들의 예로서 사용된 플래시 메모리 셀 어레이(150B)의 구성을 개념적으로 도시한다. 메모리 셀들의 4개의 평면들 또는 서브 어레이들(131-134)은 단일 집적 메모리 셀 칩, 두 개의 칩들(각각의 칩상에 두 개의 평면들) 또는 4개의 독립된 칩들상에 있을 수 있다. 특정 배열은 하기 논의에 중요하지 않다. 물론, 1,2,8,16 또는 그 이상 같은 다른 수의 평면들은 시스템에 존재할 수 있다. 평면들은 각각의 평면들(131-134)에 배치된 블록들(137,138,139 및 140A) 같은 직사각형들에 의해 도 1D에 도시된 메모리 셀들의 블록들로 개별적으로 분할된다. 각각의 평면에 12 또는 수백의 블록들이 있을 수 있다.
메모리 셀들의 블록은 소거 단위이고, 물리적으로 함께 소거할 수 있는 가장 작은 수의 메모리 셀들이다. 증가된 병렬로 인해, 블록들은 보다 큰 메타블록 단위들로 동작된다. 각각의 평면의 하나의 블록은 메타블록을 형성하기 위하여 논리적으로 함께 링크된다. 4개의 블록들(137-140A)은 하나의 메타블록(141)을 형성하기 위하여 도시된다. 메타블록내 셀들 모두는 통상적으로 함께 소거된다. 메타블록을 형성하기 위하여 사용된 블록들은 블록들(145-148)로 형성된 제 2 메타블록(143)에 도시된 바와 같이 각각의 평면들내 동일한 상대적 위치들로 제한될 필요가 없다.
비록 높은 시스템 성능을 위하여 모든 평면들에 걸쳐 메타블록들을 확장하는 것이 일반적으로 바람직하지만, 메모리 시스템은 다른 평면들에서 임의의 또는 모두 1, 2 또는 3개의 블록들의 메타블록들을 동적으로 형성하기 위한 능력으로 동작될 수 있다. 이것은 메타블록의 크기가 하나의 프로그래밍 동작시 저장을 위하여 이용 가능한 데이터 양과 매우 밀접하게 매칭되게 한다.
개별 블록들은 차례로 도 1E에 도시된 바와 같이 동작 목적들을 위하여 메모리 셀들의 페이지들로 분할된다. 예를 들어 블록들(131-134) 각각의 메모리 셀들은 각각 8개의 페이지들(P0-P7)로 분할된다. 대안적으로, 각각의 블록내에 16,32 또는 그 이상의 메모리 셀들의 페이지들이 있을 수 있다. 상기 페이지는 한번에 프로그램되는 최소 데이터 량을 포함하는 블록내에서 데이터 프로그래밍 및 판독 단위이다.
NAND 아키텍쳐에서, 하나의 페이지는 블록내 워드 라인을 따라 메모리 셀들 로 형성된다. 그러나, 메모리 시스템 동작 병렬성을 증가시키기 위하여, 두 개 또는 그 이상의 블록들내의 페이지들은 논리적으로 메타페이지들에 링크될 수 있다. 메타페이지(151)는 도 1E에 도시되고; 4개의 블록들(131-134) 각각으로부터 하나의 물리적 페이지로 형성된다. 메타페이지(151)는 예를 들어 4개의 블록들 각각에 페이지(P2)를 포함하지만 메타페이지의 페이지들은 각각의 블록들내에 동일한 상대적 위치를 필수적으로 가질 필요가 없다.
도 1F는 호스트 및 대량 메모리 시스템 사이의 논리적 인터페이스의 사용을 도시한다. 호스트는 호스트에 의해 실행되는 애플리케이션 소프트웨어 또는 펌웨어 프로그램들에 의해 생성되거나 사용되는 데이터 파일들을 처리한다. 워드 처리 데이터 파일은 하나의 예이고 컴퓨터 보조 디자인(CAD) 소프트웨어의 도면 파일은 PC들, 랩톱 컴퓨터들 및 유사한 것들 같은 일반적인 컴퓨터 호스트에서 주로 발견되는 다른 것이다. PDF 포맷의 도큐먼트는 상기 파일이다. 스틸 디지털 비디오 카메라는 메모리 카드상에 저장된 각각의 픽쳐(picture)에 대한 데이터 파일을 생성한다. 셀룰러 전화는 전화 디렉토리 같은 내부 메모리 카드상 파일들로부터의 데이터를 사용한다. PDA는 어드레스 파일, 캘린더 파일, 및 등등 같은 여러가지 다른 파일들을 사용한다. 임의의 상기 애플리케이션에서, 메모리 카드는 호스트를 동작시키는 소프트웨어를 포함할 수 있다.
연속적인 논리 어드레스 공간(161)은 메모리 시스템에 저장될 수 있는 모든 데이터에 어드레스들을 제공하기에 충분히 크다. 호스트 어드레스 공간은 통상적으로 데이터 클러스터들의 증가분들로 분할된다. 각각의 클러스터는 다수의 데이 터 섹터들을 포함하기 위하여 주어진 호스트 시스템에 설계될 수 있고, 대략 4 및 64 섹터들은 일반적이다. 표준 섹터는 512 바이트의 데이터를 포함한다.
3개의 데이터 파일들 1, 2 및 3은 생성된 도 1F의 실시예에 도시된다. 호스트 시스템에서 운용하는 애플리케이션 프로그램은 데이터의 순서 세트로서 각각의 파일을 생성하고 유일한 이름 또는 다른 참조에 의해 이를 구별한다. 다른 파일들에 미리 할당되지 않은 충분히 이용할 수 있는 논리 어드레스 공간은 도 1에서 호스트에 의해 할당된다. 파일 1은 이용할 수 있는 논리 어드레스들의 연속적인 범위가 할당되는 것으로 도시된다. 어드레스들의 범위들은 호스트가 데이터에 논리 어드레스들을 할당하는 시간에 이들 어드레스들이 사용되지 않지만 데이터를 저장하기 위하여 피해지는 호스트 동작 소프트웨어를 위한 특정 범위 같은 특정 목적들을 위하여 일반적으로 할당된다.
파일 2가 호스트에 의해 추후 생성될 때, 호스트는 도 1F에 도시된 바와 같이 논리 어드레스 공간(161) 내에 두 개의 다른 범위의 연속적인 어드레스들을 유사하게 할당한다. 파일은 연속적인 논리 어드레스들이 할당되지 않고 오히려 다른 파일들에 이미 할당된 어드레스 범위들 사이에서 어드레스들이 분할된다. 이 예는 호스트에 의해 생성된 다른 파일 3에 파일들 1 및 2에 이전에 할당되지 않은 호스트 어드레스 공간의 다른 부분들 및 다른 데이터가 할당되는 것을 나타낸다.
호스트는 호스트가 다양한 호스트 파일들에 할당하는 논리 어드레스들이 유지되는 파일 할당 테이블(FAT)을 유지함으로써 메모리 논리 어드레스 공간의 트랙을 유지한다. FAT 테이블은 통상적으로 비휘발성 메모리뿐 아니라 호스트 메모리 에 저장되고, 새로운 파일들이 저장되고, 다른 파일들이 삭제되고, 파일들이 변형되고 및 등등일 때 호스트에 의해 빈번히 업데이트된다. 호스트 파일이 삭제될 때, 예를 들어, 호스트는 다른 데이터 파일들에 이용하기 위하여 지금 사용할 수 있는 것을 나타내기 위하여 FAT 테이블을 업데이트함으로써 삭제된 파일에 이전에 할당된 논리 어드레스들을 할당 해제한다.
호스트는 메모리 시스템 제어기가 파일들을 저장하기 위하여 선택한 물리적 위치들에 관여하지 않는다. 통상적인 호스트는 다양한 파일들에 할당된 논리 어드레스 공간 및 논리 어드레스들만을 안다. 다른 한편, 메모리 시스템은 통상적인 호스트/카드 인터페이스를 통해 데이터가 기입된 논리 어드레스 공간의 부분들만을 알지만 특정 호스트 파일들에 할당된 논리 어드레스들, 심지어 호스트 파일들의 수를 알지 못한다. 메모리 시스템 제어기(150A)는 데이터의 저장 또는 검색을 위하여 호스트에 의해 제공된 논리 어드레스들을 호스트 데이터가 저장된 플래시 메모리 셀내의 유일한(unique) 물리적 어드레스들로 전환한다. 블록(163)은 메모리 시스템 제어기(150A)에 의해 유지된 이들 논리 대 물리 어드레스 전환들의 작업 테이블을 나타낸다.
메모리 시스템 제어기(150A)는 높은 레벨에서 시스템의 성능을 유지하는 방식으로 메모리 어레이(165)의 블록들 및 메타블록들 내에 데이터 파일들을 저장하기 위하여 프로그램된다. 4개의 평면들 또는 서브 어레이들은 이런 도시에 사용된다. 데이터는 바람직하게 시스템이 전체 메타 블록을 거쳐 각각의 평면들로부터 블록으로 형성되게 하는 최대 병렬도로 프로그램되고 판독된다. 적어도 하나의 메 타블록(167)은 일반적으로 메모리 제어기에 의해 사용된 동작 펌웨어 및 데이터를 저장하기 위한 예비 블록으로서 할당된다. 다른 메타블록(169), 또는 다중 메타블록들은 호스트 동작 소프트웨어, 호스트 FAT 테이블 및 등등의 저장을 위하여 할당될 수 있다. 대부분의 물리적 저장 공간은 데이터 파일들의 저장을 위하여 남아있는다.
메모리 시스템 제어기(150A)는 수신된 데이터가 다양한 파일 오브젝트들 사이에서 호스트에 의해 할당되는 방법을 알지 못한다. 모든 메모리 제어기(150A)는 통상적으로 특정 논리 어드레스들에 호스트에 의해 기입된 데이터가 제어기의 논리 대 물리 어드레스 테이블(163)에 의해 유지되는 대응 물리적 어드레스에 저장되는 것을 호스트와의 상호작용으로부터 안다.
통상적인 메모리 시스템에서, 저장 용량의 몇몇 추가 블록들은 제공되고 어드레스 공간(161) 내에 어느 정도의 데이터(the amount of data)를 저장하기 위하여 필요하다. 하나 또는 그 이상의 이들 추가 블록들은 메모리의 수명 동안 결함이 발생할 수 있는 다른 블록들을 대체하기 위한 리던던트(redundant) 블록들로서 제공될 수 있다. 개별 메타블록들내에 포함된 블록들의 논리 그룹화는 일반적으로 메타블록에 본래 할당된 결함 블록에 대한 리던던트 블록의 대체를 포함하는 다양한 이유들로 인해 변화될 수 있다. 메타블록(171) 같은 하나 또는 그 이상의 부가적인 블록들은 소거된 블록 풀에 유지된다.
호스트가 메모리 시스템에 데이터를 기입할 때, 제어기(150A)는 호스트에 의해 할당된 논리 어드레스들을 소거된 블록 풀에서 메타블록내 물리적 어드레스들로 전환한다. 논리 어드레스 공간(161)내에 데이터를 저장하기 위하여 사용되지 않은 다른 메타블록들은 소거되고 추후 데이터 기입 동작 동안 사용하기 위하여 소거된 풀 블록들로서 설계된다.
메모리 파티션들 :
도 2A는 메모리 저장 장치(150)가 통상적으로 분할되는 방법의 예를 도시한다. 저장 장치(150)는 두 개의 파티션들, 즉 파티션 1 및 파티션 2를 포함한다. 파티션 1은 시스템 영역(201) 및 데이터 영역(202)을 포함한다. 파티션 2는 자신의 시스템 영역(203) 및 데이터 영역(204)을 가진다. 비록 단지 두 개의 파티션들이 도 2A에 도시되고 하기 재할당 기술들이 이 실시예를 바탕으로 하지만, 본 발명의 적용 측면들은 임의의 특정 수의 메모리 파티션들로 제한되지 않는다.
도 2B는 파티션 2와 유사한 파티션 1에 대한 블록도를 도시한다. 도 2B에 도시된 바와 같이, 시스템 영역(201)은 다양한 세그먼트들, 예를 들어, 마스터 부트 레코드("MBR") 영역(205), 파티션 부트 레코드("PBR") 영역(206), FAT 1 영역(207), FAT 2 영역(208) 및 루트 디렉토리 영역(209)을 가진다.
MBR 영역(205)은 전체 파티션 정보를 저장하고, 만약 미디어가 부트 가능한 장치이면, MBR(205)은 MBR 영역(205)에서 PBR 영역(206)으로 점프시키기 위한 명령들을 포함한다. MBR 영역(205)은 또한 MBR 영역(205) 및 PBR 영역(206) 사이에서 예비된 공간인 숨겨진 영역을 포함한다.
PBR 영역(206)은 파티션/하나의 파티션(이 실시예에서, 파티션 1)에 대한 부트 정보를 포함한다. 예를 들어, PBR 영역(206)은 FAT(예를 들어, 12/16/32 비트 들)의 타입에 대한 정보; 라벨(즉, 드라이브 이름), 드라이브 크기, 클러스터 크기(즉, 할당 유니트당 섹터들의 수); FAT 영역들의 수(도 2B에 도시된 2개의 FAT 영역들 FAT 1 및 FAT 2) 및 FAT당 섹터들의 수를 포함한다.
FAT 영역들(207 및 208)은 각각의 파일에 대한 클러스터 정보를 포함한다. 예를 들어, FAT(12)에 대해, 영역들(207 및 208)의 각각의 엔트리는 12 비트들을 포함하고 총 4096 엔트리들이 있다. 클러스터(0 및 1)는 0XFFFFF8(미디어 타입에 대해) 및 클러스터의 종료부를 위하여 예비된다. 특정 클러스터(예를 들어, 클러스터 4087)는 나쁜 클러스터들을 가리키기 위하여 사용된다. FAT(16)에 대해, 각각의 엔트리는 16 비트들을 포함하고 FAT(32)에 대해, 각각의 엔트리는 32 비트들을 포함한다.
루트 디렉토리(209)는 각각의 파일에 대한 엔트리들을 포함한다. 각각의 디렉토리 엔트리는 파일 이름 또는 디렉토리(예를 들어, 8 바이트들)에 대해 특정 수의 바이트들; 확장부를 위한 다수의 바이트들(예를 들어, 3 바이트들), 파일 속성들(예를 들어, 만약 파일이 판독 전용, 숨겨진, 시스템 파일, 볼륨 라벨, 디렉토리 또는 변형이면)에 대한 다수의 바이트들(예를 들어, 1 바이트); 파일이 생성될 때 시간 및 날짜를 가리키는 다수의 바이트들; 시작 클러스터를 위한 특정 수의 바이트들(예를 들어 2); 및 파일 길이를 가리키는 특정 수의 바이트들(예를 들어 4)을 포함한다. FAT의 제 1 클러스터 및 최종 클러스터에 대한 시작 클러스터 포인트들에 대한 바이트들의 수는 0xFFF, 0xFFFF 또는 0Xffffff로 표시될 수 있다.
디렉토리 파일 이름을 기입하기 위하여, 호스트 시스템은 FAT 1 영역(207)에 서 비어있는 클러스터 공간을 발견하고 데이터는 데이터 영역(202)에 기입된다. 양쪽 FAT 1 및 FAT 2 엔트리들은 업데이트된다. 디렉토리 엔트리, 즉, 날짜/시간/시작 클러스터/파일 길이는 또한 업데이트된다.
본 발명의 일측면에서, 메모리 제어기(150A)는 하나의 파티션이 풀(full)이 되거나 특정 임계값에 도달하고 다른 파티션이 빈 공간을 가질 때 파티션 공간을 재할당한다. 따라서 하나의 파티션의 크기가 증가할 때, 다른 것은 감소한다. 임계값은 메모리 제어기(150A)에 의해 프로그램될 수 있다. 맵핑 방법("버츄얼 맵"이라 불림)은 하기 기술된 바와 같이 양쪽 파티션들에서 클러스터 사용을 추적하기 위하여 사용된다. 이런 전체 과정은 메모리 제어기(150A)에 의해 충분히 수행된다. 호스트 시스템은 모든 데이터를 카피하지 않고 저장 장치를 재포맷한다.
도 2C는 호스트 시스템으로 나타난 바와 같이 재할당된 파티션 1 및 파티션 2의 레이아웃을 나타낸다. 파티션 1의 시스템 영역(201A)은 재할당 후 업데이트된 클러스터 및 파티션 정보를 포함한다. 본래 파티션 영역(202)은 더 이상 데이터가 기입되지 않는 경우 풀이거나 임계 크기에 도달된다. 새로운 데이터 영역(202A)은 파티션 2로부터 파티션 1로 할당된다. 감소된 파티션 2는 시스템 영역(203A) 및 새로운 감소된 데이터 영역(204A)을 가진다. 파티션들 재할당을 위한 상기 과정은 지금 보다 상세히 기술될 것이다.
도 2D는 재할당이 메모리 제어기(150A)에 의해 수행된 후 파티션 1 및 2의 액츄얼 레이아웃을 나타낸다. 파티션 2 시스템 영역(203A)은 영역(202A)이 파티션 A에 할당된 후 조절된 영역이다. 파티션 2는 도 2C에 도시된 바와 같이 데이터 영 역(204A)과 같은 204B 및 204C로 도시된 데이터 영역들을 가진다.
도 3은 본 발명의 일측면에 따라 파티션 크기들을 재할당하기 위한 최상부 레벨 흐름도를 도시한다. 처리는 플래시 장치(150)가 초기화될 때 단계(S300)에서 시작한다.
단계(S302)에서, 제어기(150A)는 파티션이 풀인지 결정한다. 파티션은 임의의 데이터를 더 이상 저장할 수 없을 때 또는 특정 임계 프로그래밍 값에 도달될 때 풀이라 고려된다. 파티션이 풀이 아니면, 제어기(150A)는 파티션이 풀일 때까지 기다린다.
만약 파티션이 풀이면(예를 들어, 도 2A의 파티션 1), 단계(S304)에서, 제어기(150A)는 빈 공간이 다른 파티션(예를 들어, 파티션 2)으로부터 이용 가능한지 결정한다. 만약 빈 공간이 이용되지 못하면, 처리는 단계(S302)로 리턴한다.
만약 빈 공간이 이용가능하면, 단계(S306)에서, 빈 공간(예를 들어, 202A)의 특정 양은 풀 파티션에 할당된다. 재할당 후, 양쪽 파티션들에 대한 FAT 엔트리들은 하기에 상세히 기술된 바와 같이 단계(S308)에서 조절된다. 디렉토리 엔트리들은 하기에 상세히 기술되는 단계(S310)에서 조절되고 처리는 단계(S312)에서 종료한다.
비록 상기 처리 흐름이 "풀 파티션"을 검출하는 메모리 제어기(150A)를 바탕으로 메모리 파티션 재할당을 기술하지만, 본 발명이 상기 상황으로만 제한되지 않는 것이 주목할 만하다. 예를 들어, 호스트는 메모리 장치를 재분할하기 위하여 특정 명령(예를 들어, "재분할 드라이브")을 제어기(150A)에 전송할 수 있고, 그 다음 제어기는 메모리 공간을 재할당하기 위하여 상기 처리 단계들을 수행한다.
도 4A-4F는 적어도 두 개의 메모리 파티션들 사이에서 메모리 공간을 재할당하기 위한 상기 처리 단계들을 도시한다. 도 4A-4F에 사용된 다양한 값들이 도시만을 위한 예들로서 단순히 사용되고 본 발명의 적응 측면들을 제한하기 위한 것이 아닌 것이 주목할 만한다.
도 4A-4F의 실시예는 플래시 장치(150)의 클러스터 크기가 32킬로바이트(KB)이고, 따라서 120 메가바이트(MB) 플래시 장치는 4096 클러스터들을 가진다. 각각의 시스템 영역(201 및 203)은 6개의 클러스터들을 사용하고 각각의 파티션은 2042 클러스터들의 데이터 영역을 가진다. 각각의 클러스터는 하나의 블록이고, 즉, 하나의 블록 크기는 클러스터 크기와 동일하다.
도 4A는 초기 파티션 상태(도 2A에 도시된 바와 같이)에 대한 테이블을 도시한다. 각각의 파티션은 시스템 영역에 대해 6개의 블록들 및 데이터 영역에 대해 2042 블록들을 가진다.
파티션 1에 대해 시스템 영역(201)은 블록 번호들(0-5)이 할당되고 데이터 영역(202)은 블록 번호들(6-2047)이 할당된다. 파일 시스템이 파티션 1의 제 1 데이터 클러스터에 기입할 때, 기입 동작을 논리 블록 어드레스(192)(여기서 192=6*32), 즉 블록 6에 전송한다.
파티션 2에 대해, 시스템 영역(203)은 블록들(2048-2053)이 할당되고 데이터 영역(204)은 블록 번호들(2054-4095)이 할당된다.
도 4B는 행(400)의 버츄얼 블록 번호들 및 행(401)의 리얼 블록 번호들을 가 진 맵핑 테이블(400A)의 예를 도시한다. 열 엔트리들(402-409)은 자체 설명되고 시스템 영역들, 사용된 데이터 영역들 및 빈 데이터 영역들에 대한 버츄얼 및 리얼 논리 블록 번호들을 제공한다.
시작 스테이지(도 2A 및 도 4A)에서, 버츄얼 블록 번호 및 리얼 논리 블록 번호들은 동일하고 인접한다. 도 4B에 도시된 바와 같이, 열(402-409)의 모든 엔트리들은 버츄얼 및 리얼 논리 블록 번호들이 동일하다.
도 4C는 업데이트된 맵핑 테이블(400B)을 도시한다. 호스트 시스템 도면(도 2C)은 행(400)에 도시되고 리얼 논리 메모리 공간 도면(도 2D)는 행(401)에 도시된다.
행(400 및 401)의 파티션 1에 대한 시스템 영역 엔트리들(행 410에 도시됨)은 동일하다. 열(411)은 파티션 1이 풀이고, 즉 모든 블록(6-2047)이 사용되는 것을 도시한다. 파티션 2는 몇몇 빈 블록들을 가지며(도 4B에서 3001-4000으로서 도시됨) 500의 몇몇 빈 블록들은 파티션 1에 할당된다. 호스트는 버츄얼 블록 번호를 바탕으로 행(400) 및 열(414)로 도시된 바와 같이 파티션 1이 2048-2547인 500개의 블록들을 안다. 따라서, 호스트 시스템에 대해, 파티션 1은 블록 0 내지 2547로 확장한다. 도 2D에 도시된 바와 같은 리얼 논리 메모리 공간에서, 파티션 1에 대한 500 블록들은 블록 번호들(3001 및 3500)(도 4C에서 행 401 및 열 414로 도시됨)에 배치된다.
파티션 2와 관련하여, 호스트는 실제로, 시스템 영역이 2048-2053(행 401 및 열 412 참조)일 때 파티션 영역이 인접한, 즉 2548-2553(행 400 및 열 412로 도시 됨)인 시스템 영역을 안다.
파티션 2에 사용된 공간에 대한 데이터 블록들은 열(413)에 도시된다. 여기서 다시, 버츄얼 블록 번호들은 2554-3500이고, 리얼 블록 번호들은 2054-3000(행 401 및 열 413으로 도시됨)이다. 행들(400 및 401) 및 열들(415 및 416)에 대한 엔트리들은 동일하다.
상기 예에 도시된 바와 같이, 호스트는 파티션 공간을 재할당하기 위하여 데이터를 카피하지 않는다. 맵핑 테이블(400A)을 사용하고 업데이트함으로써, 사용되지 않은 공간은 풀 메모리 파티션에 재할당된다.
상기 예(도 4A-4C)를 바탕으로, 파티션 1에 대한 FAT 테이블은 변화되지 않는다. 파티션 2에 대해, FAT 엔트리들은 파티션 1에 할당된 영역을 수용하기 위하여 조절된다. 도 2D의 예를 참조하여, 파티션 2에 대한 데이터 영역(B)(204C로 도시됨)은 파티션 1에 할당된 데이터 영역에 의해 감소된 엔트리들을 가질 것이다. 예를 들어, 만약 새로운 데이터 영역(202A)에 500 엔트리들의 FAT가 있다면, 파티션 2(204C로 도시됨)에 대한 데이터 영역(B)에서 각각의 파일 이름 엔트리에 대한 시작 클러스터는 만약 파티션 2의 데이터 영역(A)(204B로 도시됨) 아래에 있다면 500만큼 조절될 것이다.
도 4D는 테이블 포맷의 상기 예를 도시한다. 파티션 B에 대한 데이터 영역(A)(도 2D에서 204B로 도시됨)은 1000 엔트리들을 가진다. 영역(202A)은 500 엔트리들을 가지며 영역(204C)은 500 엔트리들을 가진다.
하나의 실행 예에서, 플래시 장치(150)의 각각의 파티션은 그 자체를 호스트 에 공개하여 파티션에 대해 이용할 수 있는 특정 용량을 가진다. 예를 들어, 만약 플래시 장치(150)가 4GB이면, 각각의 파티션은 그 자체 2GB로 공개한다. 따라서, 전체 플래시 장치 공간을 수용할 수 있도록 각각의 파티션에 대해 이용할 수 있는 충분한 FAT 영역을 가지는 것이 바람직하다. 이런 추가 FAT 테이블 공간은 파티션이 성장하게 한다. 따라서, 메모리 제어기(150A) 하에서, FAT 1 영역(207) 및 FAT 2 영역(208)은 전체 플래시 메모리 장치 용량에 대해 FAT 엔트리들을 포함하기에 충분히 크다.
도 4E는 파티션 맵의 호스트/사용자 모습을 도시하는 열(417)을 가진 테이블을 도시하고 열(418)은 액츄얼/리얼 파티션 맵을 도시한다. 열(418) 하에서 도시된 바와 같이, 리얼 파티션 맵은 FAT 영역 확장을 위하여 예비 영역(207A)을 포함한다. 이 영역은 FAT 1 및 FAT 2의 FAT 엔트리들이 전체 저장 장치를 수용할 수 있도록 충분히 크다. 파티션이 확장할 때(예를 들어, 상기 예에서 파티션 1), 예비 영역(207A)은 확장을 위한 추가 공간을 제공하기 위하여 사용된다. 파티션 영역들이 메모리 제어기(150A)에 의해 재할당될 때, FAT 영역들은 파티션 크기 변화를 수용하기 위하여 조절된다.
FAT 엔트리들/영역 외에, 디렉토리 영역의 파일 이름 엔트리들은 파티션 공간들이 메모리 제어기(150A)에 의해 재할당될 때 조절된다(도 3, 단계 S310). 상기 예(도 4A-4C)를 바탕으로, 파티션 1에 대한 파일 이름 엔트리는 변화되지 않는다. 파티션 2에 대해, 파일 이름 엔트리에 대한 시작 클러스터는 파티션 1에 할당된 영역을 수용하기 위하여 조절된다.
도 2D의 예를 참조하여, 파티션 2에 대한 데이터 영역 B(204C로 도시됨)은 파티션 1에 할당된 데이터 영역에 의해 감소된 엔트리들을 가질 것이다. 예를 들어, 만약 새로운 데이터 영역(202A)에 500 엔트리들의 FAT가 있다면, 파티션 2에 대한 데이터 영역(B)(204C로 도시됨)의 각각의 파일 이름 엔트리에 대한 시작 클러스터는 파티션 2의 데이터 영역(A)(204B로 도시됨) 아래에 있다면 500 만큼 조절될 것이다.
도 4F는 테이블 포맷의 상기 예를 도시한다. 파티션 B에 대한 데이터 영역(A)(도 2D에서 204B로 도시됨)은 1000 엔트리들을 가진다. 영역(202A)은 500 엔트리들을 가지며 영역(204C)은 500 엔트리들을 가진다.
새로운 파티션 영역 2(=n)에 대한 각각의 파일 이름 엔트리의 시작 클러스터는 블록(1000) 너머에 배치되면 500 만큼 조절된다. 따라서, 만약 n>=10000이면, n'(조절된 파일 이름 엔트리)는 n-500이다. 이런 조절은 영역들(204B 및 204C)의 엔트리들을 포함하는 모든 엔트리들에 대해 수행된다. 만약 하나의 디렉토리 또는 서브 디렉토리가 있다는 것을 파일 이름 엔트리가 나타내면, 디렉토리(또는 서브 디렉토리) 엔트리들은 조절된다.
본 발명의 일측면에서, 파티션 영역들은 지루한 시간 소비적 동작인 모든 데이터 카피없이 메모리 장치 제어기에 의해 재할당/조절된다. 호스트 시스템은 파티션 저장 공간을 재할당하기 위하여 드라이브를 카피/재포맷하는 시간 소비적 처리를 수행하지 않는다.
본 발명이 특정 실시예들을 참조하여 기술되었지만, 이들 실시예들은 도시적 이고 제한되지 않는다. 예를 들어, 비록 상기 도시들이 플래시 메모리 장치들을 바탕으로 하지만, 다른 형태의 메모리 장치들, 예를 들어 하드 디스크에 똑같이 적용할 수 있다. 본 발명의 많은 다른 애플리케이션들 및 실시예들은 본 명세서 및 다음 청구항들에서 명백하게 될 것이다.

Claims (25)

  1. 대량 저장 메모리 시스템으로서,
    재프로그램 가능한 비휘발성 메모리 셀들을 포함하고, 상기 메모리 셀들은 함께 소거할 수 있고 데이터를 저장하기 위하여 메모리 셀들의 행들을 정의하기 위하여 다수의 직렬 문자열들에 함께 접속되는 다수의 메모리 셀들의 블록들에 배열되고, 상기 메모리 셀들은 적어도 두 개의 메모리 파티션들로 분할되고 각각의 메모리 파티션은 시스템 영역 및 데이터 영역을 가지며; 및
    호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 포함하는 제어기를 포함하고, 상기 제어기는 맵핑 테이블을 사용하여 사용되지 않은 공간을 가진 제 2 메모리 파티션으로부터 풀(full)이거나 임계 값에 도달된 제 1 메모리 파티션으로 메모리 공간을 재할당하고, 상기 맵핑 테이블은 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대한 버츄얼(virtual) 블록 어드레스, 및 액츄얼(actual) 논리 블록 어드레스에 버츄얼 블록 어드레스를 맵핑하는 리얼(real) 논리 블록 어드레스를 사용하는, 대량 저장 메모리 시스템.
  2. 제 1 항에 있어서, 상기 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 각각의 시스템 영역은 파일 할당 테이블("FAT")을 저장하기 위한 공간을 포함하고, 상기 FAT 영역은 데이터 공간이 파티션에 부가되는지 파티션으로부터 줄여지는지에 따라 확장 또는 수축되는, 대량 저장 메모리 시스템.
  3. 제 2 항에 있어서, 상기 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 FAT 영역은 전체 대량 저장 시스템에 대한 FAT 엔트리들을 수용하기에 충분히 큰, 대량 저장 메모리 시스템.
  4. 제 1 항에 있어서, 상기 대량 저장 시스템이 초기화될 때, 버츄얼 어드레스 및 리얼 논리 어드레스는 제 1 메모리 파티션 및 제 2 메모리 파티션에 대해 동일한, 대량 저장 메모리 시스템.
  5. 제 1 항에 있어서, 하나의 메모리 파티션에 대한 FAT 엔트리들은 빈(free) 메모리 공간이 제 2 메모리 파티션에서 제 1 메모리 파티션으로 할당될 때 조절되는, 대량 저장 메모리 시스템.
  6. 제 1 항에 있어서, 디렉토리내 파일 이름 엔트리는 빈 메모리 공간이 제 2 메모리 파티션에서 제 1 메모리 파티션으로 할당될 때 조절되는, 대량 저장 메모리 시스템.
  7. 제 1 항에 있어서, 상기 대량 저장 시스템은 플래시 장치인, 대량 저장 메모리 시스템.
  8. 대량 저장 메모리 시스템으로서,
    호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 포함하는 제어기;
    시스템 영역 및 데이터 영역을 가진 제 1 메모리 파티션; 및
    시스템 영역 및 데이터 영역을 가진 제 2 메모리 파티션을 포함하고, 상기 제어기는 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대한 버츄얼 블록 어드레스를 사용함으로써 풀(full)이거나 임계값에 도달된 제 1 메모리 파티션에 사용되지 않은 저장 공간을 가진 제 2 메모리 파티션으로부터의 메모리 공간을 재할당하는, 대량 저장 메모리 시스템.
  9. 제 8 항에 있어서, 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 각각의 시스템 영역은 파일 할당 테이블("FAT")을 저장하기 위한 공간을 포함하고, 상기 FAT 영역은 데이터 영역이 파티션에 부가되는지 파티션으로부터 줄여지는지에 따라 확장 또는 수축되는, 대량 저장 메모리 시스템.
  10. 제 9 항에 있어서, 상기 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 FAT 영역은 전체 대량 저장 시스템에 대한 FAT 엔트리들을 수용하기에 충분히 큰, 대량 저장 메모리 시스템.
  11. 제 8 항에 있어서, 상기 대량 저장 시스템이 초기화될 때, 버츄얼 어드레스 및 리얼 논리 어드레스는 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 동일한, 대량 저장 메모리 시스템.
  12. 제 8 항에 있어서, 메모리 파티션에 대한 FAT 엔트리들은 빈 메모리 공간이 제 2 메모리 파티션으로부터 제 1 메모리 파티션으로 할당될 때 조절되는, 대량 저장 메모리 시스템.
  13. 제 8 항에 있어서, 디렉토리내 파일 이름 엔트리는 빈 메모리 공간이 제 2 메모리 파티션으로부터 제 1 메모리 파티션으로 할당될 때 조절되는, 대량 저장 메모리 시스템.
  14. 제 8 항에 있어서, 상기 대량 저장 시스템은 플래시 장치인, 대량 저장 메모리 시스템.
  15. 제 8 항에 있어서, 상기 대량 저장 시스템은 하드 디스크인, 대량 저장 메모리 시스템.
  16. 시스템 영역 및 데이터 영역을 가진 제 1 메모리 파티션, 및 시스템 영역 및 데이터 영역을 가진 제 2 메모리 파티션 사이의 대량 저장 시스템의 데이터 저장 공간을 동적으로 재할당하기 위한 방법으로서,
    제 1 메모리 파티션이 풀(full)이고 및/또는 임계값에 도달되는지를 결정하는 단계;
    제 2 메모리 파티션이 풀이고 및/또는 임계값에 도달된 제 1 메모리 파티션에 할당될 수 있는 빈 공간을 가지는지를 결정하는 단계; 및
    제 2 메모리 파티션으로부터 제 1 메모리 파티션으로 일부 빈 공간을 할당하는 단계를 포함하고, 하나의 메모리 제어기는 빈 공간을 할당하는, 데이터 저장 공간 동적 재할당 방법.
  17. 제 16 항에 있어서, 상기 대량 저장 시스템은 재프로그래밍 가능한 비휘발성 메모리 셀들을 포함하고, 상기 메모리 셀들은 함께 소거할 수 있고 데이터를 저장하기 위하여 메모리 셀들의 행들을 정의하기 위하여 다수의 직렬 문자열들에 함께 접속되는 다수의 메모리 셀들의 블록들에 배열되고, 메모리 제어기는 호스트 시스템으로부터 논리 인터페이스를 통하여 데이터를 수신하기 위하여 제공된 마이크로프로세서를 포함하고, 상기 제어기는 시스템 영역 및 데이터 영역이 호스트 시스템에 인접하게 나타나도록 시스템 영역 및 데이터 영역에 대해 버츄얼 블록 어드레스를 가진 맵핑 테이블을 사용하는, 데이터 저장 공간 동적 재할당 방법.
  18. 제 16 항에 있어서, 상기 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 각각의 시스템 영역은 파일 할당 테이블("FAT")을 저장하기 위한 공간을 포함하고, 상기 FAT 영역은 데이터 공간이 파티션에 부가되는지 파티션으로부터 줄여지는지에 따라 확장 또는 수축되는, 데이터 저장 공간 동적 재할당 방법.
  19. 제 18 항에 있어서, 상기 제 1 메모리 파티션 및 제 2 메모리 파티션에 대한 FAT 영역은 전체 대량 저장 시스템에 대한 FAT 엔트리들을 수용하기에 충분히 큰, 데이터 저장 공간 동적 재할당 방법.
  20. 제 16 항에 있어서, 상기 대량 저장 시스템이 초기화될 때, 버츄얼 어드레스 및 리얼 논리 어드레스는 제 1 메모리 파티션 및 제 2 메모리 파티션에 대해 동일한, 데이터 저장 공간 동적 재할당 방법.
  21. 제 16 항에 있어서, 하나의 메모리 파티션에 대한 상기 FAT 엔트리들은 빈 메모리 공간이 하나의 메모리 파티션으로부터 다른 메모리 파티션으로 할당될 때 조절되는, 데이터 저장 공간 동적 재할당 방법.
  22. 제 16 항에 있어서, 디렉토리내 파일 이름 엔트리는 빈 메모리 공간이 제 2 메모리 파티션으로부터 제 1 메모리 파티션으로 할당될 때 조절되는, 데이터 저장 공간 동적 재할당 방법.
  23. 제 16 항에 있어서, 상기 대량 저장 시스템은 플래시 장치인, 데이터 저장 공간 동적 재할당 방법.
  24. 제 16 항에 있어서, 상기 대량 저장 시스템은 자기 하드 디스크인, 데이터 저장 공간 동적 재할당 방법.
  25. 제 16 항에 있어서, 상기 메모리 제어기는 호스트 시스템으로부터 명령을 수신한 후 파티션 공간을 재할당하는, 데이터 저장 공간 동적 재할당 방법.
KR1020087001992A 2005-06-29 2006-06-28 저장 장치에서 파티션들을 관리하기 위한 방법 및 시스템 KR20080025178A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/170,221 US7457910B2 (en) 2005-06-29 2005-06-29 Method and system for managing partitions in a storage device
US11/170,221 2005-06-29

Publications (1)

Publication Number Publication Date
KR20080025178A true KR20080025178A (ko) 2008-03-19

Family

ID=37101969

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087001992A KR20080025178A (ko) 2005-06-29 2006-06-28 저장 장치에서 파티션들을 관리하기 위한 방법 및 시스템

Country Status (7)

Country Link
US (2) US7457910B2 (ko)
EP (3) EP2270643A1 (ko)
JP (2) JP5143730B2 (ko)
KR (1) KR20080025178A (ko)
CN (1) CN101213510B (ko)
TW (1) TWI315032B (ko)
WO (1) WO2007002866A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8375191B2 (en) 2009-01-07 2013-02-12 Samsung Electronics Co., Ltd. Non-volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor
US10048937B2 (en) 2014-06-16 2018-08-14 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US10558399B2 (en) 2015-03-26 2020-02-11 International Business Machines Corporation File system block-level tiering and co-allocation

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814047B2 (en) * 2003-08-25 2010-10-12 Oracle International Corporation Direct loading of semistructured data
US7747580B2 (en) 2003-08-25 2010-06-29 Oracle International Corporation Direct loading of opaque types
JP4428200B2 (ja) * 2004-11-01 2010-03-10 ソニー株式会社 情報記録装置および方法、プログラム格納媒体、並びにプログラム
US8010753B2 (en) * 2005-09-28 2011-08-30 International Business Machines Corporation Systems and methods for temporarily transferring use of portions of partitioned memory between host computers
US7933928B2 (en) * 2005-12-22 2011-04-26 Oracle International Corporation Method and mechanism for loading XML documents into memory
KR100714709B1 (ko) * 2006-01-11 2007-05-04 삼성전자주식회사 숨김 영역 관리 장치 및 방법
JP2007199905A (ja) * 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
US7971071B2 (en) * 2006-05-24 2011-06-28 Walkoe Wilbur J Integrated delivery and protection device for digital objects
US20080082725A1 (en) * 2006-09-28 2008-04-03 Reuven Elhamias End of Life Recovery and Resizing of Memory Cards
US7596656B2 (en) * 2006-09-28 2009-09-29 Sandisk Corporation Memory cards with end of life recovery and resizing
US7933935B2 (en) 2006-10-16 2011-04-26 Oracle International Corporation Efficient partitioning technique while managing large XML documents
CN101681282A (zh) 2006-12-06 2010-03-24 弗森多系统公司(dba弗森-艾奥) 用于共享的、前端、分布式raid的装置、系统和方法
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US7966355B2 (en) * 2007-02-13 2011-06-21 Modu Ltd. Interface for extending functionality of memory cards
US7917479B2 (en) 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
US8429352B2 (en) 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US9693106B2 (en) * 2007-07-26 2017-06-27 The Directv Group, Inc. Method and system for preordering content in a user device associated with a content processing system
KR101433859B1 (ko) * 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US8286883B2 (en) 2007-11-12 2012-10-16 Micron Technology, Inc. System and method for updating read-only memory in smart card memory modules
US8162227B2 (en) * 2007-11-12 2012-04-24 Micron Technology, Inc. Intelligent controller system and method for smart card memory modules
US8307131B2 (en) * 2007-11-12 2012-11-06 Gemalto Sa System and method for drive resizing and partition size exchange between a flash memory controller and a smart card
US8898477B2 (en) * 2007-11-12 2014-11-25 Gemalto Inc. System and method for secure firmware update of a secure token having a flash memory controller and a smart card
US8156322B2 (en) 2007-11-12 2012-04-10 Micron Technology, Inc. Critical security parameter generation and exchange system and method for smart-card memory modules
US8819675B2 (en) * 2007-11-28 2014-08-26 Hitachi, Ltd. Virtual machine monitor and multiprocessor system
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8452927B2 (en) * 2008-01-02 2013-05-28 Sandisk Technologies Inc. Distributed storage service systems and architecture
US9098506B2 (en) * 2008-01-02 2015-08-04 Sandisk Il, Ltd. Data indexing by local storage device
US8370402B2 (en) * 2008-01-02 2013-02-05 Sandisk Il Ltd Dual representation of stored digital content
US8583878B2 (en) * 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
JPWO2009096180A1 (ja) * 2008-01-30 2011-05-26 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
CN101515254B (zh) * 2008-02-18 2010-12-08 鸿富锦精密工业(深圳)有限公司 存储空间管理系统和方法
US8271751B2 (en) 2008-04-24 2012-09-18 Echostar Technologies L.L.C. Systems and methods for reliably managing files in a computer system
US8429196B2 (en) 2008-06-06 2013-04-23 Oracle International Corporation Fast extraction of scalar values from binary encoded XML
US8065304B2 (en) * 2008-06-11 2011-11-22 International Business Machines Corporation Using asymmetric memory
US20100122039A1 (en) * 2008-11-11 2010-05-13 Ravi Ranjan Kumar Memory Systems and Accessing Methods
US8880776B2 (en) * 2008-12-16 2014-11-04 Sandisk Il Ltd. Data access at a storage device using cluster information
JP5218024B2 (ja) * 2008-12-22 2013-06-26 株式会社リコー 情報処理装置、情報処理方法、情報処理プログラム
US8738621B2 (en) * 2009-01-27 2014-05-27 EchoStar Technologies, L.L.C. Systems and methods for managing files on a storage device
US7974190B2 (en) * 2009-02-12 2011-07-05 Micrel, Inc. Dynamic queue memory allocation with flow control
US8370645B2 (en) 2009-03-03 2013-02-05 Micron Technology, Inc. Protection of security parameters in storage devices
CN101908009B (zh) * 2009-06-08 2014-02-19 鸿富锦精密工业(深圳)有限公司 文件备份与使用方法
EP2476055B1 (en) 2009-09-08 2020-01-22 SanDisk Technologies LLC Apparatus, system, and method for caching data on a solid-state storage device
CN102598019B (zh) 2009-09-09 2015-08-19 才智知识产权控股公司(2) 用于分配存储的设备、系统和方法
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
TWI395102B (zh) * 2009-10-02 2013-05-01 Via Tech Inc 資料儲存裝置與方法
CN101662706B (zh) * 2009-10-20 2013-03-20 国家电网公司 一种业务存储方法和模块
US8391302B1 (en) * 2009-12-03 2013-03-05 Integrated Device Technology, Inc. High-performance ingress buffer for a packet switch
CN101808123B (zh) * 2010-03-09 2013-04-17 浪潮(北京)电子信息产业有限公司 在存储系统中访问存储资源的方法和装置
CN101868049B (zh) * 2010-06-03 2013-12-04 华为终端有限公司 主机与无线上网模块的通信方法和主机通信模块
CN101938848B (zh) * 2010-06-03 2013-01-02 华为终端有限公司 主机设备无线上网方法及系统
EP2566289B1 (en) 2010-04-23 2017-09-20 Huawei Device Co., Ltd. Wireless Internet access module and method for synchronizing data
US9883242B1 (en) * 2010-05-19 2018-01-30 The Directv Group, Inc. Method and system for controlling a storage location of content in a user device
US9456247B1 (en) 2010-05-19 2016-09-27 The Directv Group, Inc. Method and system for changing communication parameters of a content delivery system based on feedback from user devices
BR112012029178A2 (pt) 2010-05-19 2018-05-15 Directv Group Inc método e sistema para construir uma fila de lista de procura para um usuário em um sistema de distribuição de conteúdo
US20120017052A1 (en) * 2010-07-19 2012-01-19 Sauber William F Information Handling System Universal Memory Wear Leveling System and Method
TWI420305B (zh) * 2010-10-08 2013-12-21 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與自動產生填充檔案的方法
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9268646B1 (en) * 2010-12-21 2016-02-23 Western Digital Technologies, Inc. System and method for optimized management of operation data in a solid-state memory
CN102541744B (zh) * 2010-12-24 2015-12-02 安凯(广州)微电子技术有限公司 一种移动存储设备的分区方法及系统
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
WO2012116369A2 (en) 2011-02-25 2012-08-30 Fusion-Io, Inc. Apparatus, system, and method for managing contents of a cache
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9361044B2 (en) 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
FR2979443B1 (fr) * 2011-08-30 2013-09-27 Maxim Integrated Products Microcontroleur securise a base de mode
US8856440B2 (en) 2011-09-12 2014-10-07 Microsoft Corporation Volatile memory representation of nonvolatile storage device set
US9529547B2 (en) * 2011-10-21 2016-12-27 Freescale Semiconductor, Inc. Memory device and method for organizing a homogeneous memory
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
TWI489272B (zh) * 2012-04-03 2015-06-21 Phison Electronics Corp 保護資料的方法、記憶體控制器與記憶體儲存裝置
CN103377149B (zh) * 2012-04-16 2016-05-11 群联电子股份有限公司 保护数据的方法、存储器控制器与存储器储存装置
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
CN102789425B (zh) * 2012-07-17 2016-01-20 上海金智晟东电力科技有限公司 基于flash存储介质的文件读写方法
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10057726B2 (en) * 2012-10-02 2018-08-21 Razer (Asia-Pacific) Pte. Ltd. Managing user data on an electronic device
US9507750B2 (en) 2012-10-12 2016-11-29 A9.Com, Inc. Dynamic search partitioning
US9235377B2 (en) * 2013-03-12 2016-01-12 Invensense, Inc. Multiple, per sensor configurable FIFOs in a single static random access memory (SRAM) structure
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
CN104238953A (zh) * 2013-06-13 2014-12-24 中兴通讯股份有限公司 直接表的存储方法和装置
KR20140145879A (ko) * 2013-06-14 2014-12-24 삼성전자주식회사 가상 블록 디바이스로 파일 시스템을 마운트하는 전자 장치 및 방법
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
KR102088403B1 (ko) 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
JP6135506B2 (ja) * 2013-12-27 2017-05-31 ブラザー工業株式会社 シート処理装置
KR20150138528A (ko) * 2014-05-29 2015-12-10 삼성전자주식회사 플래시 메모리를 기반으로 하는 스토리지 시스템 및 그것의 동작 방법
US10667008B1 (en) 2014-12-18 2020-05-26 The Directv Group, Inc. Method and system for setting and receiving user notifications for content available far in the future
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
JP6601077B2 (ja) * 2015-09-10 2019-11-06 富士通株式会社 情報処理装置、ログ記録方法及びログ記録プログラム
JP6380320B2 (ja) * 2015-09-29 2018-08-29 京セラドキュメントソリューションズ株式会社 電子機器、情報処理方法及びプログラム
US10348567B2 (en) * 2015-10-15 2019-07-09 Microsoft Technology Licensing, Llc Mapping user identifiers between different device ecosystems
US10210298B2 (en) * 2015-11-24 2019-02-19 Altera Corporation Embedded memory blocks with adjustable memory boundaries
EP3408623A4 (en) * 2016-01-22 2020-01-15 Illinois Tool Works, Inc. SYSTEMS AND METHODS FOR DYNAMICALLY CONFIGURING STORED DATA VALUES ON A MASS FLOW REGULATOR
US10261707B1 (en) * 2016-03-24 2019-04-16 Marvell International Ltd. Decoder memory sharing
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10567460B2 (en) * 2016-06-09 2020-02-18 Apple Inc. Managing data using a time-based directory structure
JP6783645B2 (ja) * 2016-12-21 2020-11-11 キオクシア株式会社 メモリシステムおよび制御方法
US20180292991A1 (en) * 2017-04-11 2018-10-11 Micron Technology, Inc. Memory protocol with programmable buffer and cache size
KR20190006680A (ko) * 2017-07-11 2019-01-21 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN109697016B (zh) * 2017-10-20 2022-02-15 伊姆西Ip控股有限责任公司 用于改进容器的存储性能的方法和装置
US10908832B2 (en) 2017-10-31 2021-02-02 Micron Technology, Inc. Common pool management
CN109815711B (zh) * 2018-12-21 2020-12-25 航天信息股份有限公司 一种存储设备、数据存储方法和数据读取方法
US10977174B2 (en) * 2018-12-31 2021-04-13 Micron Technology, Inc. Using a common pool of blocks for user data and a system data structure
CN111274160A (zh) * 2020-01-22 2020-06-12 维沃移动通信有限公司 数据存储方法、电子设备及介质
US11436153B2 (en) * 2020-05-26 2022-09-06 Western Digital Technologies, Inc. Moving change log tables to align to zones
US20220019370A1 (en) * 2020-07-16 2022-01-20 Micron Technology, Inc. Partial zone memory unit handling in a zoned namespace of a memory device
US11537293B2 (en) * 2021-02-18 2022-12-27 Western Digital Technologies, Inc. Wear leveling methods for zoned namespace solid state drive
CN114237514A (zh) * 2021-12-24 2022-03-25 深圳市宝佳乐电子科技有限公司 区块管理方法、存储器控制器和存储器存储装置

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE36989E (en) 1979-10-18 2000-12-12 Storage Technology Corporation Virtual storage system and method
EP0935255A2 (en) 1989-04-13 1999-08-11 SanDisk Corporation Flash EEPROM system
US5193184A (en) 1990-06-18 1993-03-09 Storage Technology Corporation Deleted data file space release system for a dynamically mapped virtual data storage subsystem
US5253344A (en) 1991-09-05 1993-10-12 International Business Machines Corp. Method and apparatus for dynamically changing the configuration of a logically partitioned data processing system
JPH0581091A (ja) * 1991-09-19 1993-04-02 Fuji Xerox Co Ltd データ処理装置
CA2100540A1 (en) 1992-10-19 1994-04-20 Jonel George System and method for performing resource reconfiguration in a computer system
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5706472A (en) * 1995-02-23 1998-01-06 Powerquest Corporation Method for manipulating disk partitions
US5675769A (en) * 1995-02-23 1997-10-07 Powerquest Corporation Method for manipulating disk partitions
JPH08314773A (ja) * 1995-05-15 1996-11-29 Nec Corp 記憶装置の分割領域再配置システム
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
WO1999057641A1 (en) 1998-05-01 1999-11-11 Powerquest Corporation Manipulation of virtual and live computer storage device partitions
JP3613052B2 (ja) * 1999-02-09 2005-01-26 日本電気株式会社 オペレーティングシステムを記録したコンピュータ読み取り可能な記録媒体
US6609187B1 (en) 1999-07-06 2003-08-19 Dell Products L.P. Method and apparatus for supporting resizing of file system partitions
JP3863330B2 (ja) 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
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
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
JP2002222061A (ja) * 2001-01-25 2002-08-09 Hitachi Ltd 記憶領域を設定する方法、記憶装置およびプログラム記憶媒体
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
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
JP2003085014A (ja) * 2001-09-12 2003-03-20 Toshiba Corp ネットワークシステムのボリューム管理方法及び計算機
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US7266823B2 (en) * 2002-02-21 2007-09-04 International Business Machines Corporation Apparatus and method of dynamically repartitioning a computer system in response to partition workloads
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US6694419B1 (en) 2002-04-12 2004-02-17 Barsa Consulting Group, Llc Method and system for automatically measuring partition memory needs in a partitioned computer system
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US6851030B2 (en) 2002-10-16 2005-02-01 International Business Machines Corporation System and method for dynamically allocating associative resources
US6912625B2 (en) 2003-01-09 2005-06-28 International Business Machines Corporation Method, system, and computer program product for creating and managing memory affinity in logically partitioned data processing systems
JP4559359B2 (ja) * 2003-02-20 2010-10-06 パナソニック株式会社 情報記録媒体及びその領域管理方法
US7305520B2 (en) * 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US8607016B2 (en) * 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US7496493B1 (en) * 2004-11-09 2009-02-24 Western Digital Technologies, Inc. External memory device to provide disk device and optical functionality
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8375191B2 (en) 2009-01-07 2013-02-12 Samsung Electronics Co., Ltd. Non-volatile memory, page dynamic allocation apparatus and page mapping apparatus therefor, and page dynamic allocation method and page mapping method therefor
US10048937B2 (en) 2014-06-16 2018-08-14 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US10162598B2 (en) 2014-06-16 2018-12-25 International Business Machines Corporation Flash optimized columnar data layout and data access algorithms for big data query engines
US10558399B2 (en) 2015-03-26 2020-02-11 International Business Machines Corporation File system block-level tiering and co-allocation
US11593037B2 (en) 2015-03-26 2023-02-28 International Business Machines Corporation File system block-level tiering and co-allocation

Also Published As

Publication number Publication date
WO2007002866A2 (en) 2007-01-04
JP2008545202A (ja) 2008-12-11
JP2013012212A (ja) 2013-01-17
CN101213510A (zh) 2008-07-02
EP1896931A2 (en) 2008-03-12
US20070002612A1 (en) 2007-01-04
US7853772B2 (en) 2010-12-14
TW200712878A (en) 2007-04-01
EP2270643A1 (en) 2011-01-05
WO2007002866A3 (en) 2007-05-10
US20090043984A1 (en) 2009-02-12
US7457910B2 (en) 2008-11-25
JP5143730B2 (ja) 2013-02-13
TWI315032B (en) 2009-09-21
EP2159681A2 (en) 2010-03-03
EP2159681A3 (en) 2010-12-01
CN101213510B (zh) 2012-05-23

Similar Documents

Publication Publication Date Title
JP5143730B2 (ja) 記憶装置内のパーティションを管理する方法およびシステム
KR101369996B1 (ko) 저장 장치용 듀얼 모드 액세스 방법 및 시스템
US8209516B2 (en) Method and system for dual mode access for storage devices
EP1920317B1 (en) Mass data storage system
US7480766B2 (en) Interfacing systems operating through a logical address space and on a direct data file basis
US7769978B2 (en) Method and system for accessing non-volatile storage devices
US7793068B2 (en) Dual mode access for non-volatile storage devices
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
KR101464199B1 (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱
US8769217B2 (en) Methods and apparatus for passing information to a host system to suggest logical locations to allocate to a file

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right