KR20070012630A - 데이터 런 프로그래밍 - Google Patents

데이터 런 프로그래밍 Download PDF

Info

Publication number
KR20070012630A
KR20070012630A KR1020067013319A KR20067013319A KR20070012630A KR 20070012630 A KR20070012630 A KR 20070012630A KR 1020067013319 A KR1020067013319 A KR 1020067013319A KR 20067013319 A KR20067013319 A KR 20067013319A KR 20070012630 A KR20070012630 A KR 20070012630A
Authority
KR
South Korea
Prior art keywords
data
adaptive
logical
metablock
blocks
Prior art date
Application number
KR1020067013319A
Other languages
English (en)
Other versions
KR100983212B1 (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
Priority claimed from US10/749,189 external-priority patent/US7433993B2/en
Priority claimed from US10/841,118 external-priority patent/US20050144363A1/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20070012630A publication Critical patent/KR20070012630A/ko
Application granted granted Critical
Publication of KR100983212B1 publication Critical patent/KR100983212B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

데이터 운영의 데이터는 데이터 경계의 위치에 따라 배열된 적응성이 있는 메타블럭의 비-휘발성 메모리의 배열내에 저장된다.다른 데이터는 비-휘발성 메모리로 직접 저장되지만,시리얼 플래시 버퍼는 일부 데이터를 저장하는데 사용된다. 데이터는 일련의 업데이트의 효율을 증진하기 위해 데이터의 업데이팅 중에 데이터 경계에 일렬배열로 저장 된다.

Description

데이터 런 프로그래밍{DATA RUN PROGRAMMING}
본 발명은 일반적으로 비휘발성 메모리 시스템들의 오퍼레이션에 관한 것이며, 더욱 상세하게는 그러한 메모리 시스템들 내의 데이터의 취급에 관한 것이다.
오늘날 많은 상업적으로 성공적인 비휘발성 메모리 제품들이 사용되고 있으며, 특히 1개 이상의 집적 회로 칩들 상에 형성된 플래쉬 EEPROM (전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리)의 어레이를 사용하는 소형 팩터 카드들의 형태의 제품들이 사용되고 있다. 메모리 제어기는 보편적으로 반드시 별개의 집적 회로 칩 상에서가 아니라, 카드가 소거 가능하게 접속된 호스트와 인터페이스되고, 그 카드 내의 메모리 어레이의 오퍼레이션을 제어한다. 그러한 제어기는 전형적으로 마이크로프로세서, 일부 비휘발성 판독-전용-메모리(ROM), 휘발성 랜덤 액세스 메모리(RAM) 및 1개 이상의 특수 회로들, 예를 들면 데이터를 프로그래밍하고 판독하는 동안 제어기를 통해 통과함에 따라 데이터로부터 에러-정정-코드(ECC)를 산출하는 것을 포함한다. 상업적으로 입수할 수 있는 카드들의 일부는 CompactFlashTM(CF) 카드들, 멀티미디어 카드들(MMC), 보안 디지털 (SD) 카드들, 스마트 미디어 카드들, 인사 태그들 (P-Tag) 및 메모리 스틱 카드들이다. 호스트들 은 개인용 컴퓨터들, 노트북 컴퓨터들, 개인 휴대 정보 단말기들(PDAs), 여러 가지 데이터 통신 디바이스들, 디지털 카메라들, 셀룰러 전화기들, 휴대용 오디오 플레이어들, 자동차용 음향 시스템들 및 유사한 유형의 장비들을 포함한다. 메모리 카드 구현 외에, 이러한 유형의 메모리는 여러 가지 유형의 호스트 시스템들 내로 대신에 내장될 수 있다.
2개의 일반적인 메모리 셀 어레이 아키텍춰들은 상업적 용도, NOR 및 NAND를 발견하게 되었다. 전형적인 NOR 어레이에서, 메모리 셀들은 셀들의 열들을 따라 확장하는 워드 라인들에 접속한 제어 게이트와 행 방향으로 확장하는 드레인 확장부들과 인접한 비트 라인 소스 사이에 접속된다. 메모리 셀은 소스와 드레인 사이의 셀 채널 영역의 적어도 일부 상으로 배치된 적어도 하나의 저장 소자를 포함한다. 따라서, 저장 소자들 상의 전하의 프로그램된 레벨은 셀들의 오퍼레이팅 특성들을 제어하고, 이는 어드레스된 메모리 셀들에 적절한 전압들을 인가함으로써 판독될 수 있다. 그러한 셀들의 예, 메모리 시스템들 내의 이들의 용도들 및 이들의 제조 방법들은 미합중국 특허 제5,070,032호, 제5,095,344호, 제5,313,421호, 제5,315,541호, 제5,343,063호, 제5,661,053호 및 제6,222,762호에 주어져 있으며, 이들 모든 특허와 함께 본원에 인용된 특허 출원들은 이들의 전문을 참고 문헌으로서 인용한다.
NAND 어레이는 셀들의 행들을 형성할 가능성이 있는 레퍼런스와 개개의 비트 라인들 사이에 1개 이상의 선택 트랜지스터들에 따라 접속된 2개 이상, 예를 들면 16 및 32 메모리 셀들의 직렬 스트링들을 이용한다. 워드 라인들은 많은 수의 이 들 컬럼들 내에서 셀들을 가로질러 확장한다. 행 내의 개별 셀은 스트링 내의 나머지 셀들이 가동되기 어렵게 함으로써 프로그래밍하는 동안 판독되고 검증되고, 그에 따라 스트링을 통해 흐르는 전류는 어드레스된 셀 내에 저장된 전하의 레벨에 의존한다. NAND 아키텍춰 어레이들의 예들 및 메모리 시스템의 일부로서 이들의 오퍼레이션은 미합중국 특허 제5,570,315호, 제5,774,397호, 제6,046,935호 및 제6,522,580호에서 찾게 되었다.
상기 참조 특허들에서 고찰된 바의 현행 플래쉬 EEPROM 어레이들의 전하 저장 소자들은 전형적으로 도전성의 도포된 폴리실리콘 물질로부터 형성된 가장 XD상적인 전기 도전성 플로팅 게이트들이다. 플래쉬 EEPROM 시스템들에 유용한 메모리 셀의 대체 유형은 비휘발성 방식으로 전하를 저장하는 도전성 플로팅 게이트 대신에 비도전성의 유전 물질을 이용한다. 이산화 규소, 질화 규소 및 산화 질소(ONO)로 형성된 삼층 유전체는 메모리 셀 채널 위의 반도전성 기판의 표면과 도전성 제어 게이트 사이에 샌드위치된다. 셀은 셀 채널로부터 전자들을 질화물에 주입함으로써 프로그램되고, 여기서 이들 전자들을 제한된 영역 내에서 포집 및 저장되고, 고온 홀들을 질화물 내로 주입함으로써 소거된다. 유전체 저장 소자들을 사용하는 여러 가지 특이적 셀 구조들 및 어레이들은 Harari 등의 미합중국 특허 출원 공개 제2003/09093호에 개시되어 있다.
개개의 플래쉬 EEPROM 셀들은 1 이상의 데이터 비트들로 대표되는 전하 저장 소자 또는 유닛 내에 일정량의 전하를 저장한다. 저장 소자의 전하 레벨은 그의 메모리 셀의 임계 전압(통상적으로 VT로 참고됨)을 제어하고, 이는 셀의 저장 상태의 판독에 기초하여 사용된다. 임계 전압 창은 통상적으로 메모리 셀의 2개 이상의 저장 상태 각각에 대해 하나씩 많은 범위로 분할된다. 이들 범위는 개개의 셀들의 저장 상태를 결정하게 하는 공칭 감지 레벨을 포함하는 가드밴드들에 의해 분리된다. 이들 저장 레벨들은 이웃하거나 또는 다른 관련된 메모리 셀들, 페이지들 또는 블록들에서 수행되는 프로그래밍, 판독 또는 소거 오퍼레이션들을 하전 방해한 결과로서 이동한다. 따라서, 에러 정정 코드들(EECs)은 제어기에 의해 산출되고, 프로그램되고 있는 호스트 데이터에 따라 저장되고, 데이터를 검증하기 위해 판독되는 동안 사용되고, 필요할 경우 일부 레벨의 데이터 정정을 수행한다. 또한, 전하 레벨들을 이동시키는 것은 방해 오퍼레이션들이 이들의 제한된 범위에서 완전히 벗어나 이동하게 하고 따라서 오류 데이터가 판독되게 하기 전에, 때때로 이들의 상태 범위들의 중심으로 되돌려 복구될 수 있다. 데이터 리프레쉬 또는 스크럽이라 칭하는 이러한 공정은 미합중국 특허 제5,532,962호 및 제5,909,449호에 기재되어 있다.
거의 모든 집적 회로 용도들에서와 같이, 일부 집적 회로 기능을 구현하는데 필요한 실리콘 기판 영역을 수축시키는 압력은 플래쉬 EEPROM 메모리 셀 어레이들에 의해 존재하기도 한다. 주어진 크기의 메모리 및 기타 유형의 패키지들의 저장 커패시티를 증가시키기 위해서 또는 커패시티를 증가시키고 크기를 감소시키기 위해 실리콘 기판의 주어진 영역에 저장될 수 있는 디지털 데이터의 양을 증가시키는 것이 지속적으로 요구된다. 데이터의 저장 밀도를 증가시키는 한 가지 방식은 메모리 셀 당 및(또는) 저장 유닛 또는 소자당 1비트 이상의 데이터를 저장하는 것이다. 이는 저장 소자 전하 레벨 전압 범위의 창을 2개 이상의 상태들로 분할함으로써 수행된다. 4가지 그러한 상태들의 사용은 각각의 셀이 2비트의 데이터를 저장하게 하고, 8개의 상태들은 저장 소자당 3비트의 데이터를 저장한다. 플로팅 게이트들을 사용하는 다중 상태 플래쉬 EEPROM 구조물들 및 이들의 오퍼레이션은 미합중국 특허 제5,043,940호 및 제5,172,338호에 기재되어 있으며 유전성 플로팅 게이트들을 사용하는 구조물들에 대해 상기 미합중국 특허 출원 공개 제2003/0109093호에 기재되어 있다. 다중 상태 메모리 셀 어레이의 선택된 부분들은 미합중국 특허 제5,930,167호 및 제6,456,528호에 기재된 방식으로 여러 가지 이유에서 2 상태(이진수)로 오퍼레이팅될 수도 있다.
전형적인 플래쉬 EEPROM 어레이의 메모리 셀들은 함께 소거되는 셀들의 이산적인 블록들 내로 분할된다. 즉, 소거 블록은 동시에 소거될 수 있는 최소 수의 셀들인 소거 유닛이다. 각각의 소거 블록은 전형적으로 1페이지 이상의 데이터를 저장하고, 1개 이상의 페이지는 상이한 서브-어레이들 또는 평면들에서 병렬로 프로그램되거나 판독되더라도, 페이지는 프로그래밍되거나 또는 판독되는 최소 단위이다. 각각의 페이지는 전형적으로 1개 이상의 데이터 섹터들을 저장하고, 섹터의 크기는 호스트 시스템에 의해 정의된 것이다. 일 예의 섹터는 512 바이트의 사용자 데이터를 포함하고, 자기 디스크 드라이브들에 의해 확립된 표준에 따라, 사용자 데이터에 관한 일부 바이트들의 수의 오버헤드 정보 및(또는) 이들이 저장되는 소거 블록을 포함한다. 그러한 메모리들은 전형적으로 각각의 소거 블록 내에 16, 32 이상의 페이지들에 의해 구성되고, 각각의 페이지들은 데이터의 1개 또는 단지 몇몇 호스트 섹터들을 저장한다.
메모리 어레이 내로 사용자 데이터를 프로그래밍하는 동안 병행 정도를 증가시키기 위해, 이 어레이는 전형적으로 통상적으로 평면들이라 칭해지는 서브-어레이들로 분할되고, 이는 병행 오퍼레이션을 허용하도록 자신의 데이터 레지스터들 및 기타 회로들을 포함함으로써 여러 개 또는 모든 평면들 각각으로 동시에 프로그램되거나 또는 그로부터 판독될 수 있다. 단일 집적 회로 상의 어레이는 물리적으로 평면들 내로 분할될 수 있거나, 또는 각각의 평면은 별개의 1개 이상의 집적 회로 칩들로부터 형성될 수 있다. 그러한 메모리 구현의 예들은 미합중국 특허 제5,798,968호 및 제5,890,192호에 개시되어 있다.
일부 메모리 시스템들에서, 물리적 메모리 셀들은 2개 이상의 그룹 내로 그룹화되기도 한다. 이 구역은 특정 범위의 논리적 블록 어드레스들이 매핑되는 물리적 메모리 또는 메모리 시스템의 임의의 분배된 서브셋일 수 있다. 예를 들면, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 구역당 16 메가바이트의 데이터를 저장하는 4개의 구역들 내로 분배될 수 있다. 이어서, 논리적 블록 어드레스들의 범위는 4개의 그룹으로 분할되고, 하나의 그룹은 4개의 구역들 각각의 소거 블록들에 할당된 것이다. 논리적 블록 어드레스들은 전형적인 구현으로 억제됨으로써, 각각의 데이터는 논리적 블록 어드레스들이 매팽되는 단일 물리적 구역 외부에 전혀 기입되지 않는다. 각각 그들 자신의 어드레싱, 프로그래밍 및 판독 회로들을 갖는 평면들(서브-어레이들) 내로 분할된 메모리 셀 어레이에서, 각각의 구역은 다수의 평면들로부터 소거 블록들, 전형적으로 각각의 평면들로부터 동일한 수의 소거 블록들을 포함하는 것이 바람직하다. 구역들은 우선 물리적 병진에 대한 논리 회로 등의 어드레스 관리를 단순화시키기 위해 사용되고, 보다 적은 병진 테이블들, 이들 테이블들을 유지하는데 필요한 보다 적은 RAM 메모리, 및 메모리의 현재 활성인 영역을 다루기 위한 빠른 액세스 시간을 초래하지만, 이들의 제한적인 특성 때문에 최적에 못 미치는 적은 웨어 레벨링을 초래할 수 있다.
메모리를 더욱 효율적으로 관리하기 위해, 소거 블록들은 가상의 블록들 또는 메타블록들을 형성하기 위해 함께 연결될 수 있다. 즉, 각각의 메타블록은 각각의 평면으로부터 1개의 소거 블록을 포함하도록 한정된다. 메타블록은 데이터를 프로그래밍하고 판독하기 위한 목적으로 호스트 논리 블록 어드레스에 의해 식별된다. 마찬가지로, 메타블록의 모든 소거 블록들은 함께 소거된다. 그와 같이 큰 블록들 및(또는) 메타블록들에 의해 오퍼레이팅되는 메모리 시스템의 제어기는 호스트로부터 수신된 논리 블록 어드레스들(LBAs)과 메모리 셀 어레이 내의 물리적 블록 번호들(PBNs) 사이의 병진을 포함하는 많은 기능들을 수행한다. 블록들 내의 개개의 페이지들은 전형적으로 블록 어드레스 내의 오프셋들에 의해 식별된다. 어드레스 병진은 종종 논리적 블록 번호(LBN)와 논리적 페이지의 중간 용어들의 사용을 포함한다.
메타블록에 저장된 데이터는 종종 업데이트되고, 메타블록 내에서 발생하는 업데이트 가능성은 메타블록의 데이터 용량이 증가함에 따라 증가한다. 하나의 메 타블록의 업데이트된 섹터들은 보편적으로 다른 메타블록에 기입된다. 변화되지 않은 섹터들은 보편적으로 데이터를 통합하기 위해 동일한 프로그래밍 오퍼레이션의 일부로서 원시 메타블록으로부터 다른 메타블록으로 카피되기도 한다. 대안으로, 변화되지 않은 데이터는 업데이트된 데이터와의 이후 통합이 단일 메타블록 내로 이후에 이루어질 때까지 원시 메타블록에 남겨질 수 있다.
변화되지 않은 섹터들을 카피하는 것은 카피에 필요한 시간에 부가될 수 있고, 소거 오퍼레이션이 수행될 때까지 원시 메타블록이 사용될 수 없기 때문에 메모리 어레이 내의 데이터에 의해 점유된 공간에 부가된다. 변화되지 않은 섹터들을 카피하는 것은 상이한 메타블록들 내로 호스트 파일들의 논리적 분열의 결과이다. 메타블록이 2개의 호스트 파일들의 일부들을 포함하는 경우, 파일들 중의 하나를 업데이트하는 것은 동일한 메타블록에 저장된 다른 파일의 일부를 카피하는 것을 포함하기도 한다. 메타블록들이 보다 커짐에 따라, 카피되는 부분들도 역시 커지게 된다. 따라서, 논리적 분열은 메타블록들이 더 커짐에 따라 더 큰 문제가 된다.
소거된 블록 풀에 유지된 일부 여분의 소거 블록들에 의해 큰 블록 또는 메타블록 시스템들을 오퍼레이팅시키는 것이 통상적이다. 소거 블록의 용량보다 적은 1페이지 이상의 데이터들이 업데이트될 때, 푸울로부터 소거 블록에 업데이트된 페이지들을 기입하고, 푸울 블록을 소거하기 위해 원시 소거 블록으로부터 변화되지 않은 페이지들의 데이터를 카피하는 것이 전형적이다. 이러한 기술의 변형들은 상기 미합중국 특허 제6,763,424호에 기재되어 있다. 시간이 지남에 따라, 호스트 데이터 파일들이 재기입되고 업데이트된 결과로서, 많은 소거 블록들은 유효 데이터를 포함하는 비교적 적은 수의 그의 페이지들로 종료될 수 있고, 나머지 페이지들은 더 이상 현재가 아닌 데이터를 포함한다. 어레이의 데이터 저장 용량을 효율적으로 사용할 수 있도록, 유효 데이터의 논리적으로 관련된 데이터 페이지들은 때때로 다중 소거 블록들 사이의 단편들로부터 함께 수집되고, 보다 적은 수의 소거 블록들 내로 함께 통합된다. 이러한 공정은 통상적으로 "가베지 수집"이라 칭한다.
데이터는 적응형 메타블록들 내의 메모리 어레이에 저장될 수 있다. 적응형 메타블록의 크기는 저장될 데이터로 맞춤될 수 있다. 적응형 메타블록 크기는 데이터(제어 데이터, 호스트로부터 데이터)의 특성에 기초하여 결정될 수 있거나, 또는 파일들 간의 바운더리들 등의 데이터 내의 바운더리들에 기초하여 결정될 수 있다. 데이터에 따른 적응형 메타블록들의 구성은 논리 분열의 효과를 감소시킨다.
메모리 어레이의 하나의 소거 블록 내의 데이터와 동일한 데이터를 포함하는 논리 그룹들은 논리적으로 순차적인 섹터들로부터 형성된다. 적응형 논리 블록들은 논리 그룹들로부터 형성된다. 적응형 논리 블록들은 상이한 수의 논리 그룹들을 포함할 수 있다. 개개의 적응형 논리 블록들은 메모리 어레이 내의 개개의 적응형 메타블록들에 저장된다. 적응형 메타블록 내의 소거 블록들의 수는 대응하는 적응형 논리 블록 내의 논리 그룹들의 수와 동일하다. 따라서, 적응형 메타블록은 가변적인 수의 소거 블록들을 갖는다. 메타블록의 소거 블록들은 메모리 어레이의 모든 평면들보다 적은 평면으로부터 존재할 수 있다. 1개 이상의 적응형 메타블록은 한번에 프로그램될 수 있다. 적응형 메타블록들은 저장될 데이터에 따라 형성될 수 있다. 큰 적응형 메타블록들은 프로그래밍하는 동안 높은 병행 정도를 얻도록 사용될 수 있다. 더욱 작은 적응형 메타블록들은 저장된 데이터의 효율적인 업데이팅을 허용하도록 사용될 수 있다.
적응형 논리 블록들은 적응형 논리 블록들 사이의 바운더리들이 데이터 내의 바운더리들, 예를 들면 파일들 또는 데이터의 스트림들 사이의 바운더리들을 반사하도록 형성될 수 있다. 이러한 방식으로 적응형 논리 블록들을 맞춤 제작함으로써, 메모리 어레이 내의 데이터의 카피는 감소될 수 있다. 데이터가 업데이트되는 경우, 새로운 적응형 논리 블록이 소량의 오래된 데이터에 의해 업데이트된 데이터를 유지하도록 형성될 수 있다. 따라서, 동일한 데이터가 다시 업데이트되는 경우, 카피될 필요가 있는 소량의 오래된 데이터만이 존재한다.
적응형 논리 블록이 부분적으로 충전되는 경우, 데이터는 보다 작은 적응형 논리 블록으로 카피될 수 있다. 이는 부분적으로 충전된 적응형 논리 블록이 프로그램되기 전에 행해질 수 있거나, 또는 부분적으로 충전된 적응형 논리 블록이 적응형 메타블록 내에서 프로그램된 후에 행해질 수 있고, 그 경우, 부분적으로 충전된 적응형 논리 블록을 포함하는 적응형 메타블록은 퇴물로서 마킹된다. 보다 작은 적응형 논리 블록은 메모리 어레이 내의 보다 작은 적응형 메타블록으로 프로그램된다. 따라서, 메모리 어레이의 공간이 절약된다.
업데이트 데이터를 유지하기 위해 비순차적으로 업데이트된 메타블록들(혼돈 블록들)을 사용하는 아키텍춰들에서, 적응형 메타블록이 대신 사용될 수 있다. 적응형 메타블록의 크기는 업데이트되고 있는 논리적 어드레스 범위에 따라 선택될 수 있다. 적응형 메타블록이 특정 논리 어드레스 범위로 맞춤되는 경우, 보다 적은 데이터가 카피되기 때문에 그러한 범위에서의 업데이트는 보다 효율적으로 수행될 수 있다.
적응형 메타블록들의 형성 및 저장된 데이터의 위치의 기록은 매체 관리자에 의해 수행된다. 매체 관리자는 유효 소거 블록들의 레코드들을 유지한다. 저장된 데이터의 위치들의 레코드들은 또한 매체 관리자에 의해 유지된다. 저장된 데이터의 위치들의 기록들은 각각의 논리 그룹에 대한 엔트리를 갖는 테이블들(또는 리스트들)에 유지된다. 각각의 논리 그룹에 대한 엔트리는 논리 그룹을 포함하는 적응형 메타블록 (및 대응하는 적응형 논리 블록)의 크기, 그의 적응형 논리 블록 내의 논리 그룹의 위치 및 메타블록의 소거 블록들 중의 하나의 물리적 위치를 지시한다.
비휘발성 랜덤 액세스 메모리(NVRAM)는 적응형 메타블록들 내에 데이터를 저장하는 플래쉬 메모리 어레이와 조합하여 사용될 수 있다. NVRAM은 그것이 플래쉬 메모리로 프로그램되기 전에 데이터를 유지하는 데이터 버퍼로서 사용될 수 있다. 데이터가 NVRAM에 있는 동안, 그것이 어떻게 효율적으로 프로그램될 수 있을지에 대한 결정이 이루어질 수 있다. 여러 가지 데이터 스트림들이 NVRAM에 유지될 수 있고, 효율적인 방식으로 함께 프로그램될 수 있다. NVRAM은 플래쉬 메모리 어레이의 일부 대신에 특정 데이터에 대해 대체 저장 위치를 제공할 수도 있다. 이러한 용도에서, NVRAM은 물리적 어드레스 범위를 가질 수 있음으로써 NVRAM에 저장된 논리적 그룹들은 NVRAM 물리적 어드레스 범위 내인 물리적 어드레스를 할당하였다. 논리적 그룹은 그것이 빈번히 업데이트되는 경우 NVRAM에 할당될 수 있다. 따라서, 업데이트는 플래쉬 메모리 어레이에서 카피 및 소거 없이 발생할 수 있다. NVRAM에서 데이터를 업데이트하는 것은 플래쉬 메모리에서보다 효율적이지만, 이 데이터는 비휘발성 메모리에서 이루어질 수 있는 바와 같이 전력이 상실되는 경우에 상실되지 않는다.
파일 바운더리들 등의 데이터 바운더리들은 플래쉬 메모리에 저장되어야 하는 데이터에서 발생한다. 저장될 데이터가 논리적 그룹의 유닛들에서 어드레스된 경우, 논리적 그룹들 사이의 바운더리들은 데이터 바운더리들과 일치할 수 없다. 따라서, 논리적 그룹들 및 논리적 그룹들로부터 형성된 메타그룹들(논리적 블록들)은 데이터 바운더리들을 포함할 수 있다. 큰 메타그룹들 및 메타블록들이 데이터 바운더리들을 함유하는 경우, 파일들을 업데이트하는 것은 대량의 데이터를 카피하는 것을 필요로 할 수 있다. 이는 시스템 자원들을 사용하고, 메모리 어레이로의 신규 데이터의 기입 속도를 감소시킨다.
적응형 메타블록들은 최소 크기의 적응형 메타블록들에 데이터 바운더리들을 저장하도록 형성될 수 있다. 최소 크기의 메타블록들 내의 데이터 바운더리들을 프로그래밍함으로써, 파일 내의 데이터의 후속 업데이팅 동안 데이터의 카피가 감소될 수 있다. 파일의 업데이트가 발생할 때, 파일을 포함하는 원시 메타블록들은 폐기된 데이터를 포함한다. 일부 원시 메타블록들은 업데이트된 파일의 일부가 아닌 데이터를 포함한다. 이들 데이터는 폐기될 수 없고, 따라서 원시 메타블록들이 소거되고 재사용되기 전에 신규 위치로 카피될 필요가 있다. 그러한 원시 메타블록들을 보다 작게 만들므로써, 카피되는 데이터의 양이 감소될 수 있다. 1개의 소거 블록으로 구성된 적응형 메타블록이 사용되는 경우, 데이터의 1개 미만의 논리 그룹이 카피된다. 그러한 적응형 메타블록들은 병행하여 프로그램될 수 있음으로써, 감소된 적응형 메타블록 크기는 프로그래밍하는 동안 사용되는 병렬 처리를 감소시키지 않아야 한다.
일부 원시 메타블록들은 데이터로 완전히 점유되지 않고, 예를 들면, 파일의 단부에서 데이터 바운더리가 원시 메타블록 내에 있는 경우, 데이터 바운더리 이후에 어떠한 데이터도 없다. 그러한 원시 메타블록들 내의 데이터는 최소한의 빈 공간을 갖는 데이터를 유지하는 크기의 메타블록들로 카피될 수 있다. 이는 메모리 어레이 내의 공간을 절약할 수 있다. 보다 작은 적응형 메타블록들은 병행하게 프로그램될 수 있다. 병행하여 프로그램된 적응형 메타블록들은 재배치된 데이터 및 호스트 데이터를 포함할 수 있음으로써 재배치 오퍼레이션들은 호스트 데이터가 메모리 어레이에 기입되는 동시에 수행된다.
일부 메모리 시스템들에서, 호스트는 메모리 시스템으로 호스트에 의해 전송된 데이터 내의 논리적 바운더리들(예, 파일 바운더리들 및 데이터 런 바운더리들)의 위치들에 관한 메모리 제어기에 정보를 제공할 수 있다. 호스트에 의해 제공되는 (또는 얻어지는) 논리적 바운더리 위치들에 기초하여, 데이터는 먼저 메모리 어레이 또는 NVRAM에서 중간 포맷으로 저장되지 않고, 메모리 어레이 내에 정렬된 포맷으로 직접적으로 저장될 수 있다. 논리적 바운더리들을 포함하지 않는 데이터의 일부는 최대 크기의 메타블록들 내의 메모리 어레이에 직접적으로 기입될 수 있다.
논리적 바운더리를 포함하는 데이터의 일부는 궁극적으로 최소 크기의 메타블록 내에 저장된다. 그러나, 그러한 메타블록을 자체 기입하는 것은 느릴 것이므로, 그러한 데이터의 일부는 먼저 완충될 수 있다. 직렬 플래쉬 버퍼는 메모리 어레이 내에 정렬된 방식으로 이후 기입되는 호스트로부터 데이터의 일부를 저장하도록 제공된다. 데이터가 직렬 플래쉬 버퍼로부터 카피될 때, 이들은 1회에 1개 이상의 적응형 메타블록을 기입함으로써 고도의 병행도로 기입될 수 있다. 따라서, 최소-크기 메타블록들에 할당된 데이터는 먼저 최대 병행도로 직렬 플래쉬 버퍼에 기입되고, 이후에 병행하여 다수의 최소-크기 메타블록들에 기입함으로써 고도의 병행도로 최소-크기 메타블록들로 카피될 수 있다. 이러한 방식으로, 직렬 플래쉬 버퍼는 작은 메타블록들이 사용되는 경우조차 고도의 병행도(및 그에 따른 높은 성능)를 유지하는데 조력한다. 중간 크기의 메타블록들에 대해, 데이터는 메모리 어레이에 직접적으로 기입될 수 있거나, 또는 먼저 메타블록의 크기에 따라 완충될 수 있다.
메모리에 저장된 데이터의 일부는 그 부분의 각 단부에서 논리 바운더리들이 최소 크기의 메타블록들에 저장될 때 완전히 정렬된 방식으로 저장될 것으로 고려될 수 있다. 데이터의 일부는 한쪽 단부에서 논리 바운더리가 최소 크기의 메타블록에 저장되고, 다른 단부에서 논리 바운더리가 최소 크기 메타블록에 저장되지 않는 경우 부분적으로 정렬된 방식으로 저장된다. 데이터의 일부는 어떠한 논리 바운더리도 최소 크기 메타블록에 저장되지 않는 경우 비정렬 방식으로 저장된다. 데이터의 일부가 업데이트될 때, 그것이 업데이트하는 데이터보다 높은 정렬도로 저장될 수 있다.
도 1A 및 1B는 각각 함께 오퍼레이팅되는 비휘발성 메모리 및 호스트 시스템의 블록도이고;
도 2는 도 1A의 메모리 어레이의 제1 실시예 체제를 예시하며;
도 3은 도 1A의 메모리 어레이에 저장된 바의 오버헤드 데이터를 갖는 일 예의 호스트 데이터 섹터를 보여주고;
도 4는 도 1A의 메모리 어레이의 제2 실시예 체제를 예시하며;
도 5는 도 1A의 메모리 어레이의 제3 실시예 체제를 예시하고;
도 6은 도 5의 그것과 같은 메모리 어레이의 메타블록의 일 예를 예시하며;
도 7은 도 6에 나타낸 바와 같이 메타블록에 저장된 논리 블록의 예를 보여주고;
도 8은 원시 데이터가 메모리 어레이 내의 메타블록들에 저장되는 경우 데이터 업데이트를 보여주며;
도 9A는 메모리 어레이 내의 적응형 메타블록 내에 저장되는 적응형 논리 블록을 보여주고;
도 9B는 도 9A의 적응형 논리 블록들로 논리적 그룹들에 대한 섹터들의 논리적 매핑을 보여주며;
도 10은 2개의 적응형 메타블록들로의 2개의 적응형 논리 블록들의 병행 프로그래밍을 보여주고;
도 11은 여러 구성의 적응형 논리 블록들로 매핑된 논리 그룹들을 보여주며;
도 12A는 새로운 적응형 논리 블록들에서 업데이트되고 저장된 적응형 논리 블록들에 저장된 데이터를 보여주고;
도 12B는 데이터 스트림들에 부합하도록 재매핑된 적응형 논리 블록들의 일 예를 보여주며;
도 12C는 데이터 스트림들에 부합하도록 재매핑된 적응형 논리 블록들의 다른 예를 보여주고;
도 13은 보다 작은 적응형 논리 블록으로 재매핑되는 부분적으로 충전된 적응형 논리 블록을 보여주며;
도 14는 업데이트되고 있는 논리적 어드레스 범위로 채택된 데이터를 업데이트하기 위해 사용된 적응형 논리 블록을 보여주고;
도 15A는 메모리 어레이의 적응형 메타블록에 저장된 적응형 논리 블록을 보여주며;
도 15B는 메모리 어레이에 저장된 도 15A의 적응형 논리 블록의 논리 그룹의 섹터들을 보여주고;
도 15C는 메모리 어레이에 저장된 논리 그룹의 섹터들의 다른 예를 보여주며;
도 15D는 2개의 적응형 메타블록들이 병행하여 프로그램되는 경우 섹터들의 배치의 일 예를 보여주고;
도 15E는 병행하는 3개의 메타 블록들의 프로그래밍 및 메타블록들 내의 페이지들의 결과의 배치의 일 예를 보여주며;
도 15F는 제1의 업데이트된 섹터가 적응형 메타블록 내의 제1 섹터가 아닌 경우 데이터를 업데이트한 일 예를 보여주고;
도 16은 메모리 어레이의 적응형 메타블록에 저장된 논리 그룹들의 위치들을 기록한 표를 보여주며;
도 17은 적응형 메타블록 아키텍춰를 관리하기 위해 사용될 수 있는 매체 관리자를 보여주고;
도 18A는 소거 블록 관리 계통도의 일 예를 보여주는 블록도이며;
도 18B는 1개의 유효 섹터 및 다수의 폐기된 섹터들을 포함하는 다중 섹터들을 포함하는 EBL 블록을 보여주고;
도 18C는 어드레스 표 관리 계통도의 일 예를 보여주는 블록도이며;
도 18D는 부트 어드레스들 및 부트 블록들을 포함하는 데이터 구조를 보여주고;
도 19는 NVRAM을 포함하는 메모리 시스템을 보여주며;
도 20은 NVRAM을 사용하여 메모리 어레이에 효율적으로 저장된 2개의 데이터 스트림들을 보여주고;
도 21은 NVRAM에 저장된 업데이트된 데이터를 보여주며;
도 22는 데이터 런들로 구성된 파일들을 보여주고;
도 23은 데이터 런 내의 파일 바운더리를 보여주며;
도 24는 데이터 유닛들의 계통도를 보여주고;
도 25는 메타그룹들로 매핑되는 2개의 데이터 런들을 보여주며;
도 26은 메타그룹들로 매핑되는 파일 바운더리를 갖는 데이터 런을 보여주고;
도 27은 데이터 바운더리 관리에 의해 플래쉬 메모리 내에 데이터를 저장하는 2개의 스킴들을 보여주며;
도 28A는 도 25의 메타 그룹들 A-D를 저장하는 베타블록들 A-D로 구성된 프로그램 블록도를 보여주고;
도 28B는 도28A의 메타블록들 A-D 내의 섹터들의 구성을 보여주며;
도 28C는 프로그램 블록으로 전이되는 누산기의 섹터들을 보여주고;
도 29A는 완전 메타그룹을 보여주며;
도 29B는 부분 메타그룹을 보여주고;
도 29C는 짧은 메타그룹을 보여주며;
도 29D는 시작 메타그룹을 보여주고;
도 29E넌 멀티파일 메타그룹을 보여주며;
도 30A는 부분 메타그룹의 재매핑을 보여주고;
도 30B는 짧은 메타그룹의 재매핑을 보여주며;
도 30C는 시작 메타그룹의 재매핑을 보여주고;
도 30D는 멀티파일 메타그룹의 재매핑을 보여주며;
도 31은 호스트 데이터 및 재배치된 데이터의 부분 프로그래밍을 보여주고;
도 32는 직렬 플래쉬 버퍼를 사용하는 호스트 데이터의 저장을 보여주며;
도 33A는 호스트로부터 데이터를 저장하는 대안의 방법들을 보여주고;
도 33B는 호스트로부터 데이터의 기입으로 카피된 원시 데이터에 의한 도33A의 대체 방법들을 보여주며;
도 34는 호스트로부터 데이터를 저장하는 대체 스킴을 보여주고;
도 35A는 비정렬에 의해 저장된 데이터 런을 보여주며;
도 35B는 부분 정렬에 의해 저장된 데이터 런을 보여주고;
도 35C는 완전 정렬에 의해 저장된 데이터 런을 보여주며;
도 35D는 데이터 런의 전형적인 구조를 보여주고;
도 35E는 상이한 길이의 데이터 런들의 전형적인 구조들을 보여주며;
도 36은 데이터 런에서 데이터를 업데이트하는 동안 발생할 수 있는 병진의 예들을 보여주고;
도 37은 완전-대-완전 병진의 일 예를 보여주며;
도 38은 부분-대-완전 병진의 일 예를 보여주고;
도 39는 부분-대-부분 병진의 일 예를 보여주며;
도 40은 비정렬로부터 완전 정렬로 병진의 일 예를 보여주며;
도 41은 비정렬로부터 부분 정렬로 병진의 일 예를 보여주고;
도 42는 비정렬로부터 부분 정렬로 병진의 제2 예를 보여주며;
도 43은 비정렬 대 비정렬의 일 예를 보여주고;
도 44는 특정 데이터 구조들 및 이 데이터 구조들에 관련하여 수행될 수 있는 오퍼레이션들을 열거하며;
도 45는 본 발명의 일 실시 형태에 따라 섹터들을 저장하는 것을 보여주는 흐름도이고;
도 46은 도 45의 섹터들의 기입을 보여주는 흐름도이며;
도 47은 본 발명의 일 실시예에 따라 데이터 런을 폐쇄하는 것을 보여주는 흐름도이다.
전형적인 실시 형태들의 설명
메모리 아키텍춰들 및 이들의 오퍼레이션
처음으로 도 1A를 참조하여, 플래쉬 메모리는 메모리 셀 어레이 및 제어기를 포함한다. 도시된 실시예에서, 2개의 집적 회로 디바이스들(칩들)(11 및 13)은 메모리 셀들의 어레이(15) 및 여러 가지 논리 회로들(17)을 포함한다. 논리 회로들(17)은 데이터, 명령 및 상태 회로들을 통해 별개의 칩 상에서 제어기(19)와 인터페이스되고, 어드레싱, 데이터 전달 및 감지 및 어레이(13)에 대한 다른 지원을 제공하기도 한다. 많은 메모리 어레이 칩들은 제공된 저장 용량에 따라 하나에서 다수일 수 있다. 메모리 셀 어레이는 단일 칩 상에 위치할 수 있거나, 또는 다수의 침들 상의 메모리 셀들로 구성될 수 있다. 제어기 및 부분 또는 전체 어레이는 단일 집적 회로 칩 상으로 선택적으로 조합될 수 있지만, 이는 현재 경제적 대안은 아니다.
전형적인 제어기(19)는 마이크로프로세서(21), 주로 펌웨어를 저장하는 판독 전용 메모리(ROM)(23) 및 주로 메모리 칩들(11 및 13)에 기입되거나 또는 그로부터 판독되는 사용자 데이터의 임시 저장을 위한 버퍼 메모리(RAM)(25)를 포함한다. 버퍼 메모리(25)는 휘발성 또는 비휘발성 메모리일 수 있다. 회로들(27)은 메모리 어레이 칩(들)과 인터페이스되고, 회로들(29)은 접속(31)을 통해 호스트와 인터페이스된다. 데이터의 통합은 이 실시예에서 코드를 산출하는 것에 전용된 회로들(33)에 의해 ECC를 산출함으로써 결정된다. 사용자 데이터가 저장을 위해 호스트로부터 플래쉬 메모리 어레이로 전송됨에 따라, 회로는 데이터를부터 ECC를 산출하고, 코드는 메모리에 저장된다. 그 사용자 데이터가 이후에 메모리로부터 판독될 때, 이들 데이터는 다시 회로(33)을 통해 통과되고, 이 회로는 동일한 알고리즘에 의해 ECC를 산출하고, 데이터에 의해 산출되고 저장되는 것과 그 코드를 비교한다. 이들 데이터를 비교하는 경우, 데이터의 통합성은 확고하다. 이들 데이터가 이용되는 특정 ECC 알고리즘에 따라 상이한 경우, 알고리즘에 의해 지원되는 수에 이르는 에러의 비트들은 식별되고 정정될 수 있다.
도 1A의 메모리의 접속부들(31)은 도 1B에 주어진 예인 호스트 시스템의 접속부들(31')과 일치한다. 호스트와 도 1A의 메모리 사이의 데이터 전송들은 인터페이스 회로(35)를 통해서 이루어진다. 전형적인 호스트는 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함하기도 한다. 다른 회로 및 서브시스템들(43)은 종종 특정 호스트 시스템에 따라 큰 용량의 자기 디스크 저장 디스크 드라이브, 키보드용 인터페이스 회로들, 모니터 등을 포함한다. 그러한 호스트들의 일부 예들은 데스크탑 컴퓨터, 랩탑 컴퓨터, 휴대용 컴퓨터, 팜탑 컴퓨터, 개인용 휴대 정보 단말기(PDAs), MP3 및 기타 오디오 플레이어, 디지털 카메라, 비디오 카메라, 전자 게임기, 무선 및 유선 전화 디바이스, 응답기, 음성 레코더, 네트워크 라우터 등을 포함한다.
도 1A의 메모리는 도 1B의 호스트와 제거 가능하게 접속될 수 있는 형태의 제어기 및 모든 그의 메모리 어레이 회로 디바이스들을 포함하는 작은 동봉된 카드로서 구현될 수 있다. 즉, 접속부들(31 및 31')의 짝짓기는 카드가 단속되어 다른 호스트로 이동되게 하거나, 또는 호스트에 다른 카드를 접속시킴으로써 대체되게 한다. 대안으로, 메모리 어레이 디바이스들은 제어기 및 접속부들(31)을 포함하는 카드와 전기적으로 및 기계적으로 접속 가능한 별개의 카드 내에 동봉될 수 있다. 추가의 대안으로서, 도 1A의 메모리는 도 1B의 호스트 내에 내장될 수 있고, 여기서 접속부들(31 및 31')은 영구적으로 만들어진다. 이 경우, 메모리는 보편적으로 다른 성분들과 함께 호스트의 인클로저 내에 포함된다. 추가의 대안으로서, 메모리 칩(11) 등의 메모리 칩은 이들 사이의 메모리 제어기 없이 호스트 시스템의 접속부들(31')에 직접적으로 접속될 수 있다. 이러한 경우에, 메모리 제어기의 기능들은 호스트 시스템의 마이크로프로세서(37)에 의해 수행된다.
도 2는 메모리 셀들이 소거 블록들 내로 그룹화되는 경우 메모리 어레이의 일부를 예시하고, 각각의 소거 블록 내의 셀들은 보편적으로 동시에 단일 소거 오퍼레이션의 일부로서 함께 소거 가능한 것이다. 소거 블록은 최소 소거 단위이다.
도 2의 개별 메모리 셀 소거 블록들의 크기는 변화할 수 있지만, 하나의 상 업적으로 실시되는 형태는 개별 소거 블록 내에 데이터의 단일 섹터를 포함한다. 그러한 데이터 섹터의 콘텐트들은 도 3에 예시되어 있다. 사용자 데이터(51)는 정형적으로 512바이트이다. 사용자 데이터(51) 외에, 사용자 데이터로부터 산출된 ECC(53), 섹터 데이터 및(또는) 섹터가 프로그램되는 소거 블록과 관련된 파라메터들(55) 및 이 파라메터들(55)로부터 산출되는 ECC(57)를 포함하는 오버헤드 데이터가 존재하고, 임의의 다른 오버헤드 데이터가 포함될 수도 있다. 대안으로, 단일 ECC는 사용자 데이터(51) 및 파라메터들(55) 모두로부터 산출될 수 있다.
파라메터들(55)은 소거 블록에 의해 경험되는 프로그램/소거 사이클들의 수와 관련된 양들을 포함할 수 있고, 이러한 정량은 각각의 소거 주기 또는 일부 주기들 후에 업데이트되는 것이다. 이러한 경험 정량이 웨어 레벨링 알고리즘에 사용될 때, 논리 블록 어드레스들은 모든 소거 블록들의 용법(웨어)에서 심지어 벗어나도록 상이한 물리적 블록 어드레스들로 규칙적으로 재매핑된다. 경험 정량의 다른 사용은 상이한 소거 블록들에 의해 경험되는 주기 횟수의 함수로서 프로그래밍, 판독 및(또는) 소거의 전압들 및 기타 파라메터들을 변화시키는 것이다.
이 파라메터들(55)은 이들의 "회전"이라 칭하는 메모리 셀들의 저장 상태들 각각에 할당된 비트 값들의 지시를 포함할 수도 있다. 이는 또한 웨어 레벨링의 유익한 효과를 갖기도 한다. 1개 이상의 플래그들은 상태 또는 상태들을 지시하는 파라메터들(55)에 포함될 수도 있다. 소거 블록을 프로그래밍 및(또는) 소거하기 위해 사용되어야 하는 전압 레벨들의 지시는 파라메터들(55) 내에 저장될 수도 있고, 이들 전압들은 소거 블록 및 기타 인자들 변화에 의해 경험되는 주기들의 수로 서 업데이트되는 것이다. 파라메터들(55)의 다른 예들은 소거 블록 내의 임의의 결함 셀들의 식별, 이러한 물리적 블록 내로 매핑되는 데이터의 논리 어드레스 및 주요 소거 블록이 결함있는 경우에 임의의 치환 소거 블록의 어드레스를 포함한다. 임의의 메모리 시스템에 사용된 파라메터들(55)의 특정 조합은 그 디자인에 따라 변화할 것이다. 또한, 오버헤드 데이터의 일부 또는 전부는 오버헤드 데이터가 속하거나 또는 사용자 데이터를 포함하는 소거 블록에서 보다는 오히려 그러한 함수에 전용된 소거 블록들에 저장될 수 있다.
도 2의 단일 데이터 섹터 소거 블록은 도 4의 다중-섹터 소거 블록과 상이하다. 여전히 최소 소거 유닛인 일 예의 소거 블록(59)은 4개의 페이지들(0-3)을 포함하고, 이들 각각은 최소 프로그래밍 단위이다. 데이터의 1개 이상의 호스트 섹터들은 보편적으로 데이터 섹터로부터 산출된 ECC를 적어도 포함하는 오버헤드 데이터와 함께 각각의 페이지에 저장되고, 도 3의 데이터 섹터의 형태일 수 있다.
전체 소거 블록의 데이터의 재기입은 보편적으로 소거 블록 푸울의 유효 소거 블록 내로 새로운 데이터를 프로그래밍하는 것을 포함하고, 원시 소거 블록은 이어서 소거되고 소거 푸울 내에 위치한다. 모든 페이지에 못미치는 페이지의 소거 블록의 데이터가 업데이트될 때, 업데이트된 데이터는 전형적으로 소거된 블록 푸울로부터 소거 블록의 페이지에 저장되고, 나머지 변화되지 않은 페이지들의 데이터는 원시 소거 블록으로부터 새로운 소거 블록으로 카피된다. 이어서, 원시 소거 블록은 소거된다. 이와 같이 큰 블록 관리 기술의 변화는 원시 소거 블록으로부터 데이터를 이동시키거나 또는 그것을 소거함이 없이 다른 소거 블록의 페이지 내로 업데이트된 데이터를 기입하는 것을 포함한다. 이는 동일한 논리 어드레스를 갖는 다중 페이지들을 초래한다. 데이터의 가장 최근의 페이지는 섹터 또는 페이지 오버헤드 데이터 내의 필드로서 기록되는 프로그래밍 시점 등의 일부 편리한 기술에 의해 식별된다.
추가의 다중-섹터 소거 블록 배열은 도 5에 예시된다. 여기서, 전체 메모리 셀 어레이는 2개 이상의 평면들로 물리적으로 분할되고, 4개의 평면들(0-3)이 예시되어 있다. 각각의 평면은 다른 평면들과 독립적으로 크게 오퍼레이팅될 수 있도록 하기 위해 그 자신의 데이터 레지스터들, 센스 증폭기들, 어드레싱 디코더들 등을 갖는다. 모든 평면들은 단일 집적 회로 디바이스 또는 다중 디바이스들 상에 제공될 수 있고, 일 예는 1개 이상의 독특한 집적 회로 디바이스들로부터 각각의 평면을 형성하는 것이다. 도 5의 예시적인 시스템의 각각의 소거 블록은 16개의 페이지들(P0-P15)을 포함하고, 각각의 페이지는 1, 2 또는 그 이상의 호스트 섹터들 및 일부 오버헤드 데이터의 용량을 갖는다.
메타블록들
또 다른 메모리 셀 배열은 도 6에 예시된다. 각각의 평면은 많은 수의 소거 블록들을 포함한다. 오퍼레이션의 병행도를 증가시키기 위해, 상이한 평면들 내의 소거 블록들은 메타블록들을 형성하도록 논리적으로 링크된다. 하나의 그러한 메타블록은 도 6에 예시된다. 각각의 메타블록은 논리적으로 어드레스 가능하고, 메모리 제어기는 개별 메타블록들을 형성하는 소거 블록들의 트랙을 할당하고 유지한다. 호스트 시스템은 섹터들의 스트림의 형태로 데이터를 제공한다. 섹터들의 이 러한 스트림은 논리 블록들 내로 분할된다. 여기서, 논리 블록은 메모리 어레이의 메타블록에 포함된 바와 같이 데이터의 동일한 수의 섹터들을 포함하는 데이터의 논리 유닛이다. 메모리 제어기는 각각의 논리 블록이 저장되는 위치의 레코드를 유지한다. 도 6의 그러한 논리 블록(61)은 예를 들면 메타블록을 구성하는 블록들의 물리적 블록 번호들(PBNs) 내로 제어기에 의해 매핑되는 논리적 블록 어드레스들(LBA)에 의해 식별된다. 메타블록의 모든 블록들은 함께 소거되고, 각각의 블록으로부터 페이지들은 일반적으로 동시에 프로그램되고 판독된다.
도 7은 메모리 어레이에 저장된 데이터를 보여준다. 데이터는 데이터(75)의 세터들의 스트림의 형태로 호스트에 의해 전송된다. 섹터들은 논리적 블록들(71, 72) 내로 형성된다. 이어서, 논리 블록들은 메타블록들 내로 프로그램된다. 예를 들면, 논리 블록(72)은 메타블록(74)으로 프로그램된다. 도 7은 4개의 평면들을 갖는 메모리 어레이(76)를 보여준다. 메타블록(74)은 평면들(0, 1, 2 및 3) 각각으로부터 소거 블록을 갖는다. 메타블록(74)은 모든 평면들이 병행하여 프로그램될 수 있도록 어레이의 모든 평면들을 가로질러 확장한다. 따라서, 메타블록의 크기는 전형적으로 어레이 내의 평면들의 수에 의해 결정된다. 또한, 대응하는 논리 블록들의 크기는 이러한 크기에 의해 결정된다.
도 8은 데이터가 메타블록들 내에 저장되는 경우 메모리 어레이에서 업데이트된 데이터를 보여준다. 업데이트된 데이터 섹터들(81)은 메모리 어레이에 저장되도록 호스트로부터 수신된다. 업데이트된 데이터 섹터들(81)은 논리 블록들(82, 83)에서 원시 데이터 섹터들에 대응한다. 논리 블록들(82, 83)에서 원시 데이터는 메모리 어레이(89)의 메타블록들(84, 85)에 저장된다. 따라서, 메타블록(84) 내의 섹터들의 일부 및 메타블록(85) 내의 섹터들의 일부는 업데이트될 필요가 있는 한편, 다른 것들은 그렇지 않다. 업데이팅은 업데이트되어야 할 필요가 없는 메타블록들(84, 85) 내의 원시 섹터들과 업데이트된 데이터 섹터들(81)을 조합함으로써 행해질 수 있다. 이어서, 이들 조합된 데이터는 대체 메타블록들(86, 87)에 기입되고, 원시 메타블록들(84, 85)은 폐기된 것으로 마킹된다. 폐기 메타블록들(84, 85)은 결국 소거되고, 가베지 수집 동안 다시 소거 및 제조된다. 업데이트된 데이터 섹터들(81)과 원시 섹터들을 조합하는 것은 데이터가 수신될 때 행해질 수 있다. 대안으로, 업데이트된 데이터(81)의 섹터들은 다른 위치에 기입될 수 있고, 가베지 수집의 일부로서 이후 시점에 원시 데이터와 조합될 수 있다. 큰 메타블록들은 보다 큰 병행도 때문에 보다 빠른 프로그래밍을 허용하고, 큰 메타블록들에 저장된 데이터를 업데이트하는 것은 소량의 신규 데이터만이 수신된 경우에 조차 대량의 데이터를 카피하는 것을 포함한다. 메타블록 내에서 신규 데이터 및 원시 데이터를 통합하는 것은 가베지 수집 동안 현저한 오버헤드를 부과할 수 있다.
적응형 메타블록들
도 9A는 메모리 어레이에 데이터를 저장하기 위해 사용된 적응형 메타블록(98)의 일 예를 나타낸다. 데이터는 데이터(99)의 섹터들의 스트림의 형태로 수신된다. 섹터들은 논리 그룹들(91, 92, 93)을 포함하는 논리 그룹들 내로 형성된다. 논리 그룹은 메모리 어레이의 하나의 소거 블록 내에 저장된 데이터의 양과 동일한 데이터의 논리 유닛이다. 논리 그룹은 호스트로부터 수신된 논리적으로 순 사 섹터들로부터 형성된다. 각각의 논리 그룹은 특정 논리 어드레스 범위로 형성된다. 따라서, 논리 그룹은 많은 섹터들을 포함할 수 있지만 일반적으로 적응형 메타블록보다 작은 데이터의 중간 논리 유닛이다.
논리 그룹들은 적응형 논리 블록들로 형성된다. 적응형 논리 블록들 또는 논리 블록들은 "메타그룹들"이라 칭할 수도 있다. "메타그룹"이라는 용어는 "적응형 논리 블록"이라는 용어와 등가인 것으로 고려된다. "적응형 논리 블록"이라는 용어는 일반적으로 본원에 사용된다. 적응형 논리 블록은 가변적인 수의 논리 그룹들을 포함한다. 따라서, 도 9A에서 적응형 논리 블록(95)은 3개의 논리 그룹들(91, 92, 93)을 포함한다. 적응형 논리 블록(96)은 2개의 논리 그룹들을 포함하고, 논리 블록(97)은 4개의 논리 그룹들을 포함한다. 적응형 논리 블록(95)은 적응형 메타블록(98)으로 프로그램된다. 적응형 논리 블록(95)은 3개의 논리 그룹들(91, 92, 930을 포함하고, 대응하게는, 적응형 논리 블록(98)은 3개의 소거 블록들(911, 912, 913)을 포함한다. 따라서, 적응형 논리 블록(98)은 단지 평면(0, 2 및 3)인 어레이의 각각의 평면으로부터 소거 블록들을 갖는다. 적응형 논리 블록(98)은 평면 1로부터 어떠한 소거 블록도 갖지 않는다. 도 9B는 섹터들이 논리 그룹들(91, 92, 93)으로 어떻게 매핑되는지 상세히 보여준다. 각각의 논리 그룹(91, 92, 93)은 데이터의 n개의 섹터들을 함유한다. 도 9B는 적응형 논리 블록(95)으로 매핑되는 논리 그룹(91, 92, 93)을 보여주기도 한다. 적응형 논리 블록은 메모리 어레이 내의 대응하는 크기의 적응형 메타블록으로 프로그램된다.
메타블록 아키텍춰의 일부 실시예들에서, 메타블록 크기는 고정된다. 어레 이 내의 평면들의 수는 메타블록의 크기를 결정할 수 있다. 이들 실시예들에서, 논리 블록들의 크기는 역시 고정되고, 섹터들은 소정의 형식으로 논리 블록들로 매핑된다. 따라서, 논리 어드레스 공간은 고정된 논리 어드레스 범위 및 고정된 바운더리 위치를 갖는 동일한 크기의 논리 블록들로 분할된다. 이와 대조적으로, 적응형 메타블록들을 사용하는 아키텍춰들에서, 적응형 논리 블록들은 고정된 크기들을 갖지 않고, 적응형 논리 블록들은 논리 어드레스 공간의 소정의 범위로 제한되지 않는다. 대신에, 적응형 논리 블록들은 다양한 크기일 수 있고, 논리 어드레스 공간의 다양한 범위에 걸쳐 확장하도록 형성될 수 있다. 논리 그룹들의 형성은 여러 가지 크기의 적응형 논리 블록들이 형성될 수 있는 중간 데이터 단위 형태를 제공함으로써 적응형 메타블록 아키텍춰를 고무시킨다. 따라서, 적응형 메타블록은 고정된 크기를 갖지 않은 메타블록의 예이고, 적응형 메타 블록은 고정된 크기를 갖지 않는 논리 블록의 일 예이다.
적응형 메타블록을 형성하기 위해 사용된 평면들은 어레이의 소거 블록들의 효율적인 사용을 제공하는 알고리즘에 따라 선택될 수 있다. 평면들은 평면 내의 유효 소거 블록들의 수에 기초하고, 특정 평면이 이전 오퍼레이션으로부터 여전히 분주한지 여부에 따라 상이한 우선권이 주어질 수 있다. 또한, 카피 오퍼레이션이 평면 내에서 수행될 수 있도록 업데이트되고 있는 물질에 대해 사용되는 바와 같이 신규 물질에 대해 동일한 평면들을 사용하는 것이 고려된다. 하나의 평면 내의 데이터의 그러한 카피(온-칩 카피)는 일부 아키텍춰들에서 보다 효율적일 수 있다. 일반적으로, 선택된 평면들 내의 특정 소거 블록들의 선택은 중요하지 않다.
상이한 크기의 적응형 메타블록들이 갖는 하나의 결과는 일부 적응형 메타블록들이 어레이의 모든 평면으로부터 소거 블록을 포함할 수 없다는 것이다. 그러한 적응형 메타블록이 개별적으로 프로그램되는 경우, 프로그래밍은 최대로 가능한 병행도를 사용하지 않는다. 예를 들면, 도 9A에서, 평면(1)은 도시된 오퍼레이션에서 프로그램되지 않는다. 프로그래밍 속도를 증가시키기 위해 가능한 최대 병행도로 프로그래밍하는 것이 일반적으로 바람직하다. 보다 적은 평면들로의 프로그래밍은 비효율성을 초래한다. 이는 특히 적응형 메타블록들이 작지만 어레이 내에 많은 평면들이 존재할 때 그러하다. 그러나, 보다 작은 적응형 메타블록들에 의해 높은 병행도를 유지하는 것은 1회에 1개 이상의 적응형 메타블록을 프로그래밍함으로써 가능하다.
도 10은 병행하여 프로그래밍되고 있는 2개의 적응형 메타블록들(1030, 1040)을 보여준다. 메타블록들(1030, 1040) 내의 데이터는 플래쉬 메모리 내에 재위치된 호스트 또는 데이터에 의해 공급된 업데이트된 데이트일 수 있다. 도 10의 메모리 어레이(1005)는 6개의 평면들을 갖는다. 적응형 논리 블록(1001)은 3개의 논리 그룹들(1010 - 1012)을 포함한다. 따라서, 대응하는 메타블록(1040)은 메모리 어레이의 3개의 평면들로부터 3개의 소거 블록들(1041, 1042, 1043)을 필요로 한다. 적응형 논리 블록(1001)이 그 자체에 대해 프로그램된 경우, 단지 3개의 평면들이 사용될 수 있고, 다른 3개의 평면들은 유휴상태일 수 있다. 그러나, 적응형 논리 블록(1002)은 적응형 논리 블록(1001)과 병행하여 프로그래밍됨으로써 6개중 5개의 평면들이 사용된다. 따라서, 어레이 내의 평면들의 수보다 훨씬 적은 소 거 블록들을 포함하는 적응형 메타블록들에 의해서조차 고도의 병행도가 달성될 수 있다.
알고리즘은 여러 기준에 따른 평면들을 할당함으로써 적응형 논리 블록(1001)은 평면들(1, 2 및 5) 내의 소거 블록들로 프로그램되는 한편, 적응형 논리 블록(1002)은 평면들(0 및 4) 내의 소거 블록들로 프로그램된다. 평면(3) 내의 어떠한 소거 블록도 이 오퍼레이션에서 프로그램되지 않는다. 최대 병행도가 바람직하지만, 6개의 평면들 모두가 모든 프로그래밍 오퍼레이션에서 함께 프로그램될 수 없다. 평면은 이 평면 내의 어떠한 소거 블록들도 이용되지 않는 경우 프로그램될 수 없다. 평면 내에서 매우 적은 수의 소거 블록들이 이용되는 경우, 그것은 평면들이 프로그래밍을 위해 선택될 때 낮은 우선권을 할당받는다. 여기서, 적응형 논리 블록들(1001 및 1002)을 저장하기 위해 5개의 소거 블록들 만이 필요하다. 따라서, 5개의 평면들 만이 선택되고, 평면(3)은 선택되지 않는다. 평면(3)은 이 오퍼레이션에서 가장 낮은 우선권을 갖는 평면이다. 그러나, 우선권은 다음 프로그램 오퍼레이션이 발생할 때 재평가될 수 있다. 우선권들은 평면들(0, 1, 2, 4, 5) 각각 내의 1개 이상의 블록이 사용되었기 때문에 다음 오퍼레이션을 위해 변화될 수 있었다. 따라서, 평면(3)은 이 평면(3)에서 이용되는 소거 블록들이 존재하는 경우 순차 프로그래밍 오퍼레이션에 사용될 수 있다. 이러한 알고리즘은 상이한 평면들에 사용된 소거 블록들의 수와 균형을 이루므로써 특정 평면은 보다 신속히 채워지지 않고 이용될 수 없게 된다.
개개의 적응형 메타블록에 대해 사용된 평면들은 물리적으로 인접하지 않아 야 한다. 예를 들면, 도 10의 적응형 메타블록(1030)은 평면들(0 및 4)에서 소거 블록들(1044, 1045)을 갖는 한편, 적응형 메타블록(1040)은 평면들(1, 2 및 5)에서 소거 블록들(1041-1043)을 갖는다. 병행하여 프로그램된 적응형 논리 블록들은 논리적으로 순차적일 필요는 없고, 논리적으로 별개의 적응형 논리 블록들은 병행하여 프로그램될 수 있다. 예를 들면, 적응형 논리 블록(1001 및 1002)은 논리적으로 순차적이지 않다. 이들은 적응형 논리 블록(1003)에 의해 분리된다.
적응형 메타블록 내의 모든 데이터가 그 데이터의 업데이트되거나 또는 재위치된 버전들로 대체되고, 폐기될 때, 적응형 메타블록을 형성하는 소거 블록들은 소거되어야 한다. 그러나, 적응형 메타블록은 어레이의 모든 평면으로부터 소거 블록을 포함할 수 없고, 그러한 적응형 메타블록이 개별적으로 소거될 때, 그 소거는 최대 병행도를 사용하지 않는다. 따라서, 최대 속도는 데이터를 소거하기 위해 달성되지 않고, 따라서 메모리 시스템의 효과적인 프로그래밍 속도는 가능한 최대 속도로부터 감소되고, 그 이유는 데이터의 프로그래밍이 통상의 용도의 플래쉬 메모리 칩들 내의 소거 오퍼레이션 동안 수행될 수 없기 때문이다. 최대 소거 병행도를 달성하기 위해, 각각의 평면으로부터 하나의 소거 블록이 입수될 때까지, 이는 적응형 메타블록을 형성하는 소거 블록들의 소거를 지연시킴으로써 극복될 수 있다. 소거에 이용되는 소거 블록들은 리스트에 유지되고, 블록들의 세트는 최대로 가능한 병행도를 달성하기 위해 주기적으로 소거되도록 계획된다. 블록들의 보자 적은 세트의 소거는 리스트가 일부 평면들 내에 어떠한 블록들도 함유하지 않을 때 수행될 수 있다.
도 11은 적응형 메타블록들을 사용하는 일부 가능한 데이터 저장 배치들을 보여준다. 도 11은 섹터들 내로 유입되는 데이터를 논리 그룹들로 매핑하고, 논리 그룹들을 적응형 논리 블록들로 매핑하는 것을 보여준다. 이렇나 매핑은 단지 논리적인 한편, 적응형 논리 블록들은 메모리 어레이의 적응형 블록들로 프로그래밍될 수 있음이 이해될 것이다. 전형적으로, 데이터는 먼저 최대 병형도로 저장된 섹터들의 스트림으로서 수신된다. 따라서, 이 메모리 시스템은 초기 기입하는 동안 도 7에 기재된 시스템과 같이 행동할 수 있다. 도 11은 적응형 논리 블록들(1101-1103)을 보여주고, 각각의 적응형 논리 블록(1101-1103)은 4개의 논리 그룹들을 갖는다. 따라서, 논리 블록들(1101-1103)은 4개의 평면들을 갖는 메모리 어레이에 대해 최대 크기로 되어 있다.
이후 시점에, 원시 적응형 논리 블록들은 논리 그룹들을 재매핑함으로써 신규한 적응형 논리 블록들로 대체될 수 있다. 예를 들면, 도 11의 제1 업데이트에서, 적응형 논리 블록(1101)은 2개의 적응형 논리 블록들(1110 및 1111)로 대체된다. 따라서, 단일 적응형 논리 블록은 2개의 보다 작은 적응형 논리 블록들로 대체되고, 논리 블록들 사이의 바운더리는 이전에 어떠한 바운더리도 없었던 경우에 형성된다. 적응형 논리 블록(1113)은 제1 업데이트 동안 생성된다. 적응형 논리 블록(1113)는 적응형 논리 블록(1103)의 이전 부분인 논리 그룹(1122) 및 적응형 논리 블록(1102)의 이전 부분인 논리 그룹들(1120, 1121)을 포함한다. 따라서, 적응형 논리 블록(1113)은 적응형 논리 블록들(1102 및 1103) 사이에 바운더리를 이미 포함하는 논리 어드레스 범위에 걸쳐 확장한다. 적응형 논리 블록들은 조합되 어 보다 큰 적응형 논리 블록들을 형성할 수도 있다. 도 11의 제2 업데이트에서, 논리 그룹들(1111 및 1112)은 조합되어 논리 그룹(1115)을 형성한다. 여기서, 적응형 논리 블록(1115)은 적응형 논리 블록들(1111 및 1112)에 의해 이미 점유된 논리 어드레스 범위에 걸쳐 확장한다. 따라서, 적응형 논리 블록들은 적응형 논리 그룹들의 상이한 조합들로부터 형성될 수 있다. 적응형 논리 블록은 하나의 논리 그룹으로부터 최대수의 논리 그룹으로 임의의 크기일 수 있다. 최대수의 논리 그룹들은 어레이 내의 평면들의 수일 수 있다. 적응형 논리 블록 구성의 변화들은 1개 이상의 적응형 논리 블록들 내의 데이터가 업데이트되거나 또는 일부 다른 이유로 발생할 때 발생할 수 있다. 예를 들면, 적응형 논리 블록 구성은 가베지 수집의 일부로서 또는 데이터 저장을 최적화시키기 위해 계획된 루틴으로서 업데이트될 수 있다.
적용들
도 12A는 새로운 데이터에 의해 프로그램된 데이터를 업데이트함으로써 후속 업데이트들이 보다 효율적으로 수행되는 것을 보여준다. 빈번히, 프로그램된 적응형 메타블록보다 적은 신규 데이터의 일부가 수신되고, 프로그램된 데이터를 업데이트하기 위해 사용된다. 도 12A는 2개의 적응형 논리 블록들(1220, 1230)의 부분들에 대응하는 새로운 데이터(1210)를 보여준다. 새로운 데이터는 적응형 논리 블록(1220)과 적응형 논리 블록(1230) 사이의 바운더리에 걸쳐 확장하는 어드레스 범위를 갖는다. 따라서, 적응형 논리 블록들(1220, 1230)에 대응하는 적응형 메타블록들(1221, 1231)은 업데이팅을 필요로 한다.
신규 데이터(1210)는 3개의 순차 논리 그룹들(1241, 1242 및 1243)의 어드레스 범위 내인 논리 어드레스 범위에 걸쳐 확장한다. 논리 그룹들(1241-1243) 각각은 업데이트되어야 하는 약간의 부분을 적어도 갖는다. 도 12A는 대체되어야 하는 데이터 및 대체되지 않아야 하는 데이터 모두를 갖는 논리 그룹(1241 및 1243)을 보여준다. 논리 그룹(1242)은 대체되어야 하는 데이터만이다. 신규 논리 그룹들(1211, 1212 및 1213)은 신규 데이터(1210)로부터 형성되고, 원시 데이터(1214 및 1215)의 일부는 논리 그룹들(1241 및 1243)로부터 형성된다. 신규한 적응형 논리 블록(1250)은 논리 그룹들(1211-1213)에 의해 형성된다. 적응형 논리 블록(1250)에 대응하는 적응형 메타블록(1251)은 메모리 어레이 내의 3개의 소거 블록들(1252-1254)로부터 형성된다. 적응형 논리 블록들(1256 및 1257)은 어떠한 신규 데이터도 없는 논리 그룹들로부터 형성된다. 예를 들면, 적응형 논리 블록(1257)은 논리 그룹들(1244-1246)로부터 형성된다. 논리 그룹들(1244-1246)은 메모리 어레이 내의 적응형 메타블록(1231)으로부터 카피될 수 있다. 적응형 논리 블록(1257)은 적응형 메타블록(1259)으로 프로그램된다. 적응형 논리 블록(1256)은 적응형 메타블록(1258)으로 프로그램된다. 따라서, 3개의 적응형 논리 블록들(1250, 1256 및 1257)은 2개의 적응형 논리 블록들(1220, 1230)에 의해 이미 점유된 논리 어드레스 범위 내에 형성된다. 3개의 적응형 메타블록들(1251, 1258 및 1259)는 이러한 데이터를 저장하기 위해 메모리 어레이 내에 형성된다.
도 12A는 제1 업데이트 후에 발생한 신규 데이터의 제2 업데이트를 보여준다. 신규 데이터(1260)는 신규 데이터(1210)의 그것과 동일한 논리 어드레스 범위 인 논리 어드레스 범위를 갖는 섹터들의 스트림으로 구성된다. 이 상황은 저장된 데이터의 특성 때문에 반복적으로 업데이트될 수 있다(예, FATs 등의 테이블, 디렉토리들 및 서브-디렉토리들, 애플리케이션 파일 내의 인덱스). 제2 업데이트는 적응형 논리 블록(1250)에서 데이터만을 대체한다. 따라서, 유일한 적응형 논리 블록(1250) 및 대응하는 적응형 메타블록(1251)은 제2 업데이트에서 업데이트된다. 적응형 논리 블록(1250)은 단지 3개의 논리 그룹들(1211-1213)을 포함한다. 적응형 논리 블록들(1256-1257)은 업데이팅을 필요로 하지 않는다. 신규 데이터(1260)는 적응형 논리 블록(1250)의 전체 논리 어드레스 범위에 걸쳐 확장하지 않음으로 원시 데이터(1214, 1215)의 일부는 논리 그룹들(1261 및 1263)을 충전시키기 위해 카피된다. 논리 그룹들(1261, 1262 및 1263)은 신규 데이터(1260) 및 원시 데이터(1214, 1215)로부터 형성된다. 적응형 논리 블록(1270)은 논리 그룹들(1261-1263)로부터 형성된다. 적응형 논리 블록(1270)은 메모리 어레이 내의 적응형 메타블록(1271)으로 프로그램된다. 제1 업데이트에서보다 원시 데이터가 훨씬 적게 카피된다. 원시 데이터(1214 및 1215)만이 카피되고, 적응형 논리 블록들(1256 및 1257) 내의 데이터는 제2 업데이트에서 카피되지 않는다. 따라서, 업데이트된 데이터의 논리적 바운더리들에 보다 치밀하게 매치되는 바운더리들을 갖는 적응형 논리 블록들을 생성함으로써, 후속 업데이트들은 보다 효율적으로 될 수 있다.
도 12B는 재매핑되고 있는 적응형 논리 블록들을 보여준다. 데이터의 스트림은 2개의 파일들(1280 및 1282)을 포함한다. 파일(1280)은 파일 바운더리(1281)에 의해 파일(1282)로부터 분리된다. 일반적으로, 신규 데이터가 메모리 시스템에 기입될 때, 그것은 데이터의 섹터들의 스트림으로서 수신된다. 그러한 시스템 내에 파일 바운더리들이 있을 수 있다. 일부 아키텍춰들에서, 그러한 바운더리들은 데이터가 수신될 때 식별될 수 있고, 적응형 논리 블록들은 그에 따라 구성될 수 있다. 다른 아키텍춰들에서, 파일 바운더리들의 위치는 호스트에 의해 업데이트된 데이터의 범위로 보여질 수 있다. 도 12B는 논리 그룹(1286)의 논리 어드레스 범위 내에 위치한 파일 바운더리(1281)를 보여준다. 초기 프로그래밍 오퍼레이션 동안, 데이터는 적응형 논리 블록들(1290-1293) 내로 형성된다. 논리 블록들(1290-1293) 각각은 사용된 메모리 어레이에 대해 최대 크기인 8개의 논리 그룹들을 포함한다. 파일 바운더리(1281)는 적응형 논리 블록(1292) 내에 위치한다. 심지어 적응형 메타블록(1292)에 저장된 파일(1280)의 2개 미만의 논리 그룹들이 존재하더라도, 업데이팅 파일(1280)은 업데이팅 메타블록들(1290, 1291 및 1292)을 필요로 한다. 적응형 논리 블록(1292)의 논리 그룹들은 새로운 적응형 논리 블록들(1294 및 1295)로 재매핑된다. 논리 블록(1294)은 논리 그룹들(1285 및 1286) 만으로 구성된다. 따라서, 파일(1280)의 일부를 포함하는 논리 그룹들은 적응형 논리 블록(1294)을 형성하는 한편, 파일(1280)의 일부를 함유하지 않는 논리 그룹들은 적응형 논리 블록(1295)을 형성한다. 업데이팅 파일(1280)은 적응형 논리 블록(1295)을 업데이트하는 것을 필요로 하지 않는다. 따라서, 파일 바운더리가 존재하는 것으로 알려진 경우, 적응형 논리 블록들은 파일 바운더리들에 부합되도록 조절된 바운더리들을 갖도록 형성될 수 있다.
도 12C는 데이터 스트림들(1280, 1282)로부터 데이터의 선택적 재매핑을 보 여준다. 여기서, 파일 바운더리(1281)는 논리 그룹(1286)에서 발생한다. 논리 그룹(1286)은 먼저 논리 블록(12960) 내로 혼입된다. 논리 블록(1296) 내의 데이터의 절반 이상이 파일(1280)로부터 존재하지 않더라도, 업데이팅 파일(1280)은 논리 블록(1296)을 업데이팅하는 것을 필요로 한다. 업데이팅하는 동안, 적응형 논리 블록들의 제2 세트가 형성되고, 적응형 논리 블록(1296)은 새로운 적응형 논리 블록들(1297, 1298, 1299)로 대체된다. 적응형 논리 블록(1298)은 데이터의 단 하나의 논리 그룹을 포함한다. 데이터 스트림(1280) 또는 데이터 스트림(1282)를 업데이트하는 것은 바운더리(1281)가 적응형 논리 블록(1298) 내에서 발생하기 때문에 적응형 논리 블록(1298)을 업데이트하는 것을 필요로 한다. 따라서, 낡은 데이터의 일부 카피는 파일 바운더리(1281)가 논리 그룹들 사이의 바운더리에 의해 정렬되지 않기 때문에 항상 수행된다. 그러나, 적응형 메타블록(1298)은 단 하나의 논리 그룹을 포함하기 때문에, 메타블록(1296) 등의 보다 큰 메타블록이 사용되는 상황과 비교하여 카피되어야 하는 소량의 데이터만이 존재한다. 따라서, 파일 바운더리를 포함하는 적응형 논리 블록의 크기를 감소시킴으로써, 업데이트 동안 데이터를 카피하는 것이 감소될 수 있다.
도 13은 보다 적은 빈 공간을 갖는 보다 적은 적응형 메타블록(1340)으로 재기입되고 있는 부분적으로 충전된 적응형 메타블록(1321)을 보여준다. 데이터의 스트림은 최대 병행도를 사용하여 수신되고 프로그램될 수 있다. 예를 들면, 4개의 평면들을 갖는 어레이에서, 4개의 논리 그룹들을 포함하는 적응형 논리 블록들이 형성될 수 있고, 데이터는 4개의 소거 블록들을 갖는 메타블록들 또는 적응형 메타블록들에 저장된다. 그러나, 데이터의 그러한 스트림의 단부에서, 적응형 메타블록은 부분적으로만 충전될 수 있다. 그러한 적응형 메타블록은 저장된 데이터에 필요한 것보다 더 많은 메모리 어레이를 점유한다. 도 13은 수신되고 있는 데이터(1305)의 섹터들의 스트림을 보여준다. 이 데이터는 논리 그룹들(1310-1315)을 포함하는 논리 그룹들로 매핑된다. 논리 그룹들(1310-1317)은 각각 4개의 논리 그룹들을 갖는 적응형 논리 블록들(1320, 1321) 내로 형성된다. 데이터(1305)의 섹터들의 스트림의 단부는 논리 그룹(1315)의 논리 어드레스 범위에서와 같은 논리 어드레스에서 발생한다. 적응형 논리 블록(1321)은 논리 블록들(1314-1317)로부터 형성된다. 논리 그룹들(1314 및 1315)은 데이터(1305)의 섹터들의 스트림으로부터 데이터를 포함한다. 논리 그룹들(1316 및 1317)은 데이터를 함유하지 않는다. 따라서, 적응형 논리 블록(1321)은 빈 논리 그룹들(1316 및 1317) 및 부분적으로 충전된 논리 그룹(1315)을 포함한다. 적응형 논리 블록(1321)은 적응형 메타블록(1331)으로 프로그램된다. 적응형 메타블록(1331)은 메모리 어레이의 4개의 소거 블록들을 포함한다. 적응형 메타블록(1331)의 일부는 빈 논리 그룹들(1316 및 1317) 및 부분적으로 충전된 논리 그룹(1315) 때문에 사용되지 않는다. 이는 메모리 어레이의 공간을 낭비한다. 도 13은 논리 그룹들(1314 및 1315)로부터 형성된 적응형 논리 블록(1340)을 보여준다. 적응형 논리 블록(1340)은 메모리 어레이 내의 적응형 메타블록(1341)으로 프로그램된다. 따라서, 적응형 메타블록(1341)은 1331에서와 동일한 데이터를 포함하지만, 메모리 어레이 내의 공간의 절반 만을 점유한다(4개 대신에 2개의 소거 블록들). 적응형 논리 블록(1340) 및 적응형 메타 블록(1341)은 메모리 어레이 내의 적응형 메타블록(1331)으로부터 데이터를 카피함으로써 형성될 수 있다. 적응형 메타블록(1331) 내의 데이터가 적응형 메타블록(1341)으로 카피될 때, 적응형 메타블록(1331)은 폐기된 것으로 마킹될 수 있다. 이어서, 적응형 메타블록(1331)이 소거될 수 있다.
부분적으로 완전한 메타블록으로부터 보다 작은 메타블록으로 데이터를 카피하는 것은 데이터(1305)의 섹터들의 스트림의 수신으로 경과된 시간에 의해 시동될 수 있다. 카피는 가베지 수집 루틴의 일부로서 행해질 수도 있다. 1340 등의 보다 작은 적응형 메타블록은 데이터(1305)의 섹터들의 스트림의 단부가 검출되는 경우 수신된 데이터로부터 직접적으로 형성될 수 있는 한편, 데이터(1305)의 섹터들의 스트림은 버퍼 내에 존재한다. 이 경우, 데이터는 먼저 보다 큰 적응형 메타블록에 기입되지 않고, 이어서 보다 작은 메타블록으로 카피된다. 따라서, 소거될 어떠한 폐기된 적응형 메타블록도 없다. 일부 아키텍춰들에서, 호스트는 데이터의 스트림의 단부가 발생하는 경우를 지시하는 신호를 전송할 수 있다. 적응형 논리 블록은 데이터의 스트림으로부터 섹터들을 포함하는 논리 그룹들 만을 포함하도록 형성될 수 있다.
특정 메모리 아키텍춰들에서, 소거 블록들 또는 메타블록들은 업데이트된 데이터를 저장하도록 할당될 수 있다. 그러한 소거 블록들 및 메타블록들의 예들은 2003년 12월 30일자로 Conley 등에 의해 "Management of non-volatile memory systems having large erase blocks"라는 표제로 출원된 미합중국 특허 출원 제10/749,831호에 기재되어 있으며, 여기에 전문을 참고 문헌으로서 인용한다. E1 및 E2로 지정된 특정 메타블록들은 메모리 어레이의 평면에 대해 업데이트된 데이터를 저장하기 위해 사용될 수 있다. dE1로 지정된 다른 소거 블록들 또는 메타블록들은 특정 소거 블록 또는 메타블록에 대해 업데이트된 데이터를 수신하도록 할당될 수 있다. 적응형 메타블록은 E1, E2 또는 dE1로 지정될 수 있다. 그러한 적응형 메타블록은 빈번히 업데이트되는 논리 어드레스 범위로 맞춤될 수 있다. 업데이트된 데이터에 부합되게 선택된 크기를 갖는 적응형 메타블록을 형성함으로써, 원시 데이터의 카피는 감소된다. E1 및 dE1은 업데이트 데이터를 수신하고, 이들을 비순차적 방식으로 저장한다. 비순차적으로 업데이트 데이터를 저장하는 업데이트 블록들(또는 메타블록들, 또는 적응형 메타블록들)은 혼돈 블록들로 고려된다.
도 14는 업데이트된 데이터의 논리적 어드레스 범위에 대해 채택된 크기를 갖는 혼돈 블록으로서 적응형 메타블록의 사용을 보여준다. 데이터는 원시 적응형 메타블록(1410)을 포함하는 원시 적응형 메타블록들에 저장된다. 전형적으로, 그러한 원시 적응형 메타블록들은 최대 크기이다. 적응형 메타블록(1420)은 원시 적응형 메타블록(1410) 내의 데이터에 대응하는 업데이트된 데이터를 수신하도록 할당된다. 적응형 논리 블록들(1411 및 1421)은 각각 원시 적응형 메타블록(1410) 및 적응형 메타블록(1420)에 대응한다. 적응형 논리 블록(1421)은 적응형 논리 블록(1411)과 동일한 논리 어드레스 범위를 갖는다. 제1 업데이트 데이터(1415)는 적응형 논리 블록(1411)의 논리 어드레스 범위 내의 논리 어드레스 범위를 갖는다. 적응형 논리 블록들(1411)의 논리 어드레스 범위의 일부만이 제1 업데이트에서 업 데이트된다. 제1 업데이트 데이터(1415)는 비순차적(혼돈)이다. 따라서, 적응형 메타블록(1420)은 혼돈 블록이 된다. 업데이트 데이터(1415)는 도시된 논리 어드레스 범위 내에서 섹터들의 여러 가지 스트림들을 포함할 수 있다. 동일한 섹터들은 여러 번 업데이트될 수 있다. 결과적으로, 메타블록(1420)은 완전해질 수 있고, 통합됨에 틀림없다.
제1 통합 동안, 각각의 섹터의 가장 최근의 카피만이 신규한 적응형 메타블록들(1422-1424)로 카피된다. 업데이트된 데이터에 대해, 가장 최근의 카피는 적응형 메타블록(1420)으로부터 유래하고, 업데이트되지 않은 데이터에 대해, 가장 최근의 카피는 적응형 메타블록(1410)으로부터 유래한다. 통합은 논리 순서로 적응형 메타블록(1410) 및 적응형 메타블록(1420)으로부터 데이터를 조합한다. 적응형 메타블록(1423)에 할당된 논리 어드레스 범위는 제1 업데이트 데이터(1415)의 논리 어드레스 범위를 포함한다. 적응형 메타블록들(1422, 1424)은 업데이트되지 않은 데이터만을 포함한다.
제2 업데이트 데이터(1425)는 제1 통합 후 수신된다. 제2 업데이트 데이터(1425)는 제1 업데이트 데이터(1415)와 동일한 논리 어드레스 범위 내에 있다. 제2 업데이트 데이터(1425)는 적응형 메타블록(1430)에 저장된 신규한 적응형 논리 블록(1431)에 할당된다. 적응형 논리 블록(1431)은 적응형 메타블록(1423)에 저장된 데이터와 동일한 논리 어드레스 범위를 갖는다. 적응형 메타블록(1430)은 혼돈스럽게 업데이트될 수 있고, 따라서 혼돈 블록이 된다. 적응형 메타블록(1430)이 충전될 때, 적응형 메타블록(1430) 및 적응형 메타블록(1423) 내의 데이터는 적응 형 메타블록(1440)에 대해 통합된다. 이어서, 적응형 메타블록(1440)은 적응형 메타블록(1423)을 대체하고, 적응형 메타블록(1423)은 폐기된 것으로서 마킹된다. 적응형 메타블록들(1422 및 1424)은 변화되지 않고 남겨진다. 보다 작은 논리 어드레스 범위는 제1 통합에서보다 제2 통합에서 더욱 통합됨으로써 변화되지 않은 데이터의 카피가 거의 일어나지 않는다. 또한, 업데이트를 위해 사용된 적응형 메타블록이 제1 통합 후에 보다 작아지기 때문에 메모리 어레이에서 보다 적은 공간이 요구된다. 추가의 업데이트들은 동일한 논리 어드레스 범위 내에서 이루어질 수 있고, 제2 통합에서와 같이 통합될 수 있다.
매체 관리
도 15A는 적응형 논리 블록(1520)의 논리 그룹들(1510, 1511 및 1512)이 어떻게 적응형 메타블록(1540)의 소거 블록들(1531, 1532 및 1533)로 매핑되는지 보여준다. 적응형 논리 블록(1520)의 논리 그룹들의 수는 적응형 메타블록(1540)의 소거 블록들의 수와 동일하더라도, 개개의 논리 그룹은 이 실시예에서 개개의 소거 블록으로 직접적으로 매핑되지 않는다. 대신에, 데이터가 저장됨으로써 각각의 논리 그룹들(1510-1512)의 일부는 적응형 메타블록(1541)의 각각의 소거 블록들(1531-1533)에 저장된다.
도 15B는 적응형 논리 블록(1520)의 메모리 어레이로의 매핑을 보다 상세히 보여준다. 도 15B는 논리 그룹(1510)으로부터 섹터들이 어떻게 메모리 어레이에서 프로그램되는지 보여준다. 논리 그룹(1510)은 데이터의 n개의 섹터들을 포함한다. 메모리 어레이의 평면들(0-4)은 각각 4개의 섹터들의 폭을 갖는다. 특정 메모리 아키텍춰들에서, 어레이의 평면을 가로질러 확장하는 4개의 섹터들은 병행하여 프로그램된다. 따라서, 4개의 섹터들은 어레이의 최소 프로그래밍 단위인 페이지를 형성한다. 섹터들은 전형적으로 순차로 도달하고, 어레이에 기입하기 전에 레지스터들 내에 저장될 수 있다. 적응형 메타블록의 모든 소거 블록들의 섹터들은 병행하여 프로그래밍될 수 있다. 따라서, 예를 들면, 섹터들(0-11)은 병행하여 프로그래밍될 수 있다. 이어서, 섹터들(12-23)은 병행하여 프로그래밍될 수 있다. 이는 논리 그룹(1510) 내의 모든 섹터들이 프로그래밍될 때까지 계속된다. 이어서, 논리 그룹(1511, 1512)이 차례로 프로그램된다.
도 15C는 메모리 어레이 내의 3개의 소거 블록들에 의해 형성된 적응형 메타블록을 보여준다. 메모리 내의 섹터들의 배치는 번호 n이 32와 동일하게 도 15B에 나타낸 것과 유사하다. 그러나, 32는 3으로 균등하게 나눌 수 없기 때문에, 논리 그룹의 섹터들은 소거 블록들(1551-1553) 사이에서 균등하게 분배되지 않는다. 제1 논리 그룹은 섹터들(0-31)로 구성된다. 이들 섹터들은 소거 블록(1551)에서 12개의 섹터들로 분배되고, 소거 블록(1552)에서 12개의 섹터들로 분배되고, 소거 블록(1553)에서 8개의 섹터들로 분배된다. 제2 논리 그룹의 제1 섹터(0')는 소거 블록(1553)에서 프로그램된다. 따라서, 논리 그룹들은 상이하게 프로그램될 수 있고, 상이한 소거 블록들에서 시작될 수 있다. 상이한 논리 그룹들로부터 섹터들은 병행하여 프로그램될 수 있다. 예를 들면, 제1 논리 그룹으로부터 섹터들(24-31) 및 제2 논리 그룹으로부터 섹터들(0'-3')은 병행하여 프로그램될 수 있다.
도형 15D는 두개의 메타블록들를 병렬로 프로그램화하는 것을 보여준다. 지소거블록1561,1562 개조 메타블록 1565를 형성하고 소거블록 1563,1564 개조 메타블록 1566,계조메타블로들 1565,1566을 형성한 두개의 소거블록과 그것들이 포함된 데이터의 두개의 데이터논리그룹 논리 그룹. 개조 메타블록 1565는 논리 그룹 1571과 1572를 포함한다. 개조 메타블록 1566은 논리그룹 예시된 1571 과 1573을 포함한다. 논리그룹 1571과 1573은 병렬 프로그램화된다. 따라서 첫번째 메모리 어레이의 첫번째 기입하는 기간,섹터 1-8로부터 논리그룹 1571까지 섹터 1-8 동시에 프로그래밍 되어진다. 다음으로 섹터 9-16들은 동시에 섹터 프로그램 되어진다. 이것이 논리 그룹 1572에 모든 섹터까지 계속되고 1573이 프로그램화된다. 논리 그룹 1572과1574는 유사한 방법으로 프로그램 되어진다.
도면 15E는 병렬로 프로그램화된 세개의 개조 메타블록들을 나타낸다. 메타블록(1590)은 네개의 소거블록을 포함하고,메타블록 1591은 하나의 소거블록을 포함하고 메타블록 1592는 세개의 소거블록들을 포함한다. 메타블록들 1590-1592들은 병렬로 프로그램화 된다. 메타블록 1590-1592들은 다른 숫자의 소거블록을 포함하기 때문에 상기 데이터들은 각각의 메타블록 1590-1592내에서 다르게 정렬된다. 도면 15E는 메타블록 1590-1592 내 페이지의 정렬을 보여준다. 페이지는 단일 섹터로 구성되며 , 네개의 섹터 혹은 또 다른 숫자의 섹터가 프로그래밍 유닛에 따라 프로그램화된다.
데이터의 페이지는 서로 다른 소거블록내 위치하여 이것은 동일한 수평레벨에 있으며 도면 15E에 기재된 바와 같이 병렬로 프로그램화 된다. 예를들면 페이지 12-15의 메타블록 1590 과 페이지 3의 메타블록 1591과 페이지 9-11의 메타블록 1592는 병렬로 프로그램화된다.
도면 15F는 업데이트 데이터이며 이것은 첫번째 섹터가 업데이트 되어진 데이터 1582이고, 논리 그룹내 첫번째 섹터는 아닌것의 예를 보여준다. 업데이트 되어진 데이터의 첫번째 섹터는 논리주소13 가진다는 것을 보여준다. 논리그룹 1580은 논리 주소 1-16을 가지는 섹터의 구성을 포함한다. 업데이트된 데이터 1582는 두개 이상의 논리 그룹들과 두개의 소거블록의 개조 메타블록 크기는 업데이트된 데이터를 포함하는 첫번째 두개의 논리그룹블록을 저장하고 선택하는 소거블록 1585,1586이다. 업데이트 되어진 첫번째 섹터는 소거블록1585내에 첫번째 위치에 기입되며 이것들은 논리주소 13을 가지고 있다. 상기 섹터는 논리주소 14를 가지고 있고 이것은 두번째 위치에 기입되어지고 논리회로의 마지막 섹터까지 유지되며, 상기 섹터는 논리주소 16을 가지고 있으며 기입되어진다. 상기 데이터로부터 논리그룹 1580은 메모리 어레이내부에 카피를 통해서 업데이트 되어 지지 않는다.
그것들은 논리그룹의 첫번째 섹터와 개조메타블록내 저장된 첫번째 섹터사이의 오프셋이다. 다음논리그룹의 첫번째 섹터는 통상방법으로 기입되어지며 그것은 개조메타블록내에 다른 논리그룹이 다른 오프셋으로 기입되어지기 위한 것이다.
섹터는 논리주소 1' 가지고 있으며 첫번째 섹터는 논리그룹이 업데이트 되어질 때 기입되어진다.
도면 16은 개조 메타 블록 1620내에 저장되어진 논리블록 1610의내부에 있는 데이터의 위치를 저장하는데 사용되는 테이블을 보여준다. 컬럼 1에 수용된 논 리 그룹에 따라서 메모리 배열 내에 데이터의 위치를 리코딩하기 위해 이용되는 테이블이 각각의 개별적인 논리 그룹의 식별성을 가리킨다. 이것은 유일하게 논리 그룹을 상세화하는 논리적 주소이다. 논리 그룹은 연속적으로 일반적으로 목록화된다. 컬럼 2는 논리 그룹이 저장된 개조 메타블록의 사이즈를 가리킨다. 사이즈가 단순한 개조메타블록내의 소거블록의 숫자이다 여기에서, 메타블록이 모든 논리블록에 대한 사이즈는 3이며 이것은 세개의 소거블록으로 구성된다. 컬럼 3은 개조 논리 블록 내에 논리 그룹의 갯수 N을 부여한다. 논리 그룹은 논리적 주소 범위에 따라서 연속적으로 넘버링된다. 그러므로, 논리 그룹 L2가 N=1을 가지고, L2가 N=2를 가지고 L3이 N=3. 열 4를 가진다 N번째의 위치가 개조 메타블록에 소거블록을 부여한다. 이것이 소거블록의 물리적인 번호 ( PBN ) 일 수 있다. 개조 블록에 있는 논리 그룹의 수가 갯수와 같기 때문에의 개조 메타블록에 소거블록을 , 위치의 완전한 레코드의 그 개조 메타블록의 소거블록을 하나가 각각의 논리 그룹을 위한 소거블록 위치를 기록함으로써 형성될 수 있다.
특별한 논리 그룹의 위치의 테이블은 메모리 시스템의 매체관리의 일환으로 휘발성 또는 비휘발성 메모리에 유지될 수 있다. 매체관리 시스템이 다양한 테이블을 위치를 리코딩하도록 할 수 있으며 이용 가능한 소거블록과 데이터의 논리적인 물리적 매핑을 가지고 있다. 미디어 관리자는 매체관리 시스템의 테이블을 다룬다. 전형적으로 미디어 관리자는 구현된 제어기내에 있는 펌웨에이다.
도면 17은 미디어 관리자의 실시예를 나타낸다. 미디어관리자의 동작은 도면 17에 표기된바와 같이 미국특허 10/750,155이며 제목은 `non-volatile memory and method with block management system' by Bennett et al, filed on December 30,2003이며 상기 출원은 전체 참조에 의해 조합되어 질 수 있다. 매체 메니지는 개조 메타블록 매니저, 블록 할당 매니저와 주소표 매니저를 포함한다. 이러한 세개의 매니저와 그들 관련된 테이블은 개조 메타블록s의 관리에 특별한 유사치의 사이에 있고 더 기술할 것이다.
개조 메타블록 매니저가 논리 그룹의 수를 결정하며 개조 논리 블록의 수와 개조 메타블록내의 소거블록의 수를 참증한다. 데이터가 호스트로부터 수신될 이 측정이 여러가지 팩터에 근거할 수 있다. 호스트로부터의 명령 시퀀스가 평가받을 수 있고 개조 메타블록 사이즈가 전류 명령에 근거하여 또는 호스트 커맨드의 과거의 평가에 결정될 수 있다. 호스트 커맨드의 평가일 수 있는 전류 명령의 특성 및 평가받을 수 있는 전류 명령의 특성이 논리적 주소를 포함한다, 커맨드 섹터 카운트, 파일 시스템 클러스터를 가진 얼라인먼트 (와 같은 DOS 클러스터 ), 이전의 명령에 대한 논리적인 관계와 파일 시스템에 대한 관련된 어드레스 섹터. 업데이트 블록의 비순차적 유형에 의해 다루어진 범위의 그것에 관련된 어드레스는 또한 고려될 수 있다. 과거의 작동의 특성이 연속한 데이터의 스트림을 위한 호스트 명령 시퀀스, 완전한 파일을 위한 호스트 명령 구조, 자주 업데이트된 논리적 주소 범위의 레코드 그리고 최종적인 주소를 포함할 수 있으며 최근에 연속한 데이터를 쓰여진다. 개조 메타블록 매니저가 정보에 액세스를 획득하기 위해 적절한 호스트 인터페이스 프로토콜 하에, 호스트로 대화 교환을 설치할 수 있으며, 적절한 메타블록 사이즈가 결정되도록 허용할 것이다.
데이터가 재설정될 때, 개조 메타블록 사이즈가 재설정된 데이터를 포함하는 논리 그룹의 수에 근거하여 정해질 수 있다. 제어 데이터가 개조 메타블록들에 수용된 곳에서 개조 메타블록 사이즈가 저장되기 위해 데이터의 유형에 따라서 고정될 수 있다. 개조 메타블록 사이즈는 작고 개조 메타블록들 인해 획득된 쓰레기정보 수집으로 인해 균형화가 상승된 병렬 획득은 큰 개조 메타블록들에 근거하여 결정될 수 있다. 한때 소거블록 개수는 개조 메타블록 매니저에 의해 결정되어지며,소거블록의 수에 대한 요청은 블록할당매니저에게 보내진다
블록 할당 매니저는 메모리 배열의 분리된 평면으로부터 소거블록선택한다. 평면의 갯수에 근거하여 선택하는 것은 이용 가능한 평면에 소거블록에 관한 것이다. 다양한 크기의 개조 메타블록들이 이용될 때, 평면이 다른 레벨에 충전될 수 있다. 그러므로, 몇몇 평면이 가득 차게 있는 동안 다른 평면들은 소거블록으로 이용할 수 있다. 이것이 발생되어져야 하며, 어레이의 제한에 따른 평면이 이용할 수 없는 적병렬이 된다.이러한 경우를 방지하기 위하여 블록 할당 매니저는 저우선순위를 주게 되며 이것은 작은 숫자의 이용가능한 소거블락과 조우선순위의 평면이 큰 숫자의 이용가능한 소거블락이 되며 이때 소거블락은 메타블록의 형성으로 정렬되어 형성되나.큰 갯수를 포함함으로써 평면에 우선 순위를 부여하고 이용 가능한 할당하는 것이 개조 메타블록을 형성하기 위해 소거블록을 구성한다. 평면은 위치 재설정이 데이터가 하나 평면에서부터 또 다른 것까지 이동하는 것보다 더 많은 효율적으로 만드는 것 방법에 평면 내에 재배치될 수 있는 상위 순위를 부여받았기 때문에 데이터를 가진다. 상기 블록 할당 매니저는 이용가능한 소거블락으로부터 할당블록목록(ABL)을 선택한다.
도면 18A는 개조 메타블록들로 이용된 삭제된 블록 관리 계층구성을 나타낸다. 특정 크기의 메타블록을 배정하기 위한 개조 메타블록 매니저로부터의 요청이 수신되면, 블록 할당 매니저 선택이 블록을 링크하기 위한 분리된 평면과 갱신 적절한 제어 구조에서 소거메타블록을 선택한다. 평면으로부터 소거블록은 미리 결정된 기준에 따라서 알고리즘에 의해 선택되는데 이용된다. 평면들은 저순위가 부여된 소수의 삭제된 블록을 포함한다. 이전 작동으로부터 여전히 바쁜 평면들은 낮은 저순위가 부여된다. 평면은 또 다른 평면으로부터 카피되어지는 것 대신에 평면내에 카피되어진 데이트를 선택하는 것을 허용하며 이 선택은 고순위를 부여받는다. 몇몇 구조에서 이러한 평면 내부의 카피들은 보다 효율적으로 사용될 수 있다.
삭제된 블록은 어레이의 각각의 평면을 위해 개별적으로 다루어진다. 평면이 선택될 때, 누가 그 평면으로부터 선택되어진 소거블록으로부터 개조 메타블록의 부분을 형성하라고 선택할 수 있다. 일반적으로, 소거블록은 리스트의 상단으로부터 선택되어지며 , 최근에 이용 가능한 동안 블록을 지운 목록의 바닥에 추가된다. 소거블록은 도면 18A에 도시된 바와 같이 목록의 계층구성에 의해 다루어진 개별 구간이 블록을 지운 한번에 단지 하나 목록에 나타날 수 있다. 불량 블록이 어떠한 목록에 나타나지 않고 데이터 기억 장치를 사용하지 않는다. 소거블록주소의 움직임에 의해서 목록 사이 기입/주기는 메모리 어레이를 통해서 배분된다. 이것은 웨어리빙을 수반하는데 이것은 개별적인 소거블록의 고장의 위험을 감소시킨다.
할당 블록 목록 (ABL)1810은 삭제된 블록 주소의 짧은 목록이므로부터 삭제 된 블록이 메타블록들로부터 선택되어진 것이다. 그러므로, ABL 1810은 목록의 계층구성의 꼭대기에 형성되어 있다.ABL 1810 내에, 각 필드가 메모리 배열의 각각의 평면을 위해 유지된다. 일반적으로, ABL 1810이 제어기 램형과 같은 영속성 기억 장치에 유지되지만, 그러나, 카피가 제어기 램형과 같은 영속성 기억 장치에 유지되고, 그러나, 카피가 또한 영속성 기억 장치에 유지된다.
한 부의 ABL 1810이 로그 1813은 ABL 1810로부터 제거된 형식으로 사용되어진 제거된 블록과 개조메타블록에 항상 기입되어진다. 로그 1813에 있는 ABL 1810의 카피가 정기적으로 개정된다. 이때 한 소거블록을 이용 가능하게 되며 이를 통하여 한 작동을 지운 것을 포함함으로써 평면에 해당한 필드에 ABL 1810에 추가된 그 소거블록을 포함한다. 그와 같은 1813.를 로깅하기 위해 대처한 이후로 ABL 1810이 소거블록을 다른 데이터 구조체로부터 용이하게 식별된다. 명확하게, 로그 1813이 할당된 메타블록들의 레코드를 포함한다. 할당된 메타블록들은 메타블록들 또는 개조 메타블록들 그리고 그것에 데이터가 호스트에 의해 현재 개정되고 있다. 그러므로, 첫번째 전력이 인가되었을때 때, 각각의 첫번째 섹터가 원래 메타블록의 블록을 지우기 위해 결정을 내리기 위한 스캐닝이 될 수 있다면 그 원래 메타블록의 소거블록을 지워지며 그것의 어드레스가 ABL에 추가된다. 어드레스 데이터는 메타블록 사이즈를 위한 엔트리, 그룹 번호와 블록 주소로 도형 16에 나타내어진 포맷으로 연결되어지며 기동 논리 그룹 어드레스로서 로그 1813에 유지된다. 그러므로, ABL 1810의 전체 카피가 손실량 전력 뒤에 용이하게 재건될 수 있다. 로그가 또한 목록을 포함할 수 있으며 삭제 부분을 이용하는 완전히 시기적으로 늦은 데 이터를 가진 블록은 지운다.
ABL 1810이 블록 주소의 미리 정의된 갯수를 작동함으로써 초기화될 수 있으며 한 ABL의 블록 목록 ( EBL ) 1811. 각각의 필드를 상응한 EBL 필드로부터 어드레스를 작동함으로써 초기화될 수 있다. 예를 들어, ABL 필드가 그들의 캐태시티의 반을 충전될 수 있으며 블록이 메타블록에 할당을 위해 요구되어질 때 적절한 ABL 필드에 있는 첫번째 블록이 이용되고 그것의 어드레스는 ABL에서 제거한다. 블록이 가비지 수집 동안 지워질 때,적절한 ABL 필드의 단부에 추가된다.
ABL 1810이 EBL 1811로부터 삭제된 블록 주소로 재충전되어질 수 있다 이것이 필요한 ABL 1810은 공핍되어 있다. 삭제된 블록 주소는 ABL 1810의 필드가 가득 차거나 비어있을 때 ABL 1810과 EBL 1811 사이에 교환될 수 있다. 교환은 단 하나 필드 ( 또는 어레이의 평면 )를 위해 또는 모든 필드를 위해 행해질 수 있다. 교환은 가득 차거나 비어있게 됨으로써 ABL 1810 가득 채울 것을 포함할 수 있거나 꽉 찬 상태를 포함할 수 있거나 또 다른 이벤트에 의해 트리거링되거나 주기적 방식에 의할 수 있다.
EBL 1811은 영속성 기억 장치에서 개최되는 섹터에 일반적으로 유지된다. 그것은 어레이의 각각의 평면을 위한 각 필드로 삭제된 블록의 목록을 포함한다. 그것이 ABL 1810으로서 똑같은 포맷에 들어가고 그러므로, 엔트리가 EBL 1811이 비휘발성 메모리에 단일 섹터로서 유지되기 때문에 EBL 1811과 ABL 1810. 사이에 용이하게 교환할 수 있고, 그것이 EBL 1811과 ABL 1810. 사이에 교환을 간편화함으로써 신속히 액세스되고 그러므로 개정할 수 있다 EBL과 ABL 사이의 어드레스의 교환이 ABL이 가득 차거나 비어있을 때 발생할 수 있다. 또는, 교환이 메모리 배열에 특별한 위치의 무거운 사용을 회피하기 위해 더 자주 발생할 수 있다. EBL 1811에 있는 어드레스는 ABL 1810으로 그리고 또한 평평한 블록 목록으로 교환될 수 있다.
EBL 섹터는 유일한 EBL 섹터를 포함함으로써 EBL 블록에 유지될 수 있다. 그림 18B는 EBL 블록 1801을 다중 EBL 섹터를 가지라는 것을 보여준다. EBL 데이터가 변환될 때, 새로운 EBl 섹터가 기술되고 오래된 EBL 섹터가 시대에 뒤떨어지게 된다. 그러므로, 시대에 뒤떨어진 섹터 2803 포함한다 더이상 유효하지 않는 EBL의 이전 카피이며 단지 직전 기입된 EBL 섹터 2803은 유효하다. EBL 섹터가 또한 카운트를 포함할 수 있으며 각각의 EBL 필드에 목록화된 소거블록이다. 이러한 카운트는 개조 메타블록들를 형성할 때 평면을 선택함에 있어 하나 팩터로서 이용된다. 한 부의 이러한 카운트는 또한 로그 1813에 유지될 수 있다.
PBL 1812와 같은 평면 블록 목록 ( PBL )는 어레이의 각각의 평면을 위한 영속성 기억 장치에 유지된다. PBL 1812는 목록형태의 메모리 배열의 특별한 평면에 소거블록을 포함한다. 이름이 실리지 않는 소거블록은 각각의 ABL 1810 또는 EBL 1811이 PBL 1812에 목록화되지 않다. PBL 1812가 하나 섹터를 차지할 수 있다, 통과하는 섹터는 가득 찰 필요가 없다. 일반적으로, PBL들은 PBL 섹터에 함께 그룹으로 만들어진다. PBL 블록에 있는 정보가 유일한 PBL 섹터를 포함하며 블록일 때. PBL 섹터에 있는 정보가 변환될 때 갱신 방안이 PBL 블록에 다음 위치에 기술된다. 오래된 섹터는 과거것으로 표시된다. 단지 하나 유효한 PBL 섹터는 특별한 평면을 위한 특별한 PBL 블록에 존재한다. 그러나, 둘 또는 그 이상의 유효한 PBL 섹터가 떨어져서 존재할 수 있으며 특별한 평면 PBL 섹터가 다른 PBL 블록에 들어가게되면 PBL 섹터는 PBL 블록을 위치가 블록을 지운다는 것을 규정하는 2 필드로 존재하게 되며 세트 엔트리와 모든 유효한 PBL 섹터의 위치를 목록화하는 섹터 인덱스를 가진다. 엔트리 위치를 규정화하며 소거블록을 어떠한 특별한 순서에 반드시 적용되지 않는다. 엔트리의 순서는 상응한 EBL 필드로 교환의 결과일 수 있다. 이전 기입한 PBL 섹터의 단지 지수가 부분적으로 글로 쓴 메모리에 유효한 것이고, 많은 PBL 블록을 요구한 많은 삭제된 블록과 그러므로 많은 PBL 섹터가 있다. 그러나, 메모리가 충전된 것처럼, 삭제된 블록의 수가 감소하고 필요로 한 PBL 블록의 수가 감소한다. 논리적으로 가득 찬 메모리 시스템에, PBL 1812와 EBL 사이에 어드레스의 어떤 PBL 블록 교환이 있지 않아도 된다 비슷한 EBL과 ABL 사이에. 교환이 단일 방향 또는 양방향성 다중 PBL 블록이 이용되며 하나 PBL 블록이 교환을 사용된 활동적인 블록 일 수 있다. 활동적인 PBL 블록이 이용되고, 하나 PBL 블록이 교환을 사용된 활동 블록일 수 있다. 활동적인 PBL 블록은 정기적으로 변환될 수 있다. EBL 1811에 있는 필드는 이면 동작으로서 단일의 PBL 섹터로부터 개정될 수 있다
도면 18C는 메모리 시스템에 있는 주소 변환 정보를 위한 주소표 관리 계층구성을 개조 메타블록들을 이용하는 것을 보여준다. 데이터 섹터가 데이터 업데이트 신호 알고리즘에 따라서 메모리 배열에 기술될 때, 주소표 매니저가 논리 대 물리 매핑의 비휘발성의 레코드를 생성시키기 위하며 메모리 배열에 어떠한 섹터의 빠른 번역을 허용하기 위해 주소표 관리 계층구성에 적절한 제어 데이터 구조를 개정한다. 빠른 번역은 어떠한 섹터의 물리 위치가 영속성 기억 장치로부터 단일 섹 터를 리딩하는 것에 의해 결정되도록 허용함으로써 달성될 수 있다. 물리 위치가 영속성 기억 장치에 아직 개정되지 않을 때, 그것이 휘발성 메모리 램으로부터 신속히 결정될 수 있다. 개조 메타블록들의 사이즈와 조건이 가변적이기 때문에, 그들이 영속성 기억 장치에 수용되지 않으면 메타블록에 소거가능한 블록의 위치를 리커버링하는 것은 큰 결함일수 것이다. 그러므로, 메타블록의 소거블록위치 영속성 기억 장치에 수용된다.
기입 섹터 리스트 ( WSL ) 1814은 그림 18C의 계층구조의 상부에이다..WSL 1814는 일반적으로 비휘발성 메모리와 같은 제어기램. WSL 1814와 일반적으로 유지된 호스트에 의해 연속한 기입 스트림과 관련되거나 영속성 기억 장치에 또 다른 위치로부터 재배치된 섹터가 일체화가 된다. 분리된 WSL은 각각의 호스트 기입 스트림을 위해 존재한다. WSL은 메타블록이 호스트로부터 새로운 기입 스트림을 위해 배정될 때 개구된다. WSL은 기동 위치와 기술된 섹터 수와 같은 축약형을 가질 수 있다
로그 1813이 WSL 1914보다 낮다. 로그 1813은 WSL 1814에 누적화된 목록화의 섹터의 이다. 로그 1813은 또한 모든 WSLs의 카피본을 소유하고 있으며 이것은 시간에 따라 업데이트 되어진다. 로그 1813이 메타블록 배정되어질 때 언제든지 업데이트된다. 로그 1813은 로그 블록 내에 로그 섹터에 포함될 수 있다. 로그 1813에 있는 정보가 변환될 때, 새로운 로그 섹터가 로그 블록에 다음 이용 가능한 위치에 기술된다. 이전 로그 섹터가 시대에 뒤떨어지게 되며 기입된 로그 섹터와 유효하다. 로그 1813아래에 테이블 ( TGAT ) 1815와 그룹 주소 테이블 ( 총 ) 1816은 일시적인 그룹 주소이다. 총 1816은 논리 그룹 어드레스순에 연속적으로 정돈된 모든 논리 그룹을 위한 물리적 주소를 포함한 영속성 기억 장치에 섹터에 수용된 주소표이다. 그러므로, 총에 있는 n번째 엔트리가 논리 그룹 어드레스 n.를 가진 lofical 그룹에 총 1816에 수용된 어드레스 데이터가 메타블록 사이즈를 위한 엔트리, 그룹 번호와 블록 주소로 그림 16에 나타내어진 포맷에 들어가다고 관련된다
총 섹터는 논리 그룹의 논리적으로 근접한 세트를 위한 엔트리를 가지는 헌신적인 총 블록에 저장되어진다. 총 블록이 2 파티션으로 분리하며 총 파티션과 TGAT 파티션은 총 파티션이 총 블록의 논리적 주소 범위에 각각의 논리 그룹을 위한 원래 엔트리를 포함한다. TGAT 파티션은 총 섹터로서 똑같은 포맷을 가짐으로써 섹터를 포함한다. 개정하는 것 전에 어드레스 데이터를 개정하기 위해 어드레스 TGAT 섹터. 정기적으로, 블록 I에 있는 총 파티션이 TGAT 파티션에 섹터에 리코딩된 갱신을 통합시키기 위해 다시 쓰여진다. TGAT 섹터는 어드레스 정보를 개정하기 위해 총에 일시적으로 대응하는 섹터를 교체하게 된다. PGAT 섹터는 유효한 TGAT 섹터의 지수를 포함한다. 이 지수는 기입되어진 TGAT 섹터에 유효하다. 어떤 그와 같은 지수는 총에 요구되지 않다. TGAT 섹터는 관련된 로그로부터 어드레스 정보로 총 섹터를 개정한다. WSL과 로그 엔트리는 삭제된다.
특별한 논리적 주소를 가진 데이터의 섹터의 물리적 섹터 어드레스가 목록 1814-1816. WSL들로부터 결정될 수 있다 섹터가 최근에 기술되었던 결정하기 위해 첫째로 리딩시킨다. 만약 그렇다면, 물리적 섹터 어드레스가 WSL에 섹터의 위치에 해당한 메타블록 어드레스로부터 발견된다. 섹터가 WSLs에서 발견되지 않으면, TGAT 섹터에 있는 지수가 섹터가 적절한 총 섹터가 그것의 물리 위치를 결정하기 위해 읽어주는 TGAT을 가지는지 결정하기 위해 리딩시킨다. Look-ahead 로그, TGAT의 캐싱과 제어기 SRAM에 있는 총 엔트리가 데이터가 기술되거나 연속한 어드레스순으로 리딩시킬 주소 변환 시간을 감축시키기 위해 수행될 수 있다.
도형 18D는 삭제된 블록과 주소 변환을 다루기 위해 이용된 데이터 구조체를 나타낸다. 이미 기입된 목록에 더하여, 블록 주소 1821과 부트 블록 어드레스 1821과 부트 블록 1820이 나타내어진다. 블록 주소 1821이 모두의 물리적 주소의 리스트작성을 형성한다 제어 데이터를 저장하는 블록을 지우 구조화시킨 한. 헌신적인 블록 주소 ( BA ) 블록이 BA 블록을 저장하기 위해 이용될 수 있다 BA 섹터를 저장하기 위해 이용될 수 있는 제어 블록의 위치가 변화일 때 블록 주소 1821.를 포함하는, 새로운 BA 섹터가 기술된다. 프라이어리 BA 섹터는 시대에 뒤떨어진 것으로 마킹된다. 그러므로, 기입되어진 BA 섹터가 유효하다.
부트 블록 1820은 부트 섹터를 포함하는 블록이다. 부트 섹터에 있는 정보가 변환될 때, 새로운 기동 섹터가 설명된다. 기입되어진 부트 섹터가 유효한 부트 블록 1820 이며 고정된 물리적 위치를 가지고 시스템 초기화동안 주사함으로써 식별이 된다. 주사하는 것은 부트 블록의 위치가 범위 내가 아니라 정확한 위치에 고정되기 때문에 필요하다. 이것은 배드블록을 지우는 것을 허락하고 있다.부트 블록의 위치가 좁은 범위 그렇게 스캐닝 내에 고정될 수 있고 신속히 완성될 수 있다. 부트 섹터는 블록 주소 1821의 위치와 요구될 수 있는 다른 어느 시스템 형상 정보를 포함한다. 그러므로 초기화는 그림 18D에 있는 데이터 구조체일 수 있다 신속히 복구한. 부트 블록 1820이 블록 주소 182의 고정 위치를 가지며, 나타내어진 데이터 구조체의 위치를 가리킨다.
확실한 데이터 구조체는 EBL 블록과 같은 ABL 블록의 사용중인 블록, PBL 블록과 총 블록을 기술한다. 그러한 사용중인 블록은 단일 블록일 수 있으며 또한 이것을 포함함으로써 메모리 배열의 소거블 혹은 개조 메타블록 일 수 있는 다중 블록을 지운다. 개조 메타블록을 이용하는 하나 장점은 이용된 개조 메타블록의 사이즈가 홀딩된 데이터량으로 조종될 수 있는다는 것이다. 예를 들어, 곳 메모리는 삭제된 블록의 큰 갯수를 가지고, 많은 PBL 섹터와 그렇게 큰 PBL 블록이 있을 수 있다 메모리 배열이 데이터로 가득 차있을 때 적당하게 삭제된 거의 블록의 수에 PBL 섹터의 갯수가 작고 더 작은 PBl 블록이 적당하다.
이때 개조 메타블록의 최대 크기보다 작은 제어 데이터를 사용된, 제어 데이터가 다른 데이터와 병렬로 프로그램화될 수 있다. 데이터가 프로그램화된 호스트에서부터 메모리 배열까지 보내질 때, 그와 같은 병렬 프로그래밍이 제어 데이터가 호스트 데이터의 프로그래밍으로 동시에 개정되도록 허용할 수 있다. 그러므로, 제어 데이터가 개정되는 동안 호스트 데이터의 프로그래밍에 어떤 방해가 없다, 그림 15D, 15E 그리고 15F에 나타내어진 감소된 평행 프로그래밍 때문에 프로그램밍 속도에 감소가 있을 수 있을지라도 프로그래밍에 제어 데이터의 조합, 병렬에 있는 복제된 데이터와 호스트 데이터를 적용할 수 있다. 이것은 호스트 데이터 프로그래밍이 제어 데이터가 프로그램화되었을 때까지 지연된 다른 메모리 시스템에 관찰된 전송 대기를 회피할 수 있다.
비휘발성 램
확실하고 비휘발성 메모리 제어 구조는 데이터가 임의적인 스타일에 액세스되도록 허용한다. 이것이 데이터가 페이지의 최소 단위에 기술되고 최소 단위에 지워진 플래시 메모리와 상반되며 소거블록을 포함한다. 비휘발성 임시 액세스 메모리 ( 비휘발성램 )의 실시예가 자기 저항성의 램형을 포함한다 ( MRAM), 강유전체 메모리 반도체 (Fe램)와 위상 변화 메모리 ( 또한 알려진 Ovonics 통합된 메모리 또는 OUM ).비휘발성램이 또한 플래시 메모리를 이용하는 메모리 시스템의 일환으로 이용될 수 있다. 비휘발성램이 분리된 칩에 위치할 수 있거나 그것이 콘트롤러 칩 또는 순간의 메모리 칩에 통합될 수 있다.
비휘발성램은 플래시 메모리 카드 또는 내장형 플래쉬 메모리 시스템의 일부일 수 있다. 비휘발성램은 비휘발성램에 수용된 데이터가 전력이 손실되면 손실되지 않은 장점으로, 휘발성 메모리 램으로서 똑같은 응용의 다수를 사용될 수 있다. 예를 들어, 매체관리 테이블은 비휘발성램에 유지될 수 있다.
그림 19는 메모리 시스템 1900. 메모리 시스템 1900에 위치한 비휘발성램 1901이 제거가능한 메모리 카드에 구현될 수 있다는 것을 보여준다. 비휘발성램 1901이 그것을 프로그래밍시키는 것에 앞서 데이터를 버퍼링하는 것에 의해 호스트 1904.에서부터 플래시 메모리 어레이 1910까지 수신되고 있는 데이터를 위한 버퍼로서 이용될 수 있고, 메모리 배열 1910의 개조 메타블록s가 더 잘 수신 데이터를 피팅시키라고 형성될 수 있다. 에 보여준 채 이전 실시예에 메모리 배열의 메타블록들에 수용된 도형 12A, 12B, 12C, 데이터가 그 데이터를 위한 형성된 더 좋은 메 타블록들에 늦게 카피된다. 비휘발성램 버퍼의 사용으로, 그와 같은 카피식 플래시 메모리의 한 부분으로부터 또 다른 것이 회피되거나 최소가 될 수 있다.
도형 20은 개조 논리 블록의 실시예는 호스트로부터 수신되었으면서, NVRAN에 처음에 stroed는 데이터의 스트림의 경계부를 반사하라고 형성될 수 있다는 것을 보여준다. 데이터 스트림 2001과 2002는 호스트로부터 수신되었으면서, 비휘발성램에 수용된다. 데이터 스트림 2001과 2002는 논리적으로 불연속적이다. 그러므로, 그들이 각 스트림이고 다르게 처리할 수 있는 지적한 데이터 스트림 2001과 데이터 스트림 2002 사이에 논리적 주소 범위에 갭이 있다. 다른 스트림이 지적함으로써 스트림 사이의 시간 지연 또는 호스트로부터의 몇몇 통신에 의해 또한 구별될 수 있으며 스트림 사이의 차단이 현재를 제어할 수 있다.
데이터 스트림 2001이 5 이상 논리 그룹 2010-2014. 데이터 스트림 2002를 확장하는 것이 가지는 논리적 주소 범위를 가진다 7 이상 논리 그룹 2017-2014. 데이터 스트림 2002를 확장하는 논리적 주소 범위가 7 이상 논리 그룹 2017-2023.에게 적응할 수 있는 논리 블록 2030을 제공하는 논리적 주소 범위를 가지고 2031이 논리 그룹 2010-2014. 적응할 수 있는 논리 블록 2032 그리고 2033으로부터 형성한 논리 그룹 2017-2023. 적응할 수 있는 논리 블록 2030-2033으로부터 형성된 플래시 메모리 어레이 2040에 데이터 스트림 2001,2002의 프로그래밍 동안 최대 평행을 허용하라고 형성된다. 플래시 메모리 어레이 2040이 4 평면 그렇게 적응할 수 있는 논리 블록을 가진다 4 논리 그룹의 최대 크기를 가지고 최대 평행으로 개별적으로 프로그램화할 수 있다. 적응할 수 있는 논리 블록 2031, 2032는 최대 평행으로, 평 행하게, 함께 프로그램화될 수 있다. 데이터 스트림 2001이 특별한 호스트 파일에 일치하고 데이터 스트림 2002가 다른 호스트 파일에 일치하면, 그것이 다르고 적응할 수 있는 메타블록에 두개의 파일에 다른 개조메타블록을 유지하기 위해 유리하고 그래서 그들이 데이터의 카피식의 최소량으로 개별적으로 개정할 수 있다. 그러므로, 데이터 스트림을 포함하기 위해 이용된 논리 블록의 경계부. 데이터 스트림이 데이터 스트림. 데이터 스트림 2001 그리고 2002의 경계부에 가능한 만큼 가까이 매칭한다 데이터에 데이터를 프로그래밍시키기 위한 최적 방법이 메모리 배열 2040.를 번쩍이기 위해 스트리밍하는지 결정하기 위해 비교될 수 있는 도형 20의 실시예가 데이터 스트림 2001, 2002가 NVRAM 1901에 수용되고 메모리 배열 2040이 메모리 셀 어레이 1910을 번쩍이기 위해 일치한 그림 19에 나타내어진 하드웨어에서 구현될 수 있다
그림 21은 NVRAN의 또 다른 응용을 나타낸다. 데이터의 본성에 의지한 메모리의 형태에 저장될 수 있기 위해서 플레쉬 메모리 화 비휘발성 메모리시스템을 집적한다. . 자주 개정되는 예를 들어, 데이터가 NVRAM. NVRAM에 수용될 수 있다 플래시 메모리와 같이 이용되고 형성될 수 있다. 플래시 메모리의 사항을 가진 것은 블록 크기를 지우고, NBRAM이 동일 사이즈의 데이터의 장치로 작동하라고 형성할 수 있다
도형 21은 최신 데이터 2140을 NVRAM에 수용되라는 것을 보여준다. 적응할 수 있는 논리 블록 2130-2132가 원본 데이터 2105. 적응할 수 있는 논리 블록 2130-2132의 스트림으로부터 원본 데이터를 포함함으로써 논리 그룹 2110-2121으로 부터 형성된다.updated 데이터 2140이 ( 미도시 ) 호스트로부터 수신되는 메모리 배열에 프로그램화된다. 일찍 기술된 것처럼, 최신 데이터가 갱신 고 그래서 더 적응할 수 있는 논리 블록 동안 새로운 적응할 수 있는 논리 블록에 수용될 수 있다 최신 데이터와 다르고 적응할 수 있는 논리 블록을 포함하며 단지 원본 데이터를 포함한다. 논리 그룹 2125, 2126이 최신 데이터 2140으로부터 형성되고 원래 논리 그룹 2115, 2116. 적응할 수 있는 논리 블록 2135로부터의 몇몇 원본 데이터가 논리 그룹 2125, 2126. 적응할 수 있는 논리 블록 2136, 2137으로부터 형성된다 적응할 수 있는 논리 블록 2131에 남아있는 논리 그룹으로부터 형성된다. 그러므로, 적응할 수 있는 논리 블록 2131이 적응할 수 있는 논리 블록 2136과 단지 원본 데이터를 포함하는 2137 그리고 최신 데이터를 포함하는 적응할 수 있는 논리 블록 2135에 의해 교체된다.
적응할 수 있는 논리 블록 2135는 플래시 메모리 어레이에, NVRAM에 stroed. 이것은 적응할 수 있는 논리 블록 2135가 효율적으로 개정되도록 허용한다. 플래시 메모리로 가능하는 것보다 더 높은 속도에 NVRAM에게 편지를 쓰는 것은 가능하다. 데이터는 비순서에 그리고 가비지 수집 없이 기술될 수 있다. 미디어 관리자는 플래시 메모리에 비슷한 방법에 NVRAM을 처리할 수 있다. NVRAM이 동일 사이즈를 가지는 주소지정 가능 장치로 분리함으로써 한 플래시 메모리의 블록을 지운다. 주소지정 가능 장치는 평행하게 프로그램화될 수 있다. 단순히 논리 그룹 2125,2126의 위치를 리코딩하는 테이블은 NVRAM에 주소지정 가능 장치의 어드레스를 리코딩한다. 최신 데이터로서 똑같은 논리적인 범위를 가진 데이터의 후속 갱신이 있다면, 이러한 갱신이 이용 가능한 NVRAM 캐패시티를 생성시키기 위해 NVRAM에서부터 플래시 메모리까지 작동될 수 있다.
적응할 수 있는 논리 블록 2136과 2137은 각각 단지 하나 논리 그룹을 가진다. 이러한 논리 그룹이 바뀔 수 있고 그래서 새롭고 적응할 수 있는 논리 블록 2138,2139가 형성된다. 적응할 수 있는 논리 블록 2138,2139는 적응할 수 있는 논리 블록 2136,2137보다 더 크고 더 효율적인 데이터 핸드링을 허용할 수 있다.
데이터 경계
데이터 경계는 메모리 시스템에 의해 수신되는 데이터에 존재할 수 있다. 데이터 경계 ( 논리적인 경계부 )의 실시예는 데이터 구동 경계부와 파일 경계부를 포함한다. 일반적으로, 호스트 파일이 저장된다 파일 기억 장치를 위한 호스트에 의해 배정된다. 데이터 구동은 이미 유효 데이터를 포함하지 않는 논리 주소 공간의 부분에게 양도된다 그림 22가 A가 데이터 구동 1을 포함하라는 것을 2 파일, 파일 A와 파일 B 파일에 보여주고, 데이터 구동 3과 데이터 구동 5가 B를 출원한다 데이터 구동 2와 데이터 구동 4가 포함한다.
파일 경계부가 생성된 호스트가 또 다른 파일의 단부뒤에 바로 어드레스에 파일을 기술하기 시작할. 그러므로, 파일 경계부가 데이터 구동 내에 놓여있을 수 있다. 도형 23은 파일 C와 단데이타 구동 내에 기술된 파일 D 사이에 파일 경계부를 나타낸다.
일반적으로, 데이터가 적응할 수 있는 메타블록들을 이용하는 메모리 배열에 의해 수신될 때, 데이터의 저장을 위한 적응할 수 있는 메타블록들의 구조가 데이 터 경계의 위치를 고려하지 않다. 이것이 데이터 경계의 위치가 알려지지 않기 때문에 일 수 있다거나 데이터가 신속히 대규모로 적응할 수 있는 메타블록들을 쓰여지도록 강요하는 시간 구속 때문에. 그런 메모리 배열에 수용된 데이터가 개정될 때, 몇몇 데이터가 원래 메타블록들에서부터 새로운 메타블록들까지 카피되어야 한다. 그와 같은 부분의 카피식은 가비지 수집 동안 발생할 수 있고 자원을 다 써버릴 수 있어 심각한 문제를 야기할 수 있다. 그러므로, 데이터 경계를 포함하는 적응할 수 있는 메타블록들이 그들이 개정될 때 불필요한 부하를 초래할 수 있다.
우수한 성능은 메모리 배열 안에 있는 데이터의 최소화 카피식는 동안 프로그래밍 동안 평행을 극대화함으로써 달성될 수 있다. 이러한 2 목표가 적응할 수 있는 메타블록들을 프로그래밍시킴으로써 달성될 수 있으며 평행하여 높은 각도 평행을 달성한, 그리고 데이터 경계를 포함하기 위해 최소 구성 크기의 적응할 수 있는 논리 블록 ( 메타그룹들 )를 형성함으로써 개조메타블럭틀은 프로그램블럭에 형성되고 이것은 유니트로써 프로그램화 된다.프로그램 블록은 최대 병렬 프로그래밍과 한 계열이다. 그러므로, 프로그램 블록이 위로 집합적으로 메모리의 모든 평면을 가로질러 연장되는 적응할 수 있는 메타블록들의 치장하게 된다. 도형 24는 그런 메모리 시스템에 이용된 데이터 부의 계층구성을 나타낸다.
데이터 경계를 포함하기 위해 최소 규모인 메타그룹들을 형성하는 [0178] 실시예가 그림 25에 나타내어지고 26.fig 25가 최소 규모인 메타그룹 인 메타그룹에 수용됨으로써 각각 2 데이터 항아리 경계부를 나타내어진다. Hest 섹터 데이터 구동 2510이 그러므로 논리적 주소 A에서부터 논리적인 A+4n+X.까지 연장되고, 데이 터 경계 2520이 논리적 주소 A+4n+X. 논리적 주소 A+4n+X에 존재한다 안에 이 논리 그룹 2530.가 B를 메타그룹 데이터 경계 2520.를 포함하기 위해 형성된 B를 메타그룹 단지 단일의 논리 그룹을 포함하는 최소 규모인 메타그룹 이다. 호스트 섹터 데이터 구동 2510의 잔여부가 메타그룹 A. metabroup A에 포함된다 최소 규모인 메타그룹 이지 않지만 4 논리 그룹을 포함하지 않다. 그림 25가 또한 호스트 섹터 데이터 구동 2511을 그러므로 논리적 주소 B+Y.로부터 연장되라는 것을 보여주고, 데이터 경계가 논리적 주소 B+Y. 논리적 주소 B+Y에 형성한다 안에 이 논리 그룹 2531.가 C를 메타그룹 데이터 경계 2521.메타그룹 C를 포함하기 위해 형성되 단지 단일의 논리 그룹을 포함하는 최소 규모인 메타그룹 이다. 호스트 섹터 데이터 구동 2511의 잔여부가 메타그룹 D. 메타그룹 D에 포함된다 2 논리 그룹을 가지고 최소 규모인 메타그룹 이지 않다. 때 호스트 섹터 데이터가 2510과 2511을 운영한 것은 더 늦다 개정된, 이것이 업데이트된 것에 없는 추가 데이터의 작은 카피식을 처리할 수 있고, 이것이 추가 데이터의 작은 카피식을 처리할 수 있는 유일한 메타그룹들 B와 C가 추가 데이터를 포함하기 때문에 최신 데이터 구동에 없 그리고 이러한 각각 추가 데이터의 하나 이하의 논리 그룹을 포함한다.
그림 26은 파일 2610과 파일 2611 사이의 파일 경계부 2615를 최소 구성 크기의 적응할 수 있는 메타그룹에 매핑되라는 것을 보여준다. [ 파일 경계부 2615가 논리적 주소 A +4n+X. 파일 경계부 2615에 나타내어진다 호스트 섹터 데이터 구동 2605. 논리적 주소 A+4n+X 내에 이 논리 그룹 2630. 내에 발생한 B를 메타그룹 논리 그룹 2630.로부터 형성된 A를 메타그룹 파일 2610.의 잔여부로부터 형성된 C를 메타그룹 파일 2611.의 잔여부로부터 형성된 2610을 출원하 단지, 그러므로, 메타그룹들 A와 B를 개정함으로써 개정될 수 있는 메타그룹 B에 포함된 파일 2611의 부분 2641이 파일의 갱신 동안 카피될 것이 : 유사하게 A, 파일 B가 메타그룹들 B와 C.를 개정함으로써 개정될 수 있는 이것이 단지 카피식을 포함한 메타그룹 ; B에 수용되는 파일 2610의 부분 2640. [0180] 가지의 데이터 경계 정보가 메모리 시스템에 공급된 데이터로부터 메모리 시스템에 의해 결정되어도 되거나 데이터 경계 정보가 메모리 시스템에 직접적으로 공급될 수 있다. 예를 들어, 호스트는 호스트가 메모리 시스템에 공급한 데이터를 간주함으로써 데이터 경계 정보를 공급할 수 있다. 데이터 경계 정보는 호스트에 의해 공급됨으로써 데이터 내에 데이터 구동 경계부 또는 파일 경계부의 위치를 포함할 수 있다. 그와 같은 데이터 경계 정보는 경계부를 포함함으로써 데이터보다 앞서 일반적으로 제공된다. 메타그룹의 최대 크기가 L 논리 그룹일 때, 제공됨으로써 데이터보다 앞서 데이터 경계 정보 적어도 논리 그룹을 제공하는 것은 바람직하다.
호스트가 또한 일련의 데이터의 단부의 통지를 제공할 수 있는 어떤 데이터가 즉각적인 라이팅에 이용하지 않는 것을 나타내기 위해 달린다. 이 통지는 메모리 시스템이 이면 동작을 예정하도록 허용한다. 전원 끄기 작동의 통지는 호스트에 의해 또한 제공될 수 있다. 그런 통지가 핸드셰이크 동작. 전원 끄기 작동의 일부일 수 있다 전원 끄기를 위한 적당한 조건에 들어가는 메모리 시스템이 지적함으로써 호스트에 응답할 때까지 발생하지 않을지도 모른다. 호스트와 메모리 시스템 사이의 대화 교환이 전원 연결 뒤에 일어날 수 있고 그래서 메모리 시스템이 그것의 성능을 호스트에게 공지할 수 있다. 그러한 성능이 액셉트하기 위해 성능을 포함할 수 있다. 그리고 상술한 바와 같이 데이터 경계영역 정보를 이용한다
호스트로부터 데이터 경계 정보를 수신하는 것에 더하여 , 데이터 경계가 다른 소스로부터 또한 메모리 시스템에 의해 결정될 수 있다. 이것은 개정되는 일정 한도의 데이터에서 데이터 경계 위치를 얻을 것을 포함할 수 있다. 데이터 구동의 스타트는 호스트에 의해 제공된 데이터 주소로부터 직접적으로 식별될 수 있다. 데이터 구동의 단부는 아드레스트 전이에서부터 또 다른 데이터 구동까지 생각될 수 있다. 파일 경계부는 디렉토리의 패턴과 호스트에 의한 체지방 액세스로부터 생각될 수 있다. 원본 데이터를 위한 메타그룹 매핑은 데이터와 파일 경계부를 추론하기 위해 또한 이용될 수 있다.
데이터 경계영역 관리
설계 A에 있는 데이터 경계영역에 응답하는 구조에 데이터를 수용하는 것이 플래시 메모리에 저장을 위한 메타그룹들에 데이터를 매핑하면서, 첫째로 일시적인 위치에 그와 같은 데이터를 수용하는 것에 의해 이루어질 수 있다. 일시적인 위치가 플래시 메모리 어레이 그림 27의 부분에 의해 제공될 수 있다. 데이터를 형성하기 위한 이러한 2 대안을 데이터 경계 경영 정보를 이용하라는 것을 보여준다. 설계 데이터 경계부 관리로 플래시 메모리에 저장에 앞서 매핑하는 것을 메타그룹 지배당하는 임시 누산기 램형에 수용된 쇼 데이터. 설계 B는 메타그룹 리매핑에 앞서 중간 메타그룹 매핑으로 플래시 메모리에 수용된 데이터를 보여주고 나서 데이터 경계 관리로 플래시 메모리에 저장한다
일시적인 누산기 램형은 데이터 경계영역, 누산기 램형의 위치에 의해 결정되어도 되는 방법에 있는 플래시 메모리에 있는 병렬 프로그래밍이 적어도 하나 프로그램 블록을 허용하기 위해 충분한 용량을 가질 수 있기 때문에 다음에 전이되는 샷으로부터 데이터의 섹터를 수신한다. 누산기 램형이 그런 경우에 영속성 기억 장치일 수 있다. 전력이 데이터가 플래시 메모리에 프로그램화되기 전에 호스트에 의해 제거되면 누산기 램형에 데이터의 손실량의 위험 부담이 있다. 이 위험 부담은 호스트와 메모리 시스템 사이에 적절한 프로토콜을 가짐으로써 다루어질 수 있다.
그림 28A가 최대 프로그램밍 속도를 위한 도형 25에 나타내어진 메타블록들 A-D의 위로 미치는 프로그램 블록 2800을 나타내고, 그것이 함께 프로그램 메타블록 A-D에 바람직하고 그러므로 메모리 시스템의 최대 병렬 프로그래밍 캐패시티를 이용한다. 파일을 개정하는 것에 효율을 위해, 그것이 메타블록들 B를 유지하기 위해 바람직하고 하나로 구성된 분리된 메타블록들로서의 C가 블록을 지운다 각각. 도형 28A에 나타내어진 데이터의 구조는 이러한 말단 양쪽을 달성한다. 2 각각의 데이터가, 데이터 구동 2510로부터 A+4n+X에와 데이터 구동 2511 B+Y로부터 B+3n-a. 그림 28B가 어떻게 이러한 데이터 구동으로부터의 데이터의 섹터가 본 예에 메타블록들 A-D 안으로 프로그램화될 수 있다는 것을 보여주며, 페이지를 달린 것처럼 호스트로부터 가속 데이터의 섹터가 데이터의 단일 섹터를 포함한다. 그러나 다른 실시예에 페이지가 다중 섹터를 포함할 수 있다. 프로그램 블록은 메모리 배열의 모든 평면을 가로질러 연장된다. 프로그램 블록 내에, 섹터가 메타블록 구조에 의해 결정된 순서에 프로그램화될 수 있다. 프로그램 블록 페이지가 표시된 하나 프로그램 블록 페이지가 평행하게 프로그램화될 수 있는 메모리 배열의 각각의 평면으로부터 페이지로 구성된 곳에서. 그러므로, 프로그램 블록 페이지 0이 메모리 배열의 모든 평면을 가로질러 연장되고 프로그램 블록 페이지 0에 있는 모든 섹터가 똑같은 프로그래밍 단계에 프로그램화한다. 프로그램 블록 페이지 0이 프로그램화되었을 때, 프로그램 블록 페이지 1이 프로그램화하고 기타 등등 이다. 섹터가 그림 28B에 프로그램화된 시퀀스는 이러한 섹터가 누산기 램형에 있는 이러한 섹터가 그림 28C. 그림 28C에 보여주는 순서의 변화가 프로그래밍을 위해 전이됨으로써 데이터 구동 2510과 누산기 램형에서 개최된 데이터 구동 2511을 보여주는 그림 25에 도시된 바와 같이 호스트에서부터 프로그램 블록 2800까지 수신된 순서이지 않다. 프로그램 블록에 카피되는 데이터는 나타내어진 것처럼 누산기 램형에 기술될 수 있다. A+5n-1에 대한 섹터 A+4n+X와 B+Y에 대한 B가 누산기 램형에 카피되고 그래서 그들이 프로그램 blokc에 이더넷에 이용한다. 또는, 카피되는 데이터가 플래시 메모리에 이미 위치할 수 있고 플래시 메모리 어레이의 일형에서부터 또 다른 것까지 그러므로 직접적으로 카피될 수 있다. 그림 2C는 그림 28B의 프로그램 블록 페이지 0과 프로그램 블록 페이지 1을 위한 섹터의 매핑을 나타낸다 [0186] 플래시 메모리가 호스트로부터 수신된 데이터를 위한 잠정 기억 장치 위치를 제공하기 위해 이용될 때, 도형 27에 있는 설계 B에서와 같이, 데이터가 메타그룹들의 다양한 유형을 포함함으로써 중간 포맷에 수용될 수 있다. 그와 같은 메타그룹들의 사이즈는 어떠한 논리적인 경계부 뒤에 더 데이터를 전이시키기 위해 최대 규모인 메타그룹의 그리고 또한 요구사항에 의해 논리적 주소 범위의 존재에 의해 결정된다.
가득 찬 메타그룹2900은 어디에 저장된 데이터에 어떤 논리적인 경계부가 없거나 어디에 현재 어떠한 논리적인 경계부에 관하여 이용 가능한 어떤 정보가 없 가득 찬 메타그룹이 할당되는 그림 29A에 나타내어진다.
부분적인 메타그룹 2901이 곳 저장된 데이터에 있는 논리적인 경계부 존재하며, 부분적인 메타그룹이 할당될 수 있는 도형 29B에 나타내어지지만 최대 경계부가 ( 예를 들어, 호스트로부터 ) 프로그래밍 앞에 알려질 수 있거나 프로그래밍 ( 예를 들어, 호스트로부터 ) 동안 마주치게 될 수 있거나 프로그래밍 동안 마주치게 될 수 있다. 부분적인 메타그룹은 메타그룹들에 가능한 최대 개수보다 데이터의 더 더 적은 논리 그룹을 포함한다. 부분적인 메타그룹은 최대 크기의 메타블록에 프로그램화되고 그래서 평행하게 어레이의 모든 평면을 이용함으로써 프로그램화되고 가능한 한 신속히 그렇게 프로그램화된다.
짧은 메타그룹 2902는 그림 29C에 나타내어진다. 짧은 메타그룹이 배정될 수 있는 논리적인 경계부가 저장되기 위해 데이터에 존재하고 최대 평행이 필요로 하지 않고 짧은 메타그룹은 메타그룹에 가능한 최대 개수의 논리 그룹보다 더 적은 논리 그룹을 가진다. 짧은 메타그룹이 더 적 포함하는 메타블록에 프로그램화된다 최대 크기의 메타블록에 포함되는 것보다 블록을 지운다. 데이터 기입 대역폭이 감축된다 그러나 재설정된 데이터가 짧은 메타그룹과 병렬로 프로그램화될 수 있다. 짧은 메타그룹은 호스트가 더 데이터가 바로 데이터 구동 경계부를 따르지 않을 것이는다는 것을 암시했을 때 이용될 수 있다.
스타트 메타그룹 2903은 그림 29D에 나타내어진다. 스타트 메타그룹은 데이 터 구동의 스타트 경계부에 데이터를 저장하기 위해 배정된다. 얼라인먼트 오프셋이 이용될 수 있는 데이터 구동에 있는 첫번째 섹터가 논리 그룹의 첫번째 섹터이지 않을. 스타트 메타그룹은 또한 논리적인 경계부가 기입 동안 마주치게 된 부분적인 메타그룹 일 수 있다
멀티파일 메타그룹 2904는 그림 29E에 나타내어진다.
멀티파일 메타그룹은 파일 경계부를 포함하고 그러므로 적어도 2 다른 파일의 부분을 포함한다. 멀티파일 메타그룹은 또한 부분적이 짧거나 스타트 메타그룹일 수 있다.
중간 포맷의 메타그룹에 있는 데이터는 논리적인 경계부가 현잴 때 후속 시간에 더 많은 바람직한 구조에 상술한 바와 같이 재측량할 수 있다. 가득 찬 메타그룹이 어떤 논리적인 경계부를 포함하지 않기 때문에, 어떤 재매핑이 필요로 하지 않다. 그러나 부분적이고 짧은 스타트와 멀티파일 메타그룹이 재측량할 수 있다 그림 30에 나타내어진다. 그림 30A는 부분적인 메타그룹의 재매핑이 그림 30에 도시된 바와 같이 재측량할 수 있다는 것을 보여준다. 그림 30A는 메타그룹 A와 메타그룹 B. 메타그룹 B로의 부분적인 메타그룹 3010의 재매핑이 최소 구성 크기 ( 하나 논리 그룹 )의 메타그룹 이다는 것을 보여준다. 메타블록 B는 원블록으로부터 카피된 데이터로 완성된다. 그림 30B는 메타의 A와 메타의 B 안으로 짧은 메타그룹 3020의 재매핑을 나타낸다. 이것은 부분적인 메타의 재매핑과 비슷하다. 그림 30C는 메타의 A와 메타의 B 안으로 스타트의 재매핑에 메타 3030을 보여준다. 여기에서, 스타트 메타 3030이 얼라인먼트 오프셋을 가진다. 이 얼라인먼트 오프셋이 제 거되고 그래서 메타의 그룹 A가 순차 명령에 들어간다. 그림 30D는 메타의 A,B와 C에 재측량한 멀티 메타 3040을 나타낸다. 메타 B는 논리적인 경계부 3041을 포함한다. 메타의 B는 최소 구성 크기 ( 하나 논리 그룹 )의 메타이다
중간 포맷에 있는 데이터가 재측량하기 위해 분석처리될 수 있다 바로. 그 대신에, 프로그램 동작이 데이터에 있을 예정일 수 있고 데이터와 계획된 재매핑에 관한 정보가 재배치 목록에 수용될 수 있다. 데이터 위치 재설정이 배경에 행해질 수 있다, 더 많은 적당한 시간에 또는 내장 자료의 범위 내에 최신 데이터의 수신과 같은 이벤트에 의해 트리거링될 수 있다. 재배치 목록은 예를 들면 로그에 또는 헌신적인 재배치 섹터에, 플래시 메모리에 적당한 제어 정보 구조에 수용될 수 있다.
재배치 목록은 재배치 작동이 펜딩되는 중이 중간 포맷에 각각의 최근에 쓰여진 메타그룹을 위한 하나 엔트리를 가진다. 그러한 메타그룹들은 일반적으로 데이터 경계를 포함한다. 재배치 목록에 있는 엔트리가 다음과 같이 6 필드를 포함할 수 있다 ;
메타그룹의 종류(부분,단축,시작,멀티파일)
메타그룹내 데이터 구동의 스타트의 논리주소
메타그룹 크기(메타그룹내 논리그룹들의 수)
메타블록 크기(메타블록내 소거블록의 수)
메타그룹내 영역의 오프셋
페이지 테그
엔트리는 중간 포맷에 있는 메타가 생성될 때 목록에 추가된다. 엔트리는 중간 포맷에 있는 메타가 목록으로부터 삭제될 때 목록에서 제거한다. 엔트리가 추가되거나 삭제될 때 목록이 새로운 위치에 대한 새로운 목록, 예를 들면 새로운 로그 섹터 또는 새로운 재배치 섹터를 기술함으로써 개정될 수 있다
재배치 목록에 있는 메타의 매핑은 연관 데이터와 관련하여 어떤 매체관리 작동을 사용되지 않다. 매체관리 제어 구조는 데이터의 잠정 기억 장치를 위한 배정되는 중간 포맷 메타그룹들에 관한 것이다. 그러므로, 엔트리가 다른 매체관리 기능에 영향을 미치는 것 없이 재배치 목록에서 제거할 수 있다. 예를 들어, 출원중인 작동의 비축 프로그램이 또한 크게 되면, 엔트리가 삭제될 수 있다. 이것은 단순히 데이터가 메모리 배열에 수용되라는 방법의 효율을 감축시킨다.
중간 포맷로부터의 데이터의 프로그래밍이 예정되고 그래서 호스트 데이터를 기술하기 위한 호스트에 이용 가능한 기입 대역폭이 감축되지 않다. 재배치 작동은 데이터가 호스트로부터 수신되지 않는 중일 때 이면 동작으로서 수행될 수 있다. 단일의 중간 메타를 위한 모든 재측량한 메타그룹들은 평행하게 프로그램화된다. 호스트를 가진 핸드셰이크 프로토콜이 메모리 시스템의 전원 끄기를 다루기 위해 설치될 수 있고 그래서 전력의 손실량이 재배치 작동이 수행되고 있는 동안 발생한다. 재배치 작동은 원래 호스트 데이터의 프로그래밍과 병렬로 수행될 수 있다. 그림 31은 메모리 배열 3160으로부터 재배치된 데이터가 평행하게 적응할 수 있는 메 타블록 3120에 프로그램화되는 동안 적응할 수 있는 메타블록 3110에 프로그램화된 호스트 3150으로부터 데이터를 나타낸다. 그런 병렬 동작이 원래 호스트 데이터를 기술하기 위한 이용 가능한 기입 대역폭을 감축시킬 것이기 때문에, 그와 같은 병렬 프로그래밍이 단지 적절한 호스트가 더 이상 원래 호스트 데이터가 즉각적인 라이팅에 이용하지 않다고 메모리 시스템에게 통보할.
재배치 작동은 호스트 갱신에 응하여 수행될 수 있다. 개정된 데이터가 중간 포맷에 들어가고 재배치 목록에 목록화할 때, 최신 데이터가 중간 메타그룹들로부터 카피되는 데이터와 함께 재측량한 포맷에 기술될 수 있다. 재배치 작동은 호스트 인터페이스에 새로운 트랜젝션에 신속한 응답을 허용하기 위해 현탁될 수 있다. 재배치 작동이 현재 페이지 프로그램 동작의 완성 뒤에 현탁될 수 있고, 그런 경우에 그것이 다음 페이지의 프로그래밍으로 늦게 재개된다. 또는, 칩의 아키텍쳐가 고려하면, 재배치 작동이 프로그래밍이 지나면 현탁될 수 있다 페이지, 빠른 응답을 위해. 페이지 프로그래밍 동안 재배치 작동을 현탁시키기 위해, 플래시 메모리에 있는 그것의 실행 처리가 플래시 메모리 칩에 리셋 명령 신호를 인가하게되면서 종료되게된다. 칩은 바로 새로운 호스트 트랜젝션에 응하여 액세스에 이용한다. 재배치 작동은 플래시 칩에 중단된 페이지를 위한 재전송 동일한 데이터에 의해 다음에 재개되고 프로그램 커맨드에 의해 따르게 될 수 있다. 많은 플래시 칩 목적지는 데이터 패턴이 변하지 않은 채로 남아 있다면, 부분적으로 프로그램화된 페이지의 프로그래밍이 재시작되도록 허용한다.
호스트가 수반하는 영역위치 정보의 데이터 저장
일실시예에 의하면, 더 효율적으로 메모리 배열에 호스트 데이터를 수용하기 위해 이용될 수 있는 메모리 시스템에 대한 호스트 제공받은 추가 정보. 그와 같은 정보의 일 실시예는 보내진 호스트 데이터에 데이터 경계 ( 논리적인 경계부 )의 위치이다. 일반적으로, 데이터 경계의 위치가 포함함으로써 호스트 데이터 앞에 제공되어야 한다 경계부가 보내지고 그래서 호스트 데이터가 그들일 때 효율적인 방법에 수용될 수 있고 중간 포맷 목록에 수용될 필요가 없다.
데이터 경계 위치에 근거하여 더 많은 효율적인 방법에 호스트 데이터를 수용하기 위해, 메모리 배열의 적응할 수 있는 메타블록들에 데이터를 수용하는 것 전에 확실한 데이터를 버퍼링하는 것은 유리하다. 일련의 순간의 버퍼는 이 목적에 제공될 수 있다. 그림 32가 구성되는 일련의 플래시 버퍼 3202를 나타내며 삭제된 블록 풀 3204로부터 블록을 지운다. 종래의 메타블록과 같이 최대 크기의 적응할 수 있는 메타블록들로서 아마 형성된 일련의 플래시 버퍼 3202에 블록을 지우라. 이것은 데이터가 메모리 배열의 최대 평행으로 일련의 순간의 버퍼에 프로그램화되도록 허용한다. 메모리 배열이 평면 안으로 나눠진 곳에서, 이것이 일반적으로 일련의 플래시 버퍼의 메타블록이 포함한다고 의미한다 한 메모리 배열의 각각의 평면으로부터 블록을 지운다. 그러므로, 일련의 플래시 버퍼 3202가 일반적으로 인 버퍼 메타블록들의 그러나 반드시 포함된다, 메타블록들이 최대 평행으로 데이터의 저장을 허용한다.
일련의 플래시 버퍼로서 이용될 수 있는 구조의 실시예가 칭해진 유에스 특허 출원, 패드 블록에 처리한다 ˝ 대리인 도켓 번호 SNDK.406US0, 본 출원으로서 똑같은 데이터에 출원되 그리고 이로써 참고로 온전히 그대로 결합한다.
호스트 데이터는 기술된 적응할 수 있는 메타블록들로서 이전에 데이터 직접적으로 메모리 배열을 수용하는 것에게 대안으로서 일련의 플래시에게 버퍼 3202로 보내질 수 있다. 일련의 순간의 버퍼는 메모리 배열에 버퍼 메타블록들로 구성될 수 있다. 버퍼 메타블록은 논리적으로 말하지 않는 데이터의 다중부를 포함할 수 있다. 일련의 플래시 버퍼 3202 안에 있는 다른 메타블록들은 버퍼 메타블록들의 경계부를 메타블록 논리적인 경계부의 어떤 정합이 있지 않기 때문에 어떠한 특별한 중요성을 가진다. 그러므로, 연속한 데이터의 부분이 단일의 메타블록에 수용될 수 있거나 다중 메타블록들에 수용될 수 있고 버퍼 메타블록들에 일반적으로 배향되지 않다. 데이터가 버퍼 메타블록들로부터 카피된 것처럼, 버퍼 메타블록에 있는 데이터가 시대에 뒤떨어지게 될 수 있다. 버퍼 메타블록에 있는 모든 데이터가 시대에 뒤떨어질 때, 그 버퍼 메타블록을 포함함으로써 블록을 지우고 삭제된 블록 풀 3204 ( 평평한 블록 목록 또는 비슷한 구조에 )로 되돌아 갈 수 있다. 개별적으로 선택된 사이즈의 버퍼 메타블록. 몇몇 실시예 때문에, 최대 크기의 메타블록이 평행의 높은 각도를 제공하기 위해 버퍼 메타블록으로서 이용될 수 있다.
도형 33A는 호스트 데이터를 위한 2 대안 경로를 플래시 메모리 어레이의 할당되고 적응할 수 있는 메타블록에 수용되라는 것을 보여준다. 데이터가 또는 할당된 적응할 수 있는 메타블록 3308에 직접적으로 3306을 쓰여질 수 있고, 데이터가 특별한 데이터가 논리적인 경계부의 위치에 달려있을 수 있기 때문에 이용된 할당된 적응할 수 있는 메타블록 3316에 일련의 플래시 버퍼 3302의 버퍼 메타블록 3312와 버퍼 메타블록 3312로부터의 카피한 3314에 3310을 쓰여질 수 있다. 특히, 곳 논리적인 경계부의 위치는 호스트에 의해 제공되고, 경로가 이용되어야 한 측정이 제공된 위치에 따라서 만들어질 수 있다. 데이터의 부분이 최대 규모인 메타그룹보다 고 어떠한 논리적인 경계부를 가질, 데이터의 부불 지도 모르 직접적으로 할당되고 적응할 수 있는 메타블록에 수용된다. 최대 크기의 적응할 수 있는 메타블록들이 이용될 최대 평행을 위해 가능하다. 부분 데이터의 최대 규모인 메타그룹보다 못하게 저장된다. 측정 그것에 이용되기 위해 경로화한 부분의 사이즈에 근거하여 일 수 있다. 데이터의 부분이 논리적인 경계부를 가진 곳에서, 그것이 일반적으로 데이터의 최소 규모인 적응할 수 있는 메타블록들. 그와 같은 부분에 그것을 수용하기 위해 바람직하다 할당되고 적응할 수 있는 메타블록들에 카피된 버퍼 메타블록과 늦게 수용될 수 있다. 이것은 최대 평행으로, 데이터의 그와 같은 일부가 호스트로부터 수신되고 신속히 처음에 저장되도록 허용한다. 늦게, 데이터의 이러한 부분이 도형 33A에 3306과 3314에 의해 나타내어진 것처럼, 다른 데이터와 병렬로 할당되고 적응할 수 있는 메타블록들에 카피될 수 있고 그래서, 평행의 높은 각도가 이용된다. 그러므로, 어디에 최소 구성 크기의 적응할 수 있는 메타블록들이 기술되라고 평행의 낮은 값으로 데이터라고 쓰는 것이 일반적으로 회피된다.
그림 33B가 버퍼 메타블록 3318에 데이터 또 다른 실시예를 나타낸다 카피된 그것이 원래 적응할 수 있는 메타블록 3328. 본 예로부터 카피된 데이터 3324로 저장된 최소 규모인 적응할 수 있는 메타블록 3322에 대한 3320이 논리경계부를 포함한 최소 규모인 적응할 수 있는 메타블록의 전형이다. 왜냐하면 상기 논리경계는 상기 논리주소공간 어떤곳에서 발생되며, 논리영역의 일측에 데이터는 업데이트된 데이터와 몇몇의 원본데이터 양쪽에서 업데이트된다.
그림 34는 설계를 일련의 순간의 버퍼 설계 C를 이용하라는 것을 보여주고 몇몇 중간형식 ( 램형에 또는 플래시에 )에 완전히 수신 데이터를 수용하고 이전에 기술된 설계 A와 B. 설계 A와 B와 비교해 보면 데이터 ( 논리적인 경계부의 위치와 같은 )의 특성을 결정하고 그리고 나서 그 특성에 따라서 플래시에 데이터를 수용한다. 대조적으로 설계 C에, 데이터의 특성이 호스트로부터 수신된다. 이러한 특성의 영수지는 데이터가 특성에 따라서 플래시 메모리에 직접적으로 저장되도록 허용한다. 그러나, 몇몇 데이터가 특성에 따라서 플래시 메모리에 수용되기 위해, 고속의 작동을 허용되기 위해 버퍼 메타블록들 3430과 늦게 카피한 3432에 수용된다. 그러므로, 버퍼 메타블록들의 목적이 RM의 그것에게 다르거나 저장된 설계 A와 B와 많은 데이터의 중간 메타그룹들이 할당된 메타블록들에 직접적으로 기술한다.
데이터가 데이터에 개정될 수 있다.데이터 구동이 할당에 앞서 바로 자유롭게 할당된 섹터 사이에 연장되는 호스트에 의해 배정된 일련의 논리적으로 근접한 섹터인 것을 운영한다. 그러므로 데이터 구동은 호스트가 논리 주소 공간의 할당된 부분에 의해 경계지어지는 자유로운 논리 주소 공간의 연속부에 데이터를 배정할 때 형성된다. 몇몇 시스템에, 데이터 구동이 비효율을 초래하여도 된 메타그룹 구조로 배향되지 않다 데이터의 개정하는 것 동안. 여기에서 기술된 확실한 시스템에, 데이터 구동이 더 좋다 데이터에 메타그룹들 ( 그리고 상응한 적응할 수 있는 메타블록의 그러므로 사이즈 )의 사이즈와 경계 위치를 적응시킴으로써 메타그룹들 로 배향된다. 특히, 최소 규모인 메타그룹들은 데이터의 부분을 저장하기 위해 이용될 수 있다. 특히, 최소 규모인 메타그룹들이 이용될 수 있다 논리적인 경계부를 포함하는 데이터의 부분을 저장한다. 데이터 구동 경계부의 위치는 기억 제어기에 의해 결정될 수 있다. 운영된 데이터 데이터 구동의 스타트에 있는 묶인 기술이 논리적 주소에 점프에 의해 또한 식별될 수 있다. 그런 점프에 앞서 지난 섹터는 데이터 구동의 지난 섹터일 수 있다. 그러나,로부터 수신한 섹터에 논리적 주소에 점프 예외 상황이 있을 수 있다 호스트가 시스템 정보 변환의 개정하는 것 때문에 이거나 인터리빙이 다른 데이터가 쓰인다. 샷은 몇몇 시스템에 인터리브 방식에 운영된 하나 이상의 데이터에게 편지를 쓸 수 있다. 제어기가 다중 열린 데이터가 이 상황을 다루기 위해 달리라고 주장할 수 있고 그래서, 데이터가 수신되면 열린 데이터 구동에 연속하는, 그것이 그 데이터 구동의 일환으로 처리한다. 그것이 열린 데이터 구동에 연속하지 않으면, 그것이 새로운 데이터 구동의 스타트이라고 생각할 수 있다. 열린 데이터 구동이 데이터의 수가 달린 기간이 한계에 도달한 후 제어기의 바로 가까이 있을 수 있다거나 호스트로부터의 신호에 응하여.
그림 35A는 비정렬 (N)로 저장된 데이터 구동 3530을 나타낸다. 이것이 데이터 구동인 이다 저장된 논리적인 경계부의 위치에 대한 사항. 메타그룹 구조는 최대 크기의 모든 메타그룹들을 나타낸다. 그림 35B는 부분적인 얼라인먼트 (P)로 저장된 데이터 구동 3532를 나타낸다. 최소화된 메타그룹 3534 ( 하나 논리 그룹 )는 데이터 구동 3532의 스타트에 데이터 구동 경계부를 저장하기 위해 이용된다. 데이터 구동 3235의 잔여부가 최대 규모인 메타그룹 3536,3538에 수용되고 그래서, 데 이터 구동의 단부가 최대 규모인 메타그룹 3538에 발생한다. 그러므로 각각의 단부에 데이터 경계로 운영된 데이터를 위해, 단지 단일 데이터 경계부가 최소 구성 크기의 메타그룹에 배정된다.
그림 35C는 가득 찬 얼라인먼트 (F)로 저장된 데이터 구동 3540을 나타낸다. 데이터 구동 3540의 양측 부분에 있는 데이터 구동 경계부는 최소 3542,3548 사이즈의 할당된 메타그룹들 이다. 최대화된 메타그룹이 이용될 높은 병렬처리을 위한 가능한 ( e.g.메타그룹 3544 ). 그러나, 크기가 감소된 메타그룹 3546이 본 예에 끝에서 두번째의 메타그룹을 사용된다.
일반적으로, 최소화된 메타그룹이 데이터 구동의 각각의 단부에 배정된 곳에서, 이러한 메타그룹들 사이에 운영된 데이터의 부분이 최대화된 메타그룹들의 정수 갯수를 형성하지 않다. 그러므로 데이터 구동의 중간 부위로부터의, 최소한 하나 메타그룹은 최대 크기보다 못한 사이에 있다. 그림 35C에 나타내어진 실시예에, 끝에서 두번째의 메타그룹 3546이 축소 크기 메타그룹이 ( 또는 패드 메타그룹 ) 이다. 그러나, 패드 메타그룹이 어떠한 특별한 위치에 들어가야 한다. 그림 35D는 데이터 구동 구조를 운영된 데이터를 다른 사이즈의 적응할 수 있는 메타블록들에 매핑되게 하라는 것을 보여준다. 최소 구성 크기의 헤드 블록 3350과 꼬리 부분 블록 3556은 데이터 구동 경계부를 포함함으로써 논리 그룹을 사용된다. 논리 그룹 3550,3556 사이에, 데이터 구동 경계부를 포함한, 데이터가 ㄹ 가능한 ( e.g 메타블록 3552 ) 최대 크기의 적응할 수 있는 메타블록들에 매핑된다. 다른 실시예 다중 가득 찬 블록에 데이터 구동은 사용된다. 잔류 데이터는 감소된 크기의 적응할 수 있는 메타블록 인 패드 블록 3554에 수용된다.
그림 35E는 메모리에 가득 찬 얼라인먼트로 저장된 다른 길이의 데이터 구동을 8 논리 그룹의 최대 메타그룹 사이즈를 가지라는 것을 보여준다. 데이터 구동 경계부가 단일의 논리 그룹에 발생할 때, 이 논리 그룹이 최소 3558 사이즈의 메타그룹을 형성하고 헤드 메타그룹이라고 생각할 수 있다. 데이터 구동이 2 논리 그룹 안으로 연장된 곳에서, 각각 논리 그룹이 최소 3560,3562 사이즈의 메타그룹을 형성하고, 헤드와 꼬리 부분 메타그룹들로서 고려할 수 있다. 데이터 구동이 3 논리 그룹 안으로 연장될 때, 중앙 논리 그룹 2564가 최소 구성 크기의 메타그룹을 형성하고 패드 메타그룹이라고 생각할 수 있다. 를 위해 데이터가 3 그리고 9 논리 그룹, 헤드 사이에로 연장됨으로써 달리고 꼬리 부분 메타그룹들이 데이터 구동의 사이즈에 따라서 사이즈에 증가시킴으로써 패드 메타그룹으로 똑같이 남아있다.
데이터 구동이 10 논리 그룹 안으로 연장될 때, 가득 찬 메타그룹 3566이 헤드와 꼬리 부분 메타그룹들 사이에 형성될 수 있다. 그러므로, 어떤 패드 메타그룹이 필요하다. 데이터가 10 논리 그룹보다 더 크게 달리기 때문에, 가득 찬 메타그룹과 패드 메타그룹이 형성될 수 있다. 데이터가 18 논리 그룹보다 더 크 달리기 때문에, 2 가득 찬 메타그룹들이 형성될 수 있다. 더 큰 데이터가 다중 가득 찬 메타그룹들을 운영하기 때문에 요구될 때 적절한 크기의 패드 메타그룹과 함께 형성될 수 있다.
데이터가 호스트에 의해 개정될 때, 데이터가 데이터에 일반적으로 수신된다 달린 데이터 구동가동 경계부 사이에 연장되는. 그와 같은 데이터 구동가동 경계부 의 위치는 이전에 식별되고 데이터를 저장하기 위해 이용된 그들과 같을 수 있다. 그러므로, 데이터 구동가동이 이미 갱신 데이터의 데이터 구동가동 경계부에 배향된 방법에 수용되는 데이터를 개정할 수 있다. 예를 들어, 곳 데이터 구동가동은 똑같은 논리적 주소 범위 위에서 연장됨으로써 운영된 데이터에 의해 이전에 개정되는 데이터를 개정하고, 데이터가 배향시킬 수 있다 같은 사람에게 논리적인 경계부. [ 내장 자료가 똑같은 데이터 경계에 가득 찬 얼라인먼트로 저장되면 데이터를 개정하는 것이 full-to-full 전이를 포함한다. 내장 자료가 부분적인 얼라인먼트로 저장되면 개정하 또한 partial-to-full 또는 partial-to-partial 전이를 포함할 수 있다. 내장 자료가 비정렬로 저장되면 개정한 non-to-full non-to-partial 또는 non-to-non 전이를 포함할 수 있다. 도형 36이 발생할 수 있는 일부 전이를 나타낸다 데이터의 개정하는 것 동안. ( full-to-non과 같은 ) 확실하고 다른 전이가 가능한 동안 그들이 일반적으로 바람직하지 않고 도형 36에 나타내지 않다.
데이터 구동가동 3770이 호스트로부터 수신될 때 full-to-full (F2F) 전이의 실시예를 나타낸다. 데이터 구동가동 3770은 데이터의 논리적으로 연속한 섹터의 스트림으로서 수신될 수 있다. 게다가, 호스트는 데이터 경계 위치 정보를 스타트에 있는 데이터 경계와 데이터 구동가동의 단부의 위치를 포함하도록 할 수 있다. 데이터 구동가동의 스타트 3772의 위치가 데이터 구동가동 3770에 수신된 첫번째 섹터의 어드레스로부터 결정되어도 되고 미리 알려질 필요가 없는 동안, 데이터 구동가동의 단부 3774의 위치가 데이터 구동가동 3770의 지난 섹터가 본 예에 가득 찬 얼라인먼트를 허용하기 위해 수신되기 전에 알려진다. 다른 실시예에, 데이터 구동가동의 단부의 위치가 확실히 알려지지 않을지도 모르지만 위치가 이전 데이터 구동가동의 단부의 위치로부터 예상되지 않을지도 모른다. 그와 같은 데이터 경계 위치는 목록에 호스트에 의해 리코딩될 수 있다. 호스트로부터의 데이터 구동가동 3770의 데이터 구동가동 경계부는 완전정렬로 저장되는 이전에 수신 데이터 구동가동의 데이터 구동가동 경계부와 같다. 그러므로, 원래 메타그룹들로서 동일 사이즈를 가지는 업데이트된 메타그룹들이 배정될 수 있다. 데이터 A의 부분과 데이터 구동가동 3770의 D는 데이터 구동가동 경계부를 포함하고 그러므로 최소 규모인 메타그룹들에 수용되는 논리 그룹에 들어간다.
그들은 그러므로 처음에 일련의 순간의 버터 ( A ->K, D->L )에 수용된다. 버퍼 K와 L에 있는 데이터가 더 늦다 원본 데이터 ( P->E, Q->J )와 함께 헤드 메타그룹 3778 ( K->F, L->I )에 카피된다. 헤드와 꼬리부분 메타그룹들 3776, 3778은 돈 어레이에 최소화 메타블록들로서 저장된다. 데이터 구동가동의 부분 B는 최대 크기 메타그룹 G를 형성하고 일련의에 수용되는 것 없이 최대 크기의 할당된 메타블록에 직접적으로 그러므로 저장한다 순간의 버퍼. 데이터 구동가동 3770의 부분 C가 메타그룹 H를 형성한다의 사이즈보다 못한. 메타그룹 H는 플래시 메모리에 할당된 적응할 수 있는 메타블록에 직접적으로 기술된다.
확실한 실시예에, 부분 C와 같은 데이터의 부분이 할당된 적응할 수 있는 메타블록에 저장에 앞서 일련의 순간의 버퍼에 수용될 수 있다. 그러나, 부분 C의 사이즈에 달려있다면서 플래시 메모리에 직접적으로 그것을 기술하는 것은 더 효율적이다. 예를 들어, 곳 부분 C가 가득 찬 메타그룹의, 그것이 더보다 보내기 위해 직 접적으로 데이터를 기술하는 것이 효율적이는다는 것 거의 인 상당량의 데이터를 포함한 것은 일직선으로 배열된 포맷에 플래시에 일련의 버터와 더 늦은 카피에 대한 그것에게 그것을 쓰다. 직렬 버퍼에 데이터를 버퍼링하는 것으로부터 효율에 있는 일반적으로, 이득값은 잘 데이터의 소용량을 위해 이고 가장 적게 대량의 데이터를 위해서 이다. 측정된 데이터를 버퍼링한다 데이터의 일부분의 사이즈에 근거하여 일 수 있다. 데이터의 가득 찬 메타그룹들이 최대 크기 메타블록s에 직접적으로 기술될 수 있고, 하나 논리 그룹 이하를 포함하는 것이 직렬 버퍼에 쓰여질 수 있는 데이터와 하나 논리 그룹과 가득 찬 메타그룹 사이의 데이터가 그것이 사이즈가 임계값보다 작면 버퍼링될 수 있다. 예를 들어, 임계값은 가득 찬 메타그룹 마이너스 2 ( N이 가득 찬 메타그룹에 논리 그룹의 수 인 n )에 가득 찬 메타그룹에 있는 논리 그룹의 절반의 갯수 또는 논리 그룹의 절반의 갯수일 수 있다. N/2-2는 효율적인 작동을 허용하라고 적합한 임계값이고 수렴한 일련의 플래시 버퍼를 가진다. 그러므로, 메타그룹에 16 논리 그룹이 있다면 6 논리 그룹 이하를 포함하지 못하은 데이터의 부분이 6 이상의 논리 그룹을 포함한 데이터의 부분이 플래시에 직접적으로 기술될 수 있는 동안, 직렬 버퍼에 버퍼링될 수 있다.
도형 38은 부분적인 얼라인먼트에서부터 가득 찬 얼라인먼트 (P2F)까지 전이의 실시예를 나타낸다. 본 예에 데이터 구동3880이 호스트로부터 수신되고 가득 찬 얼라인먼트로 저장된다. 최소 구성 크기의 헤드 메타그룹 3882와 꼬리 부분 메타그룹 3884는 배정된다 데이터는 데이터 구동에 의해 업데이트 되어지고 그것은 기 저장된 방법에 따라 부분적으로 데이터 구동의 영역에 정렬되어 진다.
최소 구성 크기의 원래 메타그룹 3886은 헤드 메타그룹으로서 똑같은 논리 주소 공간을 위해 존재한다. 그러나, 데이터 구동가동의 꼬리부분에 해당한 어떤 원래 최소 분류된 메타그룹이 있지 않다. 데이터 구동가동의 스타트에 있는 데이터는 도형 37에 나타내어진 그것에게 유사하게 핸들링된다. 데이터 A는 일련의 순간의 버퍼 ( A->K )에 수용된다. 다음에, 버퍼 K에 있는 데이터가 원래 메타그룹(P->E)로부터 카피되는 버퍼 E에 데이터와 함께 최소 구성 크기 ( K->F )의 업데이트된 메타그룹 3882에 카피된다. 데이터 B와 C는 전에 메타그룹들 G와 H에 프로그램화된다. 메타그룹 g는 최대 크기의 업데이트된 메타블록에 직접적으로 프로그램화될 수 있는 최대 크기의 메타그룹으로서 나타내어진다. 메타그룹 h가 최대 크기보다 못한 사이에 있다 그리고 업데이트된 메타블록에 직접적으로 또한 프로그램화될 수 있거나 메타그룹 H의 사이즈에 따라서 첫째로 일련의 순간의 버퍼에 수용될 수 있다. 본 예에, 메타그룹 H가 업데이트된 메타그룹에 직접적으로 프로그램화된다. 오랫동안 데이터 구동가동이 수신될 때, 최대 크기의 추가적인 메타그룹이 이용될 수 있다.
데이터 종료 구동가동 3880에 있는 데이터 D는 일련의 순간의 버퍼 ( D->L )에 카피되고 원래 메타그룹 ( Q->J )로부터 카피된 데이터 J와 함께 꼬리 부분 메타그룹 3884에 다음에 카피된다. 데이터 J는 메타그룹 3888의 최소 구성 크기보다 ( 이 경우에 최대 크기의 메타그룹 ) 더 크 으로부터 카피된다. 메타그룹 3888은 데이터 구동가동에 의해 개정되지 않는 단지 데이터를 포함하는 논리 그룹 R를 포함한다. 논리 그룹 R는 위치 재설정 메타그룹 ( R->T )에 재배치된다. 다른 실시예 에 위치 재설정 메타그룹이 다중 논리 그룹을 포함할 수 있다. 원본 데이터 원래 메타그룹으로부터 위치 재설정 메타그룹에의 이 카피식은 더 큰 효율을 위한 다른 프로그래밍 작동과 병렬로 행해질 수 있다. 도형 37과 38을 형성한 것을 보여질 수 있는 것처럼, 가득 찬 전이에 대한 부분적인 것이 full-to-full 전이보다 데이터의 더 많은 카피식을 포함할 수 있다 ( 위치 재설정 메타블록 T에 대한 원본 데이터 R의 e.g.copying ).
도형 39는 부분적인 얼라인먼트에서부터 호스트로부터 수신된 데이터 구동가동 3990을 위한 부분적인 얼라인먼트 (P2P)까지 전이의 실시예를 나타낸다. 이 전이는 데이터 구동가동의 스타트에 있는 데이터를 위한 상기에 기술된 그들과 비슷한다. 데이터 구동가동 3990의 스타트에 있는 데이터 A가 일련의 순간의 버퍼 ( A->K )에 수용되고 더 늦다 원래 메타그룹 3994 ( P->E )로부터 카피되는 데이터 E와 함께 최소 구성 크기 ( K->F )의 업데이트된 메타그룹 3992에 카피된다. 데이터 B는 최대 크기 ( B->G )의 메타그룹에 프로그램화된다. 데이터 구동가동 경계부에 연장되고 최대 규모인 메타그룹보다 못한 포함하는 데이터 D는 최대 규모인 업데이트된 메타그룹에 기술된다.3996 (D->J).
원래로부터의 데이터 Q 메타그룹이 카피된다 같은 사람에게 최대 규모인 갱신 메타그룹 3996 ( Q->J ). 이것, 얼라인먼트가 적응할 수 있는 메타그룹 3992에 매핑된 스타트 데이터 구동가동 경계부로 이 전이 동안 똑같이 남아있는 의 최소화되고 잔류 데이터가 최대 크기의 적응할 수 있는 메타그룹들에 매핑된다.
도형 40은 비정렬에서부터 가득 찬 얼라인먼트 (N2F)까지 전이의 실시예를 나타낸다. 호스트로부터의 데이터 구동가동 4002는 수신되고 데이터 구동가동 경계부에 얼라인먼트 ( 비정렬 ) 없이 저장되는 원본 데이터를 개정하기 위해 이용된다. 본 예에, 원본 데이터가 최대 크기의 메타블록s에 수용된다. 대조적으로 업데이트된 메타그룹들은 스타트와 데이터 종료 구동가동 4002에 데이터 경계를 위한 최소 구성 크기의 헤드 메타그룹 4004와 꼬리 부분 메타그룹 4006을 포함한다. 데이터 구동가동 4002의 첫번째 부분적인 논리 그룹로부터의 데이터 A는 직렬 버퍼 ( A->K )에 버퍼링된다. 유사하게, 데이터 구동가동의 지난 부분적인 논리 그룹로부터의 데이터 D가 직렬 버퍼 ( D->L )에 버퍼링된다. 이것은 데이터 종료 구동가동 4002에 데이터 구동가동 경계부의 위치에 관하여 호스트에 의해 제공될 수 있다 정보에 응하여. 데이터 B는 최대 크기 ( B->G )의 메타그룹으로서 저장된다. 더 큰 데이터가 달리기 때문에, 추가 데이터가 최대 크기의 추가적인 메타그룹들로서 저장될 수 있다. 메타그룹 g는 최대 크기의 메타블록에 수용된다. 또한 헤드, 꼬리부분 또는 최대 크기 메타그룹에 배정되지 않는 잔류 데이터 C는 패드 메타그룹 ( C->H )에 배정된다. 메타그룹 h가 메타블록에 직접적으로 저장된다의 본 예에 있는 최대 크기보다 더 거의, 그러나 다른 실시예에 그것이 첫째로 일 수 있는 직렬 버퍼에 수용되고 그리고 나서 메타블록에 카피되의 최대 크기보다 못한. 본 예에, C가 꼬리 부분 패드 데이터로서 고려될 수 있고 H가 꼬리 부분 패드 블록이라고 생각할 수 있다. 개정되지 않는 원래 메타그룹들에 있는 데이터 (O, P, Q, R)가 각각의 위치 재설정 메타그룹들에 카피된다 ( O형-> 내부 라인, R-> T) 또는 헤드와 꼬리 부분 메타그룹들에 ( P-> E, Q-> J). 이러한 부분 O형의 카피식과 재설정된 메 타그룹들 s에 대한 R와 T는 O형과 R가 함께 최대 규모인 메타그룹 이하에 상당한 데이터를 포함한 병렬에 행해질 수 있다. 부분 P와 Q의 카피식은 다르고 원래 메타그룹들로부터 또는 직렬 버퍼로부터 다른 카피 작동과 병렬로 행해질 수 있다. 데이터부 C가 짧다. 데이터부 C는 버퍼링될 수 있고 데이터부 E, f의 프로그래밍, I와 J와 같은 다른 프로그래밍 작동과 병렬로 업데이트된 메타그룹에 카피될 수 있다.
도형 41이 비정렬에서부터 부분적인 얼라인먼트 (N2P)까지 전이의 실시예를 나타낸다. 원래 메타그룹들이 데이터 구동가동 4110의 데이터 구동가동 경계부에 배향되지 않다. 본 예에, 원래 메타그룹들이 이것이 비정렬을 위해 그렇게 반드시 이지 않을지라도 최대크기화된 메타그룹들 이다. 업데이트된 메타그룹들은 데이터 구동가동으로 부분적인 얼라인먼트를 가지도록 형성하고 있다. 최소 구성 크기의 업데이트된 메타그룹 4112가 도형 40.에서와 같이 데이터 구동가동 4110의 스타트에 데이터 구동가동 경계부를 위해 배정된다 남아있는 메타그룹들이 최대 크기 메타그룹들 이고 데이터 구동가동 경계부 마침내 데이터 구동가동 4110이 최소 규모인 메타그룹에 배정하지 않다. 그 대신에, 데이터 종료 구동가동 4110에 있는 데이터 구동가동 경계부가 본 예에 최대 4114 사이즈의 메타그룹에 배정된다. 원래 메타그룹들은 업데이트된 메타그룹들 ( P->E, Q->J )에 또는 재설정된 메타그룹들 ( O->S, R->T )에 카피되는 원본 데이터 (O, P, Q, R)를 포함한다.
도형 42가 비정렬로부터 전이의 또 다른 실시예를 나타낸다에게 부분적이다 얼라인먼트 (N2P). 원래 메타블록s는 최대 크기의 다시 메타블록s 이다. 도형 42는 데이터를 가지는 것이 원래 메타블록s ( 비정렬 )에 일치하지 않는 경계부를 운영하라는 것을 호스트로부터의 데이터 구동가동 4220에 보여준다. 업데이트된 메타블록s는 데이터 경계에 부분적인 얼라인먼트로 운영된 데이터에 데이터를 수용하기 위해 형성된다. 본 예에, 최소 4222 사이즈의 업데이트된 메타그룹이 데이터 구동가동 4220의 스타트에 데이터 구동가동 경계부에게 양도된다. 다르고 업데이트된 메타그룹들의 메타그룹 경계부는 원래 메타그룹들의 메타그룹 경계부로서 똑같은 위치에 위치한다. 본 예에, 메타그룹의 최대 크기 G보다 못한 헤드 메타그룹과 다음 메타그룹 경계부 사이에 이용된다 . 이것이 헤드 패드 메타그룹이라고 생각할 수 있고 그것에 수용된 데이터가 간주한 헤드 패드 데이터일 수 있다. 헤드 패드 메타그룹이 헤드 패드에 수용될 수 있다 메타블록 각각의 직접적으로 또는 일련의 순간의 버퍼에 뒤에 버퍼링된다. 측정 는지 아닌지에 관해 직접적으로 헤드 패드 메타그룹을 저장하거나 그것을 버퍼링한다 일 수 있는 에 근거하여 그것이 더 커지거나 몇몇 임계값 ( 꼬리 부분 패드 데이터와 비교하여 이전에 논의된 것처럼 )보다 작아기지전에, 원본 데이터일 수 있는 것처럼 재설정된 메타그룹들 에 카피되거나 개정된 메타그룹들(Q->J) 요청하는 대로 실행된다.
도형 43은 비정렬에서부터 비정렬 (N2N)까지 전이의 실시예를 나타낸다. 본 예에 데이터 구동가동 4330이 어떠한 얼라인먼트를 가지지 않는 원래 메타그룹들에 수용된 데이터를 개정하는 호스트에서부터 데이터 구동가동의 경계부까지 수신된다. 최신 데이터는 데이터 구동가동의 경계부에 또한 어떠한 얼라인먼트를 가지지 않는 업데이트된 메타그룹들에 수용된다. 본 예에, 양쪽 원래 메타그룹들과 업데이 트된 메타그룹들이 최대 크기의 단지 메타그룹들을 포함한다. 이 설계가 시스템에 이용될 수 있는 네트가 적응할 수 있는 메타블록s ( 메타블록 사이즈가 고정된 시스템 )를 이용한다. 어떤 일련의 순간의 버퍼는 본 예에 이용되지 않다. 원본 데이터 (P, Q)는 업데이트된 메타블록s ( P->E, Q->J )에 카피된다. 그러므로, 다량의 원래 데이터가 업데이트된 메타그룹들에 수용되고 후속 데이터 구동가동이 똑같은 데이터 구동가동 경계 위치로 수신되면, 이 데이터가 다시 카피될 것이다.
데이터갱신 관리 운영
파일은 상위 시스템 내에 생성되거나 상위 시스템 내에 매핑된 외부 소스에서부터 논리 섹터 어드레스까지 상위 시스템에 의해 수신된 일련의 데이터이다. 일련의 근접한 논리 섹터 어드레스는 데이터 구동가동라고 불려진다. 데이터 구동가동은 하나 이상의 파일의 저장을 위한 호스트에 의해 배정된 일련의 논리적으로 근접한 섹터 또는 파일의 부분, 논리 주소 공간의 이전에 할당된 부분 사이에 연장된 운영된 데이터라고 생각할 수 있다. 호스트가 다른 데이터에 기록 작업을 인터리브시킬 수 있다 달린다. 일반적으로, 열린 데이터의 제한된 갯수가 달린다 어떠한 시간 고 그래서 데이터 구동가동에 허용되 개구되고 요구사항에 따라서 닫힌다. 데이터 구동가동 안에 있는 섹터는 열린 버퍼에 또는 데이터 구동가동과 관련된 갱신 블록에 기술될 수 있다.
수신하고 저장하면서 데이터로부터의 데이터가 달린다 데이터를 저장하기 위해 이용된 ( 버퍼와 갱신 메타블록들을 포함한 ) 데이터 구동가동과 메모리 제어 구조의 관리를 포함한다. 도형 44는 그들에 관해서 운반할 수 있는 구조와 작동의 일부를 나타낸다.
현존 데이터 구동가동에 지난 섹터에 연속하지 않고 현존 데이터 구동가동에 지난 섹터로부터 허용된 연속한 어드레스 점프의 범위에 있지 않은 이지 않는 데이터 구동가동을 개구시키는 것은 섹터가 수신될 때 발생할 수 있다. 데이터 구동가동이 그것이 가장 작은 최근에 개정된 ( LRU ) 데이터 구동가동일 때 닫혀도 되고, 데이터의 허용된 최대 개수가 존재를 운영하고 새로운 데이터 구동가동이 개구되어야 한다. 갱신이 고려되도록 하는 것은 데이터 구동가동 안에 있는 섹터가 개정될 때 또한 닫힐 수 있다 혼란한 것. 그러한 혼란한 갱신은 유에스 특허 출원 번호 10/750,155에 기술된 그들과 같은 다른 방법을 이용함으로써 일반적으로 핸들링된다.
버퍼는 데이터 구동가동으로부터 연속한 데이터를 기술하기 위한 일련의 순간의 버퍼의 일부분 일 수 있다. 버퍼는 물리적으로 일련의 순간의 버퍼에 근접할 필요가 없다. 다중 버퍼에 대한 인터리브 라이팅은 비근접 버퍼를 가짐으로써 간편화될 수 있다. 버퍼는 데이터 구동가동이 데이터 구동가동의 첫번째 논리 그룹이 미완료 때 개구될 수 있다. 버퍼는 첫번째 섹터가 데이터 구동가동의 지난 논리 그룹을 위해 수신될 때 또한 개구될 수 있다. 버퍼는 패드 데이터가 몇몇 일정 액보다 잔 패드 데이터 ( 각각의 헤드 또는 꼬리 부분 패드 )를 위해 또한 개구될 수 있다. 버퍼는 그것에게 기술된 데이터가 완전할 때 닫힐 수 있다. 닫힌 버퍼는 갱신 블록에 그것의 데이터의 모두를 기술함으로써 카피된다. 카피는 버퍼가 다음 이용 가능한 버퍼 마침내 일련의 순간의 버퍼의 하나일 때 발생할 수 있다. 일반적으 로, 그와 같은 카피식이 다른 버퍼의 또는 원본 데이터의 다른 카피식과 병렬로 발생한다.
갱신 메타블록은 호스트로부터 또는 버퍼로부터 몇몇 최신 데이터가 기술된 적응할 수 있는 메타블록 일 수 있다. 갱신 메타블록이 데이터가 수신될 때 배정될 수 있다 버퍼에 보내지지 않는 그리고 어떤 미완료 갱신 메타블록이 존재하지 않다. 갱신 메타블록은 데이터가 버퍼로부터 카피될 때 또한 배정될 수 있다. 갱신 메타블록의 사이즈는 저장되기 위해 데이터의 어마운트에 달려있다. 갱신 메타블록들은 최소 구성 크기 메타블록들, 감소된 크기 메타블록들 또는 최대 크기 메타블록들 일 수 있다. 예를 들어, 최소 구성 크기 메타블록이 데이터 구동가동의 스타트 ( 헤드 )와 단부 ( 꼬리부분 )를 사용될 수 있고, 감소된 크기 메타블록이 패드 데이터 ( 헤드 패드 또는 꼬리 부분 패드 )를 사용될 수 있고 최대 크기 메타블록이 데이터 구동가동의 다른 모든 데이터를 사용될 수 있다. 갱신 블록은 지난 섹터가 또한 호스트로부터의 데이터, 버퍼 또는 원블록으로 채워질 때 완전한 것으로 간주될 수 있다. 그러므로, 완성이 버퍼로부터의 카피 작동의 결과로서 또는 원블록로부터의 카피의 결과로서 발생하여도 되며, 데이터 구동가동의 클로저에 의해 트리거링할 수 있다.
원래 메타블록은 호스트로부터 업데이트된 섹터에 의해 시대에 뒤떨어지게 되었던 하나 이상의 섹터를 포함한 적응할 수 있는 메타블록 일 수 있다. 메타블록은 그것 안에 있는 섹터가 최신 데이터의 섹터의 영수지에 의해 시대에 뒤떨어지게 될 때 열린 원래 메타블록이라고 생각할 수 있다. 원래 메타블록은 그것 안에 있는 어떤 더 섹터가 어떠한 열린 데이터 구동가동에 더 호스트에 의해 씀으로써 시대에 뒤떨어지게 되지 않을지도 모를 때 완전한 것으로 간주될 수 있다.
데이터는 완전한 원래 메타블록에서부터 위치 재설정 메타블록까지 카피될 수 있다. 완전한 원래 메타블록 ㄹ 지도 모른 그것 안에 있는 모든 유효한 섹터가 카피될 때 완전히 시대에 뒤떨어진 원래 메타블록이라고 생각한 B. 완전히 시대에 뒤떨어진 원래 메타블록은 지워질 수 있다.
위치 재설정 메타블록은 데이터의 연속한 논리 그룹이 원래 메타블록으로부터 카피될 수 있는 적응할 수 있는 메타블록 이다. 위치 재설정 메타블록은 데이터가 원래 메타블록으로부터 카피되고 헤드 또는 꼬리 부분 메타블록의 부분이지 않을 때 배정될 수 있다. 위치 재설정 메타블록이 그것의 지난 섹터 위치가 쓰여진 위치 재설정 메타블록들 였을 때 완전한 것으로 간주될 수 있다 최소 구성 크기 또는 감소된 크기 메타블록들 일 수 있다.
도면45는 데이터를 저장하기 위한 흐름도를 나타낸다. 이 실시예가 데이터의 섹터를 저장되라는 것을 보여주는 동안, 데이터의 다른 장치가 또한 이용될 수 있다. 처음에 측정은 섹터의 저장이 열린 데이터 구동가동 4550에 혼란한 갱신을 포함한 는지 아닌지에 관해 만들어진다. 혼란한 갱신은 어떤 응용은 참고로 온전히 그대로 이로써 통합된 섹터가 비순차적 방법에 개정되고 응용 번호 10/750,155에 더 기술된 하나이다. 열린 날짜 구동가동에 대한 혼란한 갱신은 데이터 경계 얼라인먼트로 저장한 대안으로서 수행될 수 있다. 그러므로, 혼란한 갱신이 먹는다 상세히 여기에서 기술되지 않다. 그것이 결정되면 섹터가 혼란한 갱신을 요구하지 않 은 그것이 수용된 섹터가 열린 데이터 구동가동 또는 4552에 연속하면 결정된다.
수용된 섹터가 열린 데이터 구동가동에 연속하지 않으면 그리고 열린 데이터의 수가 달리면 미리 결정된 최대 4554보다 잔, 새로운 데이터 구동가동 개구된 4556. 열린 데이터의 수가 달리면 미리 결정된 최대보다 못하진 않은 데이터 구동가동 닫혀야 하 새로운 데이터 구동가동 4556을 개구시키는 것 전에 4558 ( 기 상술된 것처럼 ). 새로운 데이터 구동가동이 개구된 후 그것이 논리 그룹 경계부에서부터 데이터 구동가동 4560의 스타트까지 오프셋이 있다면 결정된다. 버퍼가 오프셋되면 개구된 4562, 헤드 데이터와 같은 버퍼의 사이즈는 첫번째 논리 그룹에 들어가는 데이터 구동가동의 부분. 섹터는 버퍼의 단부가 도달하고 버퍼가 닫힐 때까지 이 버터에 다음에 기술된다.
열린 데이터 구동가동과 열린 버퍼에 연속한 데이터 구동가동 4564를 위해 존재한, 섹터가 버퍼 4566에 기술된다. 어떤 열린 버퍼가 데이터 구동가동 4564를 위해 존재하지 않지만 미완료 메타블록이 데이터 구동가동 4568을 위해 존재하지 않으면, 섹터가 미완료 메타블록 4570에 기술된 것처럼 더 늦다. 어떤 열린 버퍼와 어떤 미완료 메타블록이 데이터 구동가동을 위해 존재하지 않으면, 그것이 수신한 섹터가 헤드 패드 데이터 4572 이으면 결정된다. 또한, 곳 새로운 데이터 구동가동은 개구된 조금이지 않다 논리 그룹 경계부 4560로부터의 어떤 오프셋, 이 측정이 만들어진다. ㄹ 섹터이 헤드 패드 데이터,, 데이터 ( 섹터 수 )의 어마운트 비교된 최대 패드 길이인 선정 값 에 대한 4574 버퍼링하기 위해섹터 수가 버퍼이다는 것 을 최대패드보다 더 크지 않으면 개구된 헤드 패드 데이터에 사이즈에 동일하는 4576. 섹터 수가 최대패드보다 더 크면 감소된 메타블록이 4578을 할당되고 다음에 섹터가 이 감소된 메타블록 4570에 기술된다.
섹터가 헤드 패드 데이터 4572 이지 않도록 결정되면 그것이 섹터가 각각의 꼬리 부분 패드 또는 꼬리 부분 데이터 4580 인지 다음에 결정된다. 그들이 꼬리 부분 패드 또는 꼬리 부분 데이터이지 않으면, 최대 크기 메타블록이 4582를 할당되고 섹터가 최대 크기 메타블록 4570에 다음에 기술된다. 이것은 어느 헤드도 또한 꼬리 부분 데이터이지 않는 데이터를 위한 일종의 디폴트 조건이다. 그러므로, 데이터 구동가동의 한가운데 데이터가 최대 평행을 이용하기 위해 최대 크기의 메타블록들에 일반적으로 기술된다. 섹터가 꼬리 부분 패드 또는 꼬리 부분 데이터를 포함하면 그것이 섹터가 꼬리 부분 데이터 ( 데이터 구동가동의 지난 논리 그룹으로부터 ) 4584 에 이으면 결정된다. 그들이 지난 논리 그룹에서 오면, 버퍼이다 개구된 4586, 꼬리 부분 데이터와 ( 지난 논리 그룹에 운영된 데이터로부터의 데이터와 같은 ) 같은 버퍼 크기. 다음에, 섹터가 버퍼 4566에 기술된다. 섹터가 지난 논리 그룹으로부터 이면, 섹터가 꼬리 부분 패드 데이터이고 그것이 꼬리 부분 패드 길이가 미리 결정된 사이즈 4588보다 더 크면 결정한다. 섹터 수가 최대패드보다 더 크면 감소된 크기 메타블록이 4578을 할당되고 섹터가 메타블록 4570에 다음에 기술된다. 패드가 maxpad 4588보다 더 크지 않으면, 꼬리 부분 패드 4590과 같는 버퍼가 개구된다. 섹터는 이 버퍼 4566에 다음에 기술된다.
도형 46은 하나 이상의 메타블록들에 섹터를 기술하기 위한 흐름도를 나타낸다. 이 응용의 이 그리고 다른 흐름도에, 논리적인 플로우가 박스아래에 나타내어진 긍정적인 결과와 박스의 일 측에 나타내어진 부정적인 결과를 가지는 중이다 판단 기호를 가진 흐름도의 바닥을 향하여. 그것은 한 그룹의 섹터의 저장을 위한 배정된 메타블록이 감소되거나 최소 구성 크기 메타블록 4601 이으면 첫째로 결정된다. 감소되거나 최소 구성 크기 메타블록이 ( 배정된 최대 크기 메타블록 ) 할당되지 않으면, 기술되기 위해 분할하 평행한 4603에 할당된 메타블록에 기술된다. 그리고 나서, 측정은 메타블록이 가득 차거나 4605 이 는지 아닌지에 관해 만들어진다. 메타블록이 가득 차면, 그것이 지정된다 ˝ 완전한, ˝ 4607. 그것이 데이터 구동가동에 호스트에 의해 기술될 수 있는 데이터 구동가동에 또는 더 데이터에 상응한 모든 데이터가 원래 메타블록 4609에 시대에 뒤떨어지게 되는지 결정된다 그리고 만약 그렇다면, 원블록이 완전한 4611이라고 생각한다. 감소되거나 최소 구성 크기 메타블록이 4601을 쓰여지고 있다면, 어떤 버퍼가 현재 이지 않으면 카피된 4612, 카피될 수 있는 닫힌 버퍼가 4613로 식별되고 그 버퍼와 관련된 어떠한 원본 데이터가 감축된 4615와 하나 또는 그 이상의 또는 최소 구성 크기 메타블록들로 식별된 4617을 할당된다.->
도형 47이 데이터 구동가동을 클로우즈시키기 위한 흐름도를 나타낸 것처럼 수행된다. 가장 작은 최근에 이용된 ( LRU ) 데이터 구동가동은 첫째로 일체가된 4731 이다. 어떠한 열린 버퍼가 이 데이터 구동가동 4733을 위해 존재하면 그것 닫힌 4735 그리고 어떠한 미완료 메타블록들이 존재하면 데이터 구동가동을 위해 4737 데이터가 원래 메타블록들로부터 카피되거나 미완료 메타블록들까지 버퍼 4739가 완전한 4741과 어울린다. 어떠한 부분적으로 시대에 뒤떨어진 원래 메타블록들 존재한다 4743 ( 완전하고 Full인 메타블록들 ) 감소된 크기 메타블록들이 재설정된 메타블록들과 유효한 섹터로서 4745를 할당되 카피된 원블록까지 4747이 완전히 시대에 뒤떨어진 4749 이다. 데이터 구동가동이로서 지정될 수 있다
본 발명이 다양한 구체적인 실시예와 비교하여 기술되었을지라도, 본 발명이 첨부된 청구항의 전체 범위 내에 보호를 받을 자격이 있는 것은 이해될 것이다.

Claims (80)

  1. 개별적으로 프로그램 가능한 평면들내에 배열된 다수의 삭제가능한 삭제블록들을 포함하는 메모리 어레이에 데이터를 저장하는 방법에 있어서,
    적응형 메타블럭을 생성하기 위해 어레이의 서로 다른 평면들로부터 삭제 블록들의 수를 선택하는 단계; 및
    상기 적응형 메타 블록내의 삭제 블록들을 병렬로 프로그래밍하는 단계를 포함하고, 상기 삭제 블록들의 수는 가능한 값의 범위로부터 선택된 적응형 메타블럭내의 삭제블록의 수인 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  2. 제1항에 있어서, 상기 가능한 값의 범위는 1부터 상기 메모리 어레이내의 개별적으로 프로그램 가능한 평면들의 수까지 인 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  3. 제1항에 있어서, 적응형 메타 블록내의 삭제 블록들을 병렬로 프로그래밍하는 것은 상기 적응형 메타 블록내에 있지않은 다수개의 삭제 블록들을 병렬로 프로그래밍하는 동작을 일으키는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  4. 제3항에 있어서, 상기 적응형 메타 블록에 있지 않은 다수의 삭제 블록들은 다른 적응형 메타 블록에 있는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  5. 제1항에 있어서, 삭제 블록들의 수를 선택하는 것은 평면들의 수를 선택하는 동작을 포함하고, 각각의 평면은 상기 평면내의 사용가능한 삭제 블록들의 수에 따라 선택되는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  6. 제1항에 있어서, 저장되는 상기 데이터는 어드레스의 지정에 의한 단위별 데이터를 포함하고, 논리 그룹들은 삭제 블록내에 저장될 수 있는 어드레스 지정에 의한 단위별 데이터의 수와 동일한 어드레스 지정에 의한 단위별 데이터 수로부터 개별적으로 형성되며, 논리 그룹은 적응형 메타블록에 프로그램되어 적응형 메타블록내의 각각의 삭제 블록들은 상기 논리 그룹으로부터 적어도 하나의 어드레스지정 가능한 데이터 단위를 가지는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  7. 개별적으로 프로그램가능한 평면들내에 배치된 삭제 블록들을 포함하는 메모리 어레이에 데이터를 저장하는 방법에 있어서,
    평면 내의 삭제 블록들의 유용성을 기초로한 알고리즘에 따라 개별적으로 선택되는 메모리 어레이의 다수의 평면들을 선택하는 단계;
    선택된 평면들중 다른 하나로부터 도출된 다수의 삭제 블록들로부터 적응형 메타블록을 선택하는 단계; 및
    상기 적응형 메타블록의 삭제 블록들을 병렬로 프로그래밍하는 단계를 포함하는 메모리 어레이에 데이터를 저장하는 방법.
  8. 제7항에 있어서, 상기 어레이의 다른 평면들로부터의 삭제 블록들은 상대적인 평면들내의 동일 위치에 배치되지 않는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  9. 제7항에 있어서, 삭제블록들의 수는 가능한 값의 범위로부터 선택되는 것을 특징으로하는 메모리 어레이에 데이터를 저장하는 방법.
  10. 제7항에 있어서, 제2적응형 메타블록을 형성하고, 상기 적응형 메타블록 및 제2적응형 메타블록을 병렬로 프로그래밍하는 단계를 더 포함하는 메모리 어레이에 데이터를 저장하는 방법.
  11. 제10항에 있어서, 상기 적응형 메타블록내의 삭제블록들의 수와 상기 제2적응형 메타블록내의 삭제 블록들의 수는 다른 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  12. 개별적으로 프로그램가능한 평면들 내에 배치된 멀티 섹터형 삭제 블록들을 포함하는 메모리 어레이에 데이터를 저장하는 방법에 있어서,
    상기 어레이에 저장되는 데이터로부터 상기 메모리 어레이의 하나의 삭제 블록에 저장된 데이터 섹터들의 수와 동일한 데이터 섹터들을 포함하는 논리 그룹들을 형성하는 단계;
    상기 논리 그룹들로부터 적응형 논리 블록들을 형성하는 단계;
    멀티 섹터 삭제 블록들로부터 적응형 메타블록을 형성하는 단계;
    상기 메모리 어레이의 적응형 메타블록에 상기 적응형 논리 블록을 저장하여 멀티 섹터 삭제 블록들의 하나가 상기 논리 그룹들의 각각의 부붐을 포함하도록 하는 단계; 및
    상기 적응형 논리 블록의 논리 그룹들에 대한 어드레스 정보를 개별적으로 기록하는 단계를 포함하는 메모리 어레이에 데이터를 저장하는 방법.
  13. 제12항에 있어서, 상기 적응형 논리 블록은 상기 메모리 어레이의 멀티 섹터 삭제 블록들에 대한 병렬 프로그래밍에 의해 상기 메모리 어레이의 적응형 메타블록에 저장되는 것을 특징으로하는 메모리 어레이에 데이터를 저장하는 방법.
  14. 제12항에 있어서, 상기 적응형 논리 블록내의 논리 그룹들의 수는 상기 적응형 논리 블록에 대해 개별적으로 결정되는 것을 특징으로 하는 메모리 어레이에 데이터를 저장하는 방법.
  15. 개별적으로 프로그램가능한 평면내에 배열된 메모리 셀 어레이;
    개별적으로 삭제될 수 있는 상기 어레이의 가장 작은 단위가 되는 삭제 블록을 가지되, 다수의 삭제 블록들을 가지는 평면;
    저장된 데이터의 특성들에 따라 평면들의 수를 선택하기 위해 구비되는 시스템; 및
    선택된 평면들 내의 개별적인 삭제 블록들을 병렬로 프로그래밍하기 위해 구비되는 시스템을 포함하는 비휘발성 메모리 시스템.
  16. 제15항에 있어서, 상기 개별적인 평면은 상기 개별적인 평면들내에 남아있는 사용가능한 삭제 블록들의 수에 따라 선태되는 것을 특징으로 하는 비휘발성 메모리 시스템.
  17. 제15항에 있어서, 제2 메모리 셀 어레이를 더 포함하고, 상기 제1메모리 셀 어레이는 플레시 메모리 내에 구비되고, 상기 제2 메모리 셀 어레이는 비휘발성 램내에 구비되는 것을 특징으로 하는 비휘발성 메모리 시스템.
  18. 제1적응형 메타블록을 형성하기 위해 구비되는 다수의 개별적인 삭제가능한 블록들을 가지는 비휘발성 메모리 어레이에 데이터를 갱신하는 방법에 있어서,
    상기 적응형 메타블록 내에 저장된 데이터를 갱신하기 위해 호스트로부터 갱 신 데이터를 수신하는 단계;
    갱신 데이터를 포함하는 삭제 블록들에 포함된 제2 적응형 메타블록 내에 상기 갱신 데이터를 저장하는 단계; 및
    갱신 데이터를 가지지 않는 삭제 블록들에 포함된 제3 적응형 메타블록내에 상기 제1적응형 메타블록으로부터 원형 데이터를 저장하는 단계를 포함하는 비휘발성 메모리 어레이에 데이터를 갱신하는 방법.
  19. 제18항에 있어서, 상기 제2 적응형 메타블록과 제3 적응형 메타블록은 상기 제1적응형 메타블록보다 작은 것을 특징으로 하는 비휘발성 메모리 어레이에 데이터를 갱신하는 방법.
  20. 제18항에 있어서, 상기 제1적응형 메타블록은 제1개수의 삭제 블록들을 가지고, 상기 제2적응형 메타블록은 제2개수의 삭제 블록들을 가지고, 상기 제3적응형 메타블록은 제3개수의 삭제 블록들을 가지며, 제2개수 및 제3개수의 합은 제1개수와 동일한 것을 특징으로 하는 비휘발성 메모리 어레이에 데이터를 갱신하는 방법.
  21. 원형 데이터 그룹들을 가지는 원형 적응형 논리 블록을 각각 저장하는 제1 원형 적응형 메타블록들을 포함하는 비휘발성 메모리 어레이에 저장된 데이터를 갱신하는 방법에 있어서,
    이전 데이터를 교체하기 위해 갱신 데이터를 수신하는 단계;
    갱신되는 논리 그룹들을 형성하고, 갱신되는 논리 그룹은 원형 논리 그룹과 동일한 논리 어드레스 영역을 가지는 순차 데이터를 포함하며, 갱신되는 논리그룹내의 데이터의 일부는 갱신 데이터인 단계;
    갱신되는 적응형 논리 블록들을 형성하고, 상기 갱신되는 적응형 논리 블록은 다수의 갱신되는 논리 그룹들에 포함되며, 갱신되는 적응형 논리 블록 내의 갱신되는 논리 그룹들의 수는 원형 적응형 논리 블록 내의 원형 논리 그룹들의 수에 독립적인 단계; 및
    갱신되는 적응형 메타블록에 갱신되는 적응형 논리 블록을 프로그래밍하는 단계를 포함하는 비휘발성 메모리 어레이에 저장된 데이터를 갱신하는 방법.
  22. 제21항에 있어서, 상기 갱신되는 적응형 논리 블록 내의 갱신되는 논리 그룹들의 수는 원형 적응형 논리 블록 내의 원형 논리 그룹들의 수보다 적은 것을 특징으로 하는 비휘발성 메모리 어레이에 저장된 데이터를 갱신하는 방법.
  23. 제21항에 있어서, 갱신되는 적응형 논리 블록내의 갱신되는 논리 그룹들은 하나 이상의 원형 적응형 논리 블록 내의 원형 논리 그룹에 따르는 것을 특징으로 하는 비휘발성 메모리 어레이에 저장된 데이터를 갱신하는 방법.
  24. 프로그래밍을 위한 상태에 있고, 비휘발성 어레이의 삭제의 최소 단위가 되는 삭제 블록인 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법에 있어 서,
    제1삭제된 블록들을 지시하는 휘발성 메모리 내에 제1 리스트를 유지하고, 각각의 삭제된 블록들은 프로그래밍을 위해 상기 제1삭제된 블록들로부터 직접 선택되는 단계;
    프로그래밍을 위해 선택되는 삭제된 블록에 대한 내용을 삭제하기 위해 제1리스트를 갱신하여, 갱신된 제1리스트를 생성하는 단계; 및
    제1리스트의 갱신에 응답하여 상기 비휘발성 메모리 내의 제2리스트에 갱신된 제1 리스트의 내용을 카피하는 단계를 포함하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  25. 제24항에 있어서, 상기 제2리스트는 제1 주소할당 데이터 패킷의 일부분으로서 상기 비휘발성 메모리에 프로그램되는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  26. 제25항에 있어서, 상기 제2리스트는 상기 비휘발성 메모리에 제2주소할당 데이터 패킷을 프로그래밍하고 상기 제1주소할당 데이터 패킷이 만료됨을 지시함에 따라 갱신되는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  27. 제24항에 있어서,
    제2삭제된 블록들을 지시하는 제3리스트를 유지하는 단계; 및
    상기 제1리스트와 상기 제3리스트 사이에 제1삭제된 블록들의 각각과 제2삭제된 블록들의 각각을 교환하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  28. 제27항에 있어서, 교환율은 위어 레벨링(wear leveling)을 포함하는 기준에 따라 선택되는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  29. 제27항에 있어서, 제3삭제된 블록을 지시하는 제4리스트를 유지하고, 상기 제3리스트와 제4리스트 사이에 제3삭제된 블록들 각각과 제2삭제된 블록들 각각을 교환하는 단계를 더 포함하는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  30. 제29항에 있어서, 상기 비휘발성 메모리 어레이는 다수의 평면들을 가지고, 제1 및 제2 삭제된 블록들의 각각은 평면들로부터 형성되고, 제3삭제된 블록들의 각각은 상기 어레이의 제1평면으로부터 형성되는 것을 특징으로 하는 비휘발성 메모리 어레이의 삭제된 블록들을 관리하는 방법.
  31. 메모리 어레이의 삭제 블록 내에 저장된 데이터 양과 동일한 데이터를 가지 는 메모리 어레이 내의 논리 그룹을 저장하되, 다수의 데이터의 논리 그룹들을 저장하는 방법에 있어서,
    삭제 블록들을 포함하는 메타블록을 형성하는 단계;
    제1 및 제2 논리 그룹을 포함하는 논리 그룹들을 저장하여, 상기 메타블록의 삭제블록들 각각이 제1 논리 그룹의 일부 및 제2 논리 그룹의 일부를 포함하도록 하는 단계; 및
    상기 제1논리 그룹에 대한 제1정보 및 상기 제2논리 그룹에 대한 제2정보을 가지는 테이블을 유지하고, 상기 제1정보는 제1삭제 블록의 물리적 위치를 가지며, 상기 제2정보는 제2삭제 블록의 물리적 위치를 가지는 것을 특징으로 하는 메모리 어레이에 데이터의 논리 그룹들을 저장하는 방법.
  32. 제31항에 있어서, 상기 제1정보는 상기 메타블록내의 삭제 블록의 수와 논리 그룹들 내의 제1논리 그룹의 논리적 위치를 포함하는 것을 특징으로 하는 메모리 어레이에 데이터의 논리 그룹들을 저장하는 방법.
  33. 제31항에 있어서, 상기 논리 그룹들 각각은 상기 테이블 내에 내용을 가지고, 논리 그룹들 내의 논리 그룹의 수는 삭제 블록들 내의 삭제 블록의 수와 동일하고, 삭제 블록들 각각의 위치는 상기 테이블 내의 내용에 의해 주어지는 것을 특징으로 하는 메모리 어레이에 데이터의 논리 그룹들을 저장하는 방법.
  34. 주소할당 데이터의 정수를 가지는 삭제 블록의 삭제 최소 단위를 가지는 비휘발성 메모리 어레이에 제1 주소할당 데이터들을 저장하는 방법에 있어서,
    상기 제1 주소할당 데이터의 정수로부터 제2 주소할당 데이터를 형성하는 단계;
    상기 비휘발성 메모리 어레이에 상기 제2 주소할당 데이터를 기록하여, 상기 제2 주소할당 데이터의 제1부분은 제1 삭제 블록에 저장되고, 상기 제2 주소할당 데이터의 제2부분은 제2 삭제 블록에 저장시키는 단계; 및
    상기 비휘발성 메모리 어레이 내에 제2 주소할당 데이터의 물리적 위치를 결정하기위해 사용될 수 있는 제2 주소할당 데이터에 대한 위치 정보를 각각 기록하는 단계를 포함하는 비휘발성 메모리 어레이에 주소할당 데이터를 저장하는 방법.
  35. 제34항에 있어서, 제1 주소할당 데이터는 섹터단위이고, 제2 주소할당 데이터는 논리 그룹 단위인 것을 특징으로 하는 비휘발성 메모리 어레이에 주소할당 데이터를 저장하는 방법.
  36. 제34항에 있어서, 상기 제2 주소할당 데이터의 물리적 위치는 상기 제2 주소할당 데이터에 대한 위치 정보의 사용과 다른 주소할당 데이터에 대한 위치 정보로부터 결정되는 것을 특징으로 하는 비휘발성 메모리 어레이에 주소할당 데이터를 저장하는 방법.
  37. 개별적으로 프로그램 가능한 평면들 내에 배치되고, 각각은 메모리 어레이의 삭제의 최소단위인 멀티 섹터 삭제 블록들을 가지는 메모리 어레이 내에 데이터를 저장하는 방법에 있어서,
    상기 어레이 내에 저장된 데이터로부터 논리 그룹들을 형성하고, 하나의 논리 그룹은 상기 메모리 어레이의 하나의 삭제 블록내에 저장된 데이터 섹터들의 수와 동일한 데이터 섹터들의 수를 포함하는 단계;
    선택 범위의 수로부터 선택되는 삭제 블록들의 수로부터 적응형 메타블록을 형성하는 단계; 및
    메모리 어레이의 상기 적응형 메타블록 내의 논리 그룹들 저장하여 상기 적응형 메타블록의 삭제블록들 수의 각각이 논리 그룹의 부분을 포함하도록 하는 단계를 포함하는 메모리 어레이 내에 데이터를 저장하는 방법.
  38. 각각은 메모리 어레이의 삭제의 최소단위가 되는 개별적으로 선태된 삭제 블록들을 포함하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법에 있어서,
    하나의 삭제 블록을 구성하는 제1 적응형 메타블록 내에 논리적 영역을 포함하는 데이터의 제1 부분을 저장하는 단계; 및
    하나이상의 삭제 블록을 포함하는 제2적응형 메타블록 내에 논리적 영역을 포함하지 않는 데이터의 제2 부분을 저장하는 단계를 포함하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  39. 제38항에 있어서, 상기 논리적 영역의 위치는 갱신되는 데이터의 논리적 어드레스 범위로부터 결정되는 것을 특징으로 하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  40. 제38항에 있어서, 상기 메모리 어레이의 제1적응형 메타블록 내에 데이터의 제1부분 및 상기 메모리 어레이의 제2 적응형 메타블록 내에 데이터의 제2부분을 저장하는 단계 이전에, 데이터의 제1 부분과 제2 부분은 상기 메모리 어레이의 부분이 아닌 버퍼 내에 저장되는 것을 특징으로 하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  41. 제38항에 있어서, 상기 메모리 어레이의 제1적응형 메타블록 내에 데이터의 제1부분 및 상기 메모리 어레이의 제2 적응형 메타블록 내에 데이터의 제2부분을 저장하는 단계 이전에,
    상기 데이터의 제1부분 및 제2 부분은 제3 적응형 메타블록 내에 함께 저장되는 단계를 더 포함하는 것을 특징으로 하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  42. 제41항에 있어서, 상기 데이터의 제1부분과 제2 부분이 상기 제3 적응형 메타블록에 함께 저장되는 동안, 상기 논리적 영역의 위치는 리맵 리스트에 기록되는 것을 특징으로 하는 메모리 어레이 내의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  43. 적응형 메타블록은 개별적으로 선택된 삭제 블록들을 가지고, 삭제 블록은 메모리 어레이의 삭제의 최소단위가 되며, 데이터 파일은 하나 이상의 데이터 런을 가지며, 데이터 런은 데이터 런 영역들 사이에 확장된 논리적으로 순차적인 데이터 패킷의 스트림인 메모리 셀 어레이의 적응형 메타블록들에 데이터 파일들을 저장하는 방법에 있어서,
    제1 적응형 메타블록 내에 데이터 런 영역에 인접하지 않은 데이터 런의 제1 부분을 저장하는 단계; 및
    제2 적응형 메타블록 내에 데이터 런 영역에 인접한 데이터 런의 제2부분을 저장하고, 상기 제2 적응형 메타블록은 최소크기의 적응형 메타블록의 크기를 가지는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록들에 데이터 파일들을 저장하는 방법.
  44. 데이터 파일은 적어도 하나의 데이터 런을 가지며, 데이터 런은 논리적 영역들 사이에 확장된 일련의 할당가능 데이터 패킷들을 구성하는 메모리 어레이의 제1 메타블록들에 저장된 데이터 파일을 재배치하는 방법에 있어서,
    논리적 영역들의 위치를 정하는 단계; 및
    제1 논리적 영역과 제2 논리적 영역 사이에 확정되는 데이터 런을 포함하는 논리 그룹들을 카피하여, 제1 논리적 영역을 가지는 하나의 논리 그룹은 최소 크기의 적응형 메타블록인 제1 적응형 메타블록에 카피되고, 논리적 영역을 포함하지 않는 논리 그룹들은 최소 크기의 적응형 메타블록이 아닌 제2 적응형 메타블록에 카피되는 단계를 포함하는 메모리 어레이의 제1 메타블록들에 저장된 데이터 파일을 재배치하는 방법.
  45. 제44항에 있어서, 상기 제2 논리 영역을 포함하는 논리 그룹은 최소 크기의 메타블록인 제3 적응형 메타블록에 카피되는 것을 특징으로 하는 메모리 어레이의 제1 메타블록들에 저장된 데이터 파일을 재배치하는 방법.
  46. 적응형 매타블록은 개별적으로 선택되는 삭제 블록들을 가지고, 삭제 블록은 메모리 셀 어레이의 삭제의 최소단위가 되는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법에 있어서,
    제1 적응형 메타블록들 내에 데이터를 저장하는 단계; 및
    상기 제1 적응형 메타블록들로부터 제2 적응형 메타블록들로 상기 데이터를 카피하여 논리 영역이 하나의 삭제 블록을 구성하는 적응형 메타블록에 카피되도록 하는 단계를 포함하는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  47. 제46항에 있어서, 제1 적응형 메타블록들이 만료되었음을 마킹하는 단계를 더 포함하는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  48. 제46항에 있어서, 상기 제1 적응형 메타블록들로부터 데이터를 카피하는 동작은 상기 제1 적응형 메타블록들 내에 저장된 논리 어드레스와 동일한 논리 어드레스를 가지는 갱신된 데이터가 수신될 때 발생하는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  49. 제46항에 있어서, 데이터를 카피하는 것은 다른 메모리 동작들에 영향을 미치지않고 카피가 허용되는 시기에 발생하는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  50. 제46항에 있어서, 상기 메모리 셀 어레이에 이전에 저장되지 않은 호스트 데이터는 상기 제1 적응형 메타블록들로부터 상기 제2 적응형 메타블록들로 데이터의 카피와 함께 상기 메모리 셀 어레이에 프로그램되는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록들 내에 데이터를 저장하는 방법.
  51. 제50항에 있어서, 상기 데이터는 제1 적응형 메타블록에 저장되고, 상기 호스트 데이터는 제2 적응형 메타블록에 저장되며, 상기 제1 및 제2 적응형 메타블록은 병렬로 프로그램되는 것을 특징으로 하는 메모리 셀 어레이의 적응형 메타블록 들 내에 데이터를 저장하는 방법.
  52. 적응형 메타블록은 다수의 삭제 블록들을 구성하고, 삭제 블록은 삭제의 최소 단위가 되며, 삭제 블록들의 수는 적응형 메타블록에 대해 선택되는 메모리 어레이의 적응형 메타블록들 내에 데이터 파일들을 저장하는 방법에 있어서,
    메모리 어레이의 적응형 메타블록들에 할당가능한 데이터 패킷들을 저장하여, 적응형 메타블록 내의 삭제 블록들의 수는 논리적 영역이 저장되는 할당가능한 데이터 패킷들에 포함되는지 여부에 따라 선택되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들 내에 데이터 파일들을 저장하는 방법.
  53. 제52항에 있어서, 논리적 영역의 위치는 갱신되는 논리 주소의 범위에 의해 결정되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들 내에 데이터 파일들을 저장하는 방법.
  54. 제52항에 있어서, 논리적 영역의 위치는 호스트에 의해 저정되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들 내에 데이터 파일들을 저장하는 방법.
  55. 제52항에 있어서, 할당가능한 데이터 패킷들은 축적용 램 내에 제1 저장되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들 내에 데이터 파일들을 저 장하는 방법.
  56. 프로그램 블록은 메모리 어레이의 각각의 평면으로부터 삭제 블록을 포함하고, 삭제 블록은 메모리 어레이의 삭제의 최소 단위가 되며, 메모리 어레이는 축적용 메모리에 연결되며, 프로그램 블록들을 가지는 비휘발성 다평면 메모리 어레이 내에 데이터를 저장하는 방법에 있어서,
    프로그램 블록의 제1 삭제 블록들로부터 제1 메타블록을 형성하는 단계;
    상기 프로그램 블록의 제2 삭제 블록들로부터 제2 메타블록을 형성하는 단계;
    제1 시퀀스로 축적용 메모리에 호스트로부터 할당가능 데이터 단위들을 수신하고, 제1 시퀀스는 적어도 하나의 제1 호스트 파일의 일부와 제2 호스트 파일의 일부를 가지는 단계; 및
    제2 시퀀스로 상기 메모리 어레이에 축적용 메모리로부터 상기 할당가능 데이터 단위들을 전송하고, 상기 제2 시퀀스는 제1 호스트 파일의 일부로 제1 메타블록과 제2 호스트 파일의 일부로 제2 메타블록을 병렬로 프로그램 하기 위해 선택되는 것을 특징으로 하는 프로그램 블록들을 가지는 비휘발성 다평면 메모리 어레이 내에 데이터를 저장하는 방법.
  57. 적응형 메타블록은 개별적으로 선택된 삭제 블록들을 가지고, 삭제 블록은 메모리 어레이의 삭제의 최소단위가 되는 적응형 메타블록들 내에 비휘발성 메모리 어레이에 데이터를 저장하는 방법에 있어서,
    제1 적응형 메타블록에 상기 메모리 어레이에 이전에 저장되어있던 제1 데이터를 프로그래밍하는 단계; 및
    제2 적응형 메타블록에 상기 메모리 어레이에 저장되지 않았던 제2 데이터를 동시에 프로그래밍하는 단계를 포함하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  58. 제57항에 있어서, 상기 제1 및 제2 적응형 메타블록들은 상기 메모리 어레이에 병렬로 동시에 프로그램되는 것을 특징으로 하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  59. 제57항에 있어서, 상기 제2 데이터는 호스트로부터 직접 수신된 데이터를 포함하는 것을 특징으로 하는 비휘발성 메모리 어레이에 데이터를 저장하는 방법.
  60. 삭제 블록은 어레이의 삭제의 최소단위가 되고, 적응형 메타블록은 함께 프로그램되고 삭제되는 선택된 수의 삭제 블록들로 구성되는, 삭제 블록들로 구성된 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법에 있어서,
    버퍼 메타블록에 제1 주소할당 데이터들을 저장하는 단계;
    호스트로부터 제2 주소할당 데이터들을 수신하는 단계; 및
    제2 적응형 메타블록에 상기 제2 주소할당 데이터들을 프로그램하는 것과 동시에 상기 버퍼 메타블록으로부터 제1 적응형 메타블록에 상기 제1 주소할당 데이터들을 카피하는 단계를 포함하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  61. 제60항에 있어서, 상기 제1 주소할당 데이터들은 상기 메모리 어레이와 병렬로 상기 버퍼 메타블록에 저장되는 것을 특징으로 하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  62. 제60항에 있어서, 상기 버퍼 메타블록은 메타블록에 대한 최대 크기를 가지는 것을 특징으로 하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  63. 제60항에 있어서, 상기 제1 주사할당 데이터들은 논리적 영역을 포함하도록 확장되는 것을 특징으로 하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  64. 제60항에 있어서, 부가적인 주소할당 데이터들은 상기 버퍼 메타블록에 저장되고, 상기 부가적인 주소할당 데이터들은 상기 제1 주소할당 데이터들의 카피와 상기 제2 주소할당 데이터들의 프로그래밍과 함께 병렬로 프로그램되는 것을 특징 으로 하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  65. 제60항에 있어서, 제3 주소할당 데이터들은 상기 제1 적응형 메타블록에 상기 제1 주소할당 데이터들을 카피하는 동작과 함께 상기 제1 적응형 메타블록에 카피되고, 제1 및 제3 주소할당 데이터들은 다른 파일 또는 다른 데이터 런들로부터 카피된는 것을 특징으로 하는 비휘발성 메모리의 적응형 메타블록들에 주소할당 데이터들을 저장하는 방법.
  66. 삭제 블록의 삭제의 최소단위 및 병렬로 프로그램되는 삭제 블록들의 다른 수들을 가지는 적응형 메타블록들 내로 삭제 블록들이 그룹핑되는 제1 영역을 가지는 비휘발성 메모리 어레이; 및
    메모리 카드에 의해 수신되는 데이터 부분이 데이터 부분이 논리적 여역을 포함하는지 여부에 의존하는 메모리 어레이의 제1 영역 또는 제2 영역에 최초로 전송되는 지의 여부를 결정하는 컨트롤러를 포함하고,
    상기 삭제 블록들의 수는 저장되는 데이터에 논리적 영역들의 위치에 따라 선택되고, 상기 메모리 어레이는 제2 영역을 가지며, 상기 제2 영역 내에서 데이터는 상기 메모리 어레이의 제2 영역 내에 저장되는 데이터에 데이터 영역들의 위치들에 의존하는 지의 여부에 따라 데이터가 메타블록들에 저장되는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  67. 제66항에 있어서, 상기 데이터 부분은 논리적 영역을 포함하고, 상기 데이터 부분은 상기 메모리 어레이의 제2 영역에 전송되며, 상기 메모리 어레이의 제1 영역에 순차적으로 카피되는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  68. 제67항에 있어서, 상기 메모리 어레이의 제1 영역에의 카피는 상기 메모리 어레이의 제2 영역으로부터 상기 메모리 어레이의 제1 영역으로 부가적 데이터의 카피와 병렬로 이루어지는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  69. 제67항에 있어서, 상기 메모리 어레이의 제1 영역에의 카피는 상기 메모리 어레이의 제2 영역으로부터의 카피와 병렬로 수행되며, 카피 동작은 비휘발성 메모리의 병렬 동작을 이용하는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  70. 제66항에 있어서, 상기 데이터 부분은 논리적 영역을 포함하고, 상기 메모리 어레이의 제2 영역에 최초로 전송되며, 상기 메모리 어레이의 제2 영역으로부터 상기 메모리 어레이의 제1 영역 내의 최소크기의 적응형 메타블록에 순차적으로 전송되는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  71. 제66항에 있어서, 상기 메모리 어레이의 제1 영역은 제1 삭제 블록들을 구성 하고, 상기 메모리 어레이의 제2 영역은 제2 삭제 블록들을 구성하며, 상기 제1 및 제2 삭제 블록들을 구성하는 삭제 블록들은 서로 교환가능하여, 각각의 삭제 블록은 제1 시간에 제1 삭제 블록들의 하나가 되며, 제2 시간에 제2 삭제 블록들의 하나가 되는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  72. 제66항에 있어서, 삭제 블록들이 유효 데이터를 포함하지 않으며, 메타블록들로 그룹핑되지 않는 제3 영역을 더 포함하며, 상기 제3 영역 내의 각각의 삭제 블록들은 데이터 저장을 위해 제1 및 제2 영역으로 전환되고, 상기 제1 및 제2 영역의 삭제 블록들은 유효 데이터를 가지지 않을 경우 상기 제3 영역으로 전환되는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  73. 제66항에 있어서, 상기 제1 영역은 제1 전용 삭제 블록들을 가지고, 상기 제1 삭제 블록들중 다수는 데이터를 가지는 적응형 메타블록들을 형성하고, 상기 제1 삭제 블록들중 부가적인 다수는 데이터를 포함하지 않으며, 적응형 메타블록들로 그룹핑되지 않는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  74. 제73항에 있어서, 상기 컨트롤러는 데이터를 저장하기 위한 새로운 적응형 메타블록들을 형성하기 위해 상기 제1 삭제 블록들중 부가적인 다수로부터 삭제 블록들을 선택하는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  75. 제66항에 있어서, 상기 제2 영역은 제2 전용 삭제 블록들을 가지고, 상기 제2 삭제 블록들중 다수는 데이터를 가지는 적응형 메타블록들을 형성하고, 상기 제2 삭제 블록들중 부가적인 다수는 데이터를 포함하지 않으며, 메타블록들로 그룹핑되지 않는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  76. 제75항에 있어서, 상기 컨트롤러는 데이터를 저장하기 위한 새로운 적응형 메타블록들을 형성하기 위해 상기 제2 삭제 블록들중 부가적인 다수로부터 삭제 블록들을 선택하는 것을 특징으로 하는 데이터 저장용 휴대용 메모리 카드.
  77. 적응형 메타블록은 개별적으로 선택된 삭제 블록들을 가지고, 삭제 블록은 메모리 어레이의 삭제의 최소 단위이며, 상기 메모리 어레이는 최대 크기의 하나 이상의 버퍼 메타블록들을 포함하는 직렬 플래시 버퍼를 포함하는 메모리 어레이의 적응형 메타블록들에 데이터를 저장하는 방법에 있어서,
    상기 직렬 플래시 버퍼의 버퍼 메타블록 내에 제1 논리적 영역을 포함하는 제1 데이터를 저장하는 단계;
    상기 버퍼 메타블록으로부터 상기 직렬 플래시 버퍼 내에 있지 않은 제1 적응형 메타블록으로 상기 제1 데이터를 순차적으로 카피하며, 상기 제1 적응형 메타블록은 하나의 삭제 블록을 구성하는 단계; 및
    상기 직렬 플래시 버퍼 내에 있지않은 제2 적응형 메타블록 내의 논리적 영역을 포함하지 않는 제2 데이터를 저장하는 단계를 포함하는 메모리 어레이의 적응 형 메타블록들에 데이터를 저장하는 방법.
  78. 제77항에 있어서, 상기 제2 적응형 메타블록은 최대 크기의 메타블록인 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들에 데이터를 저장하는 방법.
  79. 제77항에 있어서, 상기 버퍼 메타블록으로부터 상기 제1 데이터의 카피는 상기 직렬 플래시 버퍼로부터 상기 직렬 플래시 버퍼 내에 있지 않은 상기 메모리 어레이 내의 위치들로의 부가적인 데이터를 카피하는 동작과 병렬로 수행되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들에 데이터를 저장하는 방법.
  80. 제79항에 있어서, 상기 부가적인 데이터는 제2 논리적 영역을 포함하는 제2 데이터를 포함하고, 제2 데이터는 하나의 삭제블록을 형성하는 제3 적응형 메타블록에 카피되는 것을 특징으로 하는 메모리 어레이의 적응형 메타블록들에 데이터를 저장하는 방법.
KR1020067013319A 2003-12-30 2004-12-22 데이터 런 프로그래밍 KR100983212B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/749,189 2003-12-30
US10/749,189 US7433993B2 (en) 2003-12-30 2003-12-30 Adaptive metablocks
US10/841,118 2004-05-07
US10/841,118 US20050144363A1 (en) 2003-12-30 2004-05-07 Data boundary management
US11/016,271 2004-12-16
US11/016,271 US7383375B2 (en) 2003-12-30 2004-12-16 Data run programming

Publications (2)

Publication Number Publication Date
KR20070012630A true KR20070012630A (ko) 2007-01-26
KR100983212B1 KR100983212B1 (ko) 2010-09-20

Family

ID=34753551

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067013319A KR100983212B1 (ko) 2003-12-30 2004-12-22 데이터 런 프로그래밍

Country Status (7)

Country Link
US (1) US7383375B2 (ko)
EP (2) EP2256621A1 (ko)
JP (2) JP4977473B2 (ko)
KR (1) KR100983212B1 (ko)
CN (1) CN100524209C (ko)
TW (1) TWI280581B (ko)
WO (1) WO2005066770A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023120829A1 (ko) * 2021-12-24 2023-06-29 오픈엣지테크놀로지 주식회사 어레이 풀링 방법 및 이를 위한 장치

Families Citing this family (271)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4175991B2 (ja) * 2003-10-15 2008-11-05 株式会社東芝 不揮発性半導体記憶装置
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
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
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
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
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7558906B2 (en) 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US20070084375A1 (en) * 2005-08-10 2007-04-19 Smith Kyle S High density cartridge and method for reloading
US7529905B2 (en) * 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US20070143378A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with adaptive file handling in a directly mapped file storage system
US20070143566A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with data alignment in a directly mapped file storage system
US20070156998A1 (en) * 2005-12-21 2007-07-05 Gorobets Sergey A Methods for memory allocation in non-volatile memories with a directly mapped file storage system
US20070143561A1 (en) * 2005-12-21 2007-06-21 Gorobets Sergey A Methods for adaptive file data handling in non-volatile memories with a directly mapped file storage system
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
US20070174563A1 (en) * 2006-01-23 2007-07-26 Stuart Staniford System and method for selecting memory locations for overwrite
EP1850347A1 (en) * 2006-04-28 2007-10-31 Deutsche Thomson-Brandt Gmbh Method and device for writing to a flash memory
US7564721B2 (en) * 2006-05-25 2009-07-21 Micron Technology, Inc. Method and apparatus for improving storage performance using a background erase
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) * 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US8286156B2 (en) * 2006-11-07 2012-10-09 Sandisk Technologies Inc. Methods and apparatus for performing resilient firmware upgrades to a functioning memory
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
JP5266250B2 (ja) 2006-12-26 2013-08-21 サンディスク テクノロジィース インコーポレイテッド 連続論理アドレス空間インターフェイスを備えるダイレクトデータファイルシステムの使用
US8046522B2 (en) * 2006-12-26 2011-10-25 SanDisk Technologies, Inc. Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8166267B2 (en) 2006-12-26 2012-04-24 Sandisk Technologies Inc. Managing a LBA interface in a direct data file memory system
US7739444B2 (en) 2006-12-26 2010-06-15 Sandisk Corporation System using a direct data file system with a continuous logical address space interface
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7791952B2 (en) * 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US8275953B2 (en) * 2007-03-19 2012-09-25 Sandisk Technologies Inc. Methods for forcing an update block to remain sequential
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US7904670B2 (en) * 2007-03-19 2011-03-08 Sandisk Corporation Methods for conversion of update blocks based on comparison with a threshold size
US20080235489A1 (en) * 2007-03-19 2008-09-25 Sergey Anatolievich Gorobets Systems for forcing an update block to remain sequential
US20080235464A1 (en) * 2007-03-19 2008-09-25 Shai Traister System for conversion of update blocks based on comparison with a threshold size
US20080250220A1 (en) * 2007-04-06 2008-10-09 Takafumi Ito Memory system
US7869277B1 (en) * 2007-04-25 2011-01-11 Apple Inc. Managing data writing to memories
US8713283B2 (en) * 2007-06-08 2014-04-29 Sandisk Technologies Inc. Method of interfacing a host operating through a logical address space with a direct file storage medium
US8239639B2 (en) * 2007-06-08 2012-08-07 Sandisk Technologies Inc. Method and apparatus for providing data type and host file information to a mass storage system
US20080307156A1 (en) * 2007-06-08 2008-12-11 Sinclair Alan W System For Interfacing A Host Operating Through A Logical Address Space With A Direct File Storage Medium
US20090055574A1 (en) * 2007-08-25 2009-02-26 Bei-Chuan Chen NAND Flash Memory Device And Related Method Thereof
US8151034B2 (en) * 2007-09-12 2012-04-03 Sandisk Technologies Inc. Write abort and erase abort handling
US8566504B2 (en) 2007-09-28 2013-10-22 Sandisk Technologies Inc. Dynamic metablocks
TW200917277A (en) * 2007-10-15 2009-04-16 A Data Technology Co Ltd Adaptive hybrid density memory storage device and control method thereof
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
JP2009211192A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP5166118B2 (ja) 2008-05-21 2013-03-21 株式会社東芝 半導体メモリの制御方法
US8762654B1 (en) * 2008-07-02 2014-06-24 Marvell International Ltd. Selectively scheduling memory accesses in parallel based on access speeds of memory
US8209439B2 (en) * 2008-08-25 2012-06-26 Sandisk Il Ltd. Managing multiple concurrent operations with various priority levels in a local storage device
EP2335245B1 (en) * 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Method and system for adaptive coding in flash memories
US8671327B2 (en) * 2008-09-28 2014-03-11 Sandisk Technologies Inc. Method and system for adaptive coding in flash memories
US8566562B2 (en) * 2008-10-03 2013-10-22 Skymedi Corporation Method for sequentially writing data with an offset to a non-volatile memory
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
EP2189895A1 (en) 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash based memory comprising a Flash translation layer and method for storing a file therein
US8266365B2 (en) 2008-12-17 2012-09-11 Sandisk Il Ltd. Ruggedized memory device
US8094500B2 (en) 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8392687B2 (en) 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
CN102317925B (zh) 2009-02-12 2014-07-23 株式会社东芝 存储器系统和控制存储器系统的方法
KR101574540B1 (ko) * 2009-04-15 2015-12-07 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US20110060865A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Flash Memory Utilization
TWI417889B (zh) * 2009-12-30 2013-12-01 Silicon Motion Inc 快閃記憶體之寫入逾時控制方法及其記憶裝置
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8429391B2 (en) * 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
JP2011227664A (ja) 2010-04-19 2011-11-10 Toshiba Corp メモリシステム
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US9268649B1 (en) * 2011-06-23 2016-02-23 Western Digital Technologies, Inc. Disk drive with recent write streams list for data refresh determination
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
EP2761469B1 (en) * 2011-09-30 2019-11-13 Intel Corporation Non-volatile random access memory (nvram) as a replacement for traditional mass storage
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9465732B2 (en) 2013-03-15 2016-10-11 Sandisk Technologies Llc Binning of blocks for dynamic linking
US9116774B2 (en) 2013-05-14 2015-08-25 Sandisk Technologies Inc. Firmware updates for multiple product configurations
TWI470431B (zh) * 2013-06-14 2015-01-21 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9411721B2 (en) * 2013-11-15 2016-08-09 Sandisk Technologies Llc Detecting access sequences for data compression on non-volatile memory devices
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9772876B2 (en) 2014-01-06 2017-09-26 International Business Machines Corporation Executing an all-to-allv operation on a parallel computer that includes a plurality of compute nodes
JP6076506B2 (ja) * 2014-01-29 2017-02-08 株式会社日立製作所 ストレージ装置
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
EP3142014B1 (en) 2014-06-25 2023-05-17 Honor Device Co., Ltd. Method, device and user equipment for reading/writing data in nand flash
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US9836245B2 (en) * 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
KR20160112135A (ko) * 2015-03-18 2016-09-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10120573B2 (en) * 2015-09-14 2018-11-06 Microsoft Technology Licensing, Llc. Modular sequential writing of data to data storage devices
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9830084B2 (en) * 2015-12-03 2017-11-28 Sandisk Technologies Llc Writing logical groups of data to physical locations in memory using headers
US10013179B2 (en) 2015-12-03 2018-07-03 Sandisk Technologies Llc Reading logical groups of data from physical locations in memory using headers
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
KR101805828B1 (ko) * 2016-03-21 2017-12-07 주식회사 디에이아이오 스토리지 시스템의 주소 변환 방법 및 스토리지 시스템의 메모리 장치 컨트롤러
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
CN106445407A (zh) * 2016-08-17 2017-02-22 北京兆易创新科技股份有限公司 一种芯片处理方法及装置
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10613943B2 (en) * 2017-07-27 2020-04-07 Western Digital Technologies, Inc. Method and system for improving open block data reliability
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10445230B2 (en) * 2017-12-08 2019-10-15 Macronix International Co., Ltd. Managing block arrangement of super blocks
KR102492729B1 (ko) * 2017-12-13 2023-01-27 마이크론 테크놀로지, 인크. 가변 폭 수퍼 블록 어드레싱
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11995336B2 (en) 2018-04-25 2024-05-28 Pure Storage, Inc. Bucket views
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109817257B (zh) * 2018-12-27 2020-10-13 西安紫光国芯半导体有限公司 一种动态存储器刷新操作下的省电方法和动态存储器
US10990320B2 (en) * 2019-02-01 2021-04-27 Western Digital Technologies, Inc. Systems and methods to optimally select metablocks
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
TWI769386B (zh) * 2019-07-04 2022-07-01 群聯電子股份有限公司 資料抹除方法、記憶體控制電路單元及記憶體儲存裝置
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
CN111143313B (zh) * 2019-12-25 2023-07-25 成都三零嘉微电子有限公司 一种提高混合映射算法的日志块读写性能的方法
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11586385B1 (en) 2020-05-06 2023-02-21 Radian Memory Systems, Inc. Techniques for managing writes in nonvolatile memory
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11756644B2 (en) 2021-06-23 2023-09-12 International Business Machines Corporation Triage of multi-plane read requests
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus
US11966605B2 (en) * 2022-03-09 2024-04-23 Kioxia Corporation Superblock-based write management in non-volatile memory devices

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JP3122222B2 (ja) 1992-05-08 2001-01-09 株式会社東芝 メモリカード装置
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JPH06266596A (ja) 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
US5367484A (en) 1993-04-01 1994-11-22 Microchip Technology Incorporated Programmable high endurance block for EEPROM device
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US5473765A (en) 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
JP3153730B2 (ja) 1995-05-16 2001-04-09 株式会社東芝 不揮発性半導体記憶装置
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
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
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
US6304980B1 (en) 1996-03-13 2001-10-16 International Business Machines Corporation Peer-to-peer backup system with failure-triggered device switching honoring reservation of primary device
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5860124A (en) 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP3072722B2 (ja) 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6226728B1 (en) 1998-04-21 2001-05-01 Intel Corporation Dynamic allocation for efficient management of variable sized data within a nonvolatile memory
JP2000122917A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP4085478B2 (ja) 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6490649B2 (en) 1998-11-10 2002-12-03 Lexar Media, Inc. Memory device
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6401160B1 (en) 1999-03-31 2002-06-04 Intel Corporation Method and apparatus to permit adjustable code/data boundary in a nonvolatile memory
US6141249A (en) 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6544844B2 (en) 1999-10-08 2003-04-08 Macronix International Co., Ltd. Method for forming a flash memory cell having contoured floating gate surface
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
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
US6571261B1 (en) 2000-07-13 2003-05-27 International Business Machines Corporation Defragmentation utility for a shared disk parallel file system across a storage area network
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
JP3699890B2 (ja) 2000-08-30 2005-09-28 シャープ株式会社 不揮発性半導体記憶装置
JP3992960B2 (ja) * 2000-10-26 2007-10-17 松下電器産業株式会社 記録装置及びプログラム
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
US6591330B2 (en) 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
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
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123412D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system sectors
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
TW506123B (en) 2001-10-24 2002-10-11 Macronix Int Co Ltd Multi-level NROM memory cell and its operating method
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3967121B2 (ja) 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7526599B2 (en) 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP2005135008A (ja) 2003-10-28 2005-05-26 Sony Corp 情報配信システム及び情報配信方法
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023120829A1 (ko) * 2021-12-24 2023-06-29 오픈엣지테크놀로지 주식회사 어레이 풀링 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
TWI280581B (en) 2007-05-01
US7383375B2 (en) 2008-06-03
WO2005066770A9 (en) 2005-09-29
EP1700204B1 (en) 2014-03-12
CN1922571A (zh) 2007-02-28
JP2007517325A (ja) 2007-06-28
TW200535854A (en) 2005-11-01
KR100983212B1 (ko) 2010-09-20
EP1700204A1 (en) 2006-09-13
WO2005066770A2 (en) 2005-07-21
JP2012099139A (ja) 2012-05-24
US20050144367A1 (en) 2005-06-30
EP2256621A1 (en) 2010-12-01
CN100524209C (zh) 2009-08-05
JP5438137B2 (ja) 2014-03-12
JP4977473B2 (ja) 2012-07-18

Similar Documents

Publication Publication Date Title
KR100983212B1 (ko) 데이터 런 프로그래밍
US7433993B2 (en) Adaptive metablocks
US20050144363A1 (en) Data boundary management
KR101202620B1 (ko) 복수-스트림 업데이팅을 갖는 비휘발성 메모리 및 방법
KR101089576B1 (ko) 업데이트 및 스크래치 패드 블록들을 위한 개선된 인덱싱을갖는 비휘발성 메모리 및 방법
JP4399008B2 (ja) 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法
JP4787266B2 (ja) スクラッチパッドブロック
EP1856616B1 (en) Scheduling of housekeeping operations in flash memory systems

Legal Events

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

Payment date: 20130820

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 9