KR20070111470A - 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링 - Google Patents

플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링 Download PDF

Info

Publication number
KR20070111470A
KR20070111470A KR1020077017713A KR20077017713A KR20070111470A KR 20070111470 A KR20070111470 A KR 20070111470A KR 1020077017713 A KR1020077017713 A KR 1020077017713A KR 20077017713 A KR20077017713 A KR 20077017713A KR 20070111470 A KR20070111470 A KR 20070111470A
Authority
KR
South Korea
Prior art keywords
data
block
housekeeping
blocks
pending
Prior art date
Application number
KR1020077017713A
Other languages
English (en)
Other versions
KR101304254B1 (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 US11/040,325 external-priority patent/US20060161724A1/en
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20070111470A publication Critical patent/KR20070111470A/ko
Application granted granted Critical
Publication of KR101304254B1 publication Critical patent/KR101304254B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

동시에 소거 가능한 셀들의 블록들로 그룹 지어진 메모리 셀들을 가진 플래시 EEPROM 시스템 같은 재프로그램 가능 비휘발성 메모리 시스템은 호스트 명령의 실행 동안 포그라운드의 메모리 시스템 하우징키핑 동작들을 수행하기 위하여 동작되고, 상기 하우스키핑 동작들은 호스트 명령의 실행과 무관하다. 하나 또는 그 이상의 상기 하우스키핑 동작들 및 호스트 명령의 실행 모두는 특정 명령을 실행하는 동한 설정된 시간 비용내에서 수행된다. 하나의 상기 명령은 메모리에 수신된 데이터를 기입하는 것이다. 하나의 상기 하우스키핑 동작은 반복 소거 및 재프로그래밍을 통하여 축적되는 개별 블록들의 소모도를 평준화하는 것이다.

Description

플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링{SCHEDULING OF HOUSEKEEPING OPERATIONS IN FLASH MEMORY SYSTEMS}
본 발명은 일반적으로 비휘발성 플래시 메모리 시스템들의 동작에 관한 것이고, 특히 상기 메모리 시스템들에서 소모도 평준화 같은 하우스키핑 동작들을 수행하기 위한 기술들에 관한 것이다. 모든 특허들, 특허 출원들, 논설들 및 여기에 참조된 다른 공개물들은 여기에 모든 목적들을 위하여 전체적으로 통합된다.
하나 또는 그 이상의 집적 회로 칩들내에 형성된 플래시 EEPROM(전기적으로 소거 가능하고 프로그램 가능한 판독 전용 메모리) 셀들의 어레이를 사용하는 특히 소형 팩터 제거 가능 카드들 또는 내장형 모듈들 형태인 오늘날 사용되는 상업적으로 성공한 비휘발성 메모리 제품들이 많이 있다. 일반적으로 독립된 집적 회로 칩상에서 필수적이지 않은 메모리 제어기는 시스템이 접속되고 카드내 메모리 어레이의 동작을 제어하는 호스트와 인터페이스하기 위하여 메모리 시스템에 포함된다. 상기 제어기는 통상적으로 마이크로프로세서, 몇몇 비휘발성 판독 전용 메모리(ROM), 휘발성 랜덤 액세스 메모리(RAM) 및 데이터의 프로그래밍 및 판독 동안 제어기를 통하여 통과할 때 데이터로부터 에러 수정 코드(ECC)를 계산하는 것과 같은 하나 또는 그 이상의 특정 회로들을 포함한다. 다른 메모리 카드들 및 내장된 모듈들은 제어기를 포함하는 것이 아니고 오히려 그들이 접속된 호스트는 제어기 기능을 제공하는 소프트웨어를 포함한다. 카드들 형태의 메모리 시스템들은 호스트의 외측 리셉터클과 짝을 이루는 접속기를 포함한다. 다른 한편 호스트들내에 내장된 메모리 시스템들은 제거를 위한 것이 아니다.
제어기를 포함하는 몇몇 상업적으로 판매되는 메모리 카드들은 다음 상표명으로 팔린다: CompactFlash(CF), MultiMedia(MMC), Secure Digital(SD), MiniSD, MicroSD, 및 TransFlash. 제어기를 포함하지 않는 메모리 시스템의 예는 SmartMedia 카드이다. 이들 카드들 모두는 이것의 양수인인 SanDisk Corporation에서 판매된다. 각각의 이들 카드들은 제거 가능하게 접속된 호스트 장치들과 특정 기계적 및 전기적 인터페이스를 가진다. 다른 종류의 작은 휴대형 플래시 메모리 장치들은 표준 유니버셜 시리얼 버스(USB) 접속기를 통하여 호스트와 인터페이스하는 플래시 드라이브들을 포함한다. SanDisk Corporation은 Cruzer라는 상표명의 장치들을 제공한다. 카드들에 대한 호스트들은 퍼스널 컴퓨터들, 노트북 컴퓨터들, 퍼스널 디지털 어시스탄트들(PDA), 다양한 데이터 통신 장치들, 디지털 카메라들, 셀룰러 전화들, 휴대용 오디오 플레이어들, 자동차 사운드 시스템들, 및 유사한 타입의 장비를 포함한다. 플래시 드라이브는 퍼스널 및 노트북 컴퓨터들 같은 USB 리셉터클을 가진 임의의 호스트와 함께 작동한다.
두 개의 일반적인 메모리 셀 어레이 아키텍쳐들은 상업적 애플리케이션, 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 어레이는 셀들의 행들을 형성하기 위하여 개별 비트 라인들 및 기준 전위 사이에서 하나 또는 그 이상의 선택 트랜지스터들을 따라 접속된 16 또는 32 같은 두 개 이상의 메모리 셀들의 직렬 스트링(string)들을 사용한다. 워드 라인들은 이들 다수의 행들내에서 셀들을 가로질러 연장한다. 스트링을 통하여 흐르는 전류가 어드레스된 셀에 저장된 전하 레벨에 좌우되도록, 행내의 개별 셀은 스트링내 나머지 셀들이 거의 턴온되지 않게 함으로써 프로그래밍 동안 판독되고 검증된다. NAND 아키텍쳐 및 메모리 시스템의 일부로서 동작들의 예들은 미국특허 5,570,315, 5,774,397, 6,046,935, 6,373,746, 6,456,528, 6,522,580, 6,711,536 및 6,781,877에서 발견된다.
상기 인용특허들에서 논의된 바와 같은 전류 플래시 EEPROM 어레이들의 전하 저장 엘리먼트는 통상적으로 대부분 도전 도핑된 폴리실리콘 재료로 형성된 전기적으로 도전성인 플로팅 게이트들이다. 플래시 EEPROM 시스템에 유용한 다른 형태의 메모리 셀은 비휘발성 방식으로 전하를 저장하기 위하여 도전성 플로팅 게이트 대 신 비도전성 유전체 재료를 사용한다. 실리콘 옥사이드, 실리콘 니트라이드 및 실리콘 옥사이드(ONO)로 형성된 삼중층 유전체는 메모리 셀 채널 위에서 도전성 제어 게이트 및 반도전성 기판 표면 사이에 샌드위치된다. 셀은 셀 채널로부터 니트라이드로 전자들을 주입함으로써 프로그램되고, 이들 전자들은 제한된 영역에 트랩 및 저장되고, 핫 홀들을 니트라이드에 주입함으로써 소거된다. 유전체 저장 엘리먼트들을 사용하는 몇몇 특정 셀 구조들 및 어레이들은 Harari 등에 의한 미국특허출원 공개물 US 2003/0109093에 기술된다.
대부분의 모든 집적 회로 애플리케이션들에서, 실리콘 기판을 축소하기 위한 압력은 몇몇 집적 회로 기능을 실행하기 위하여 요구되고, 상기 기능은 플래시 EEPROM 메모리 셀 어레이들에 존재한다. 주어진 크기 메모리 카드 및 다른 타입의 패키지들의 저장 용량을 증가시키거나, 용량을 증가시키고 크기를 감소시키기 위하여 실리콘 기판의 주어진 영역에 저장될 수 있는 디지털 데이터의 양을 증가시키는 것은 계속적으로 요구된다. 데이터의 저장 밀도를 증가시키기 위한 한 가지 방법은 메모리 셀 및/또는 저장 유니트 또는 엘리먼트 당 하나 이상의 데이터를 저장하는 것이다. 이것은 저장 엘리먼트 전하 레벨 전압 윈도우를 두 개 이상의 상태들로 분할함으로써 달성된다. 4 개의 상태들의 사용은 각각의 셀이 2 개의 데이터 비트를 저장하게 하고, 8개의 상태들은 저장 엘리먼트 당 3 개의 데이터 비트들을 저장하고, 기타 등등이 있다. 플로팅 게이트들 및 동작을 사용하는 다중 상태 플래시 EEPROM 구조들은 미국특허 5,043,940 및 5,172,338에 기술되고, 유전체 플로팅 게이트들을 사용하는 구조들은 상기된 미국특허출원 공개번호 US 2003/0109093 에 기술된다. 다중 상태 메모리 셀 어레이의 선택된 부분들은 미국특허 번호 5,930,167 및 6,456,528에 기술된 방식으로 다양한 이유들로 인해 두 개의 상태들(이진)로 동작될 수 있다.
통상적인 플래시 EEPROM 어레이의 메모리 셀들은 함께 소거되는 셀들의 개별 블록들로 분할된다. 즉, 블록은 소거 유니트, 즉 동시에 소거할 수 있는 최소 셀들의 수이다. 각각의 블록은 통상적으로 하나 또는 그 이상의 데이터 페이지들을 저장하고, 페이지는 비록 하나 이상의 페이지가 다른 서브 어레이들 또는 평면들에서 병렬로 프로그램되거나 판독될 수 있더라도, 프로그래밍 및 판독의 최소 단위이다. 각각의 페이지는 통상적으로 데이터의 하나 또는 그 이상의 섹터들을 저장하고, 섹터의 크기는 호스트 스트림에 의해 정의된다. 예시적인 섹터는 자기 디스크 드라이브들로 표준 설정된 512 바이트의 사용자 데이터, 플러스 사용자 데이터 및/또는 상기 데이터가 저장된 블록에 관한 오버헤드 정보의 몇몇 바이트들을 포함한다. 상기 메모리들은 통상적으로 각각의 블록내에서 16, 32 또는 그 이상의 페이지들로 구성되고, 각각의 페이지는 하나 또는 몇몇의 데이터 호스트 섹터들을 저장한다.
메모리 어레이에 사용자 데이터를 프로그래밍하는 동안 유사도를 증가시키고 이로부터 사용자 데이터를 판독하기 위하여, 어레이는 통상적으로 평면들이라 불리는 서브 어레이들로 분할되고, 상기 서브 어레이들은 병렬 동작을 허용하도록 자신의 데이터 레지스터들 및 다른 회로들을 포함하여, 데이터의 섹터들은 동시에 몇몇 또는 모든 평면들의 각각에 프로그램되거나 판독될 수 있다. 단일 집적 회로상 어 레이는 물리적으로 평면들로 분할될 수 있거나, 각각의 평면은 독립된 하나 또는 그 이상의 집적 회로 칩들로 형성될 수 있다. 상기 메모리 실행의 예들은 미국특허 5,798,968 및 5,890,192에 기술된다.
메모리를 추가로 효과적으로 관리하기 위하여, 블록들은 가상 블록들 또는 메타블록들을 형성하도록 함께 링크될 수 있다. 즉, 각각의 메카블록은 각각의 평면에서 하나의 블록을 포함하는 것으로 정의된다. 메타블록의 사용은 미국특허 6,763,424에 기술된다. 메타블록의 물리적 어드레스는 데이터를 프로그래밍하고 판독하기 위하여 논리적 블록 어드레스로부터의 변환에 의해 달성된다. 유사하게, 메타블록들의 모든 블록들은 함께 소거된다. 상기 큰 블록들 및/또는 메타블록들로 동작되는 메모리 시스템에서 제어기는 호스트로부터 수신된 논리 블록 어드레스들(LBA), 및 메모리 셀 어레이내 물리적 블록 번호들(PBN) 사이의 변환을 포함하는 다수의 기능들을 수행한다. 블록들내 개별 페이지들은 통상적으로 블록 어드레스내 오프셋들에 의해 식별된다. 어드레스 변환은 종종 논리 블록 번호(LBN) 및 논리 페이지의 중간 항들의 사용을 포함한다.
소거된 블록 풀에 유지된 몇몇 추가 블록들을 사용하여 큰 블록 또는 메타블록 시스템들을 동작시키는 것은 일반적이다. 블록 용량 보다 작은 하나 또는 그 이상의 데이터 페이지들이 업데이트될 때, 풀로부터 소거된 블록에 업데이트된 페이지들을 기입하고 그 다음 풀 블록을 소거하기 위하여 본래 블록으로부터 변화되지 않은 페이지들의 데이터를 카피하는 것은 일반적이다. 이런 기술의 변형들은 상기된 미국특허번호 6,763,424에 기술된다. 시간에 따른 호스트 데이터 파일들의 결과가 재기입되고 업데이트될 때, 많은 블록들은 종료되고 비교적 적은 수의 페이지들은 유효 데이터를 포함하고 나머지 페이지들은 더 이상 통용하고 있지 않은 데이터를 포함한다. 어레이의 데이터 저장 용량을 효과적으로 사용하기 위하여, 논리적으로 관련된 유효 데이터의 페이지들은 때때로 다중 블록들의 부분들에서 함께 모아지고 보다 작은 수의 블록들로 함께 결합된다. 이런 과정은 일반적으로 "가베지(garbage) 수집"이라 한다.
단일 블록 또는 메타블록내 데이터는 블록내 상당양의 데이터가 쓸모없게 될 때 압축된다. 이것은 블록의 나머지 유효 데이터를 블랭크 소거 블록에 카피하고 본래 블록을 소거하는 것을 포함한다. 그 다음 카피 블록은 본래 블록으로부터의 유효 데이터 플러스 쓸모없는 데이터에 의해 이전에 차지된 소거된 저장 용량을 포함한다. 유효 데이터는 또한 일반적으로 카피 블록안에 논리적인 순서로 배열되고, 그것에 의하여 데이터 판독이 쉬워진다.
메모리 시스템의 동작을 위한 제어 데이터는 통상적으로 하나 또는 그 이상의 예비 블록들 또는 메타블록들에 저장된다. 상기 제어 데이터는 프로그래밍 및 소거 전압들, 파일 디렉토리 정보 및 블록 할당 정보 같은 동작 파라미터들을 포함한다. 메모리 시스템을 동작시키기 위하여 제어기에 대해 주어진 시간에 필요한 많은 정보는 RAM에 저장되고 그 다음 업데이트될 때 플래시 메모리에 다시 기입된다. 제어 데이터의 빈번한 업데이트들은 예비 블록들의 빈번한 압축 및/또는 가베지 수집을 유발한다. 만약 다수의 예비 블록들이 있다면, 두 개 또는 그 이상의 예비 블록들의 가베지 수집은 동시에 트리거될 수 있다. 시간 소비 동작을 피하기 위하여, 예비 블록들의 임의의 가베지 수집은 필요하기 전 및 호스트에 의해 조정될 때의 시간에 시작된다. 상기 사전에 비어있는 데이터 재배치 기술들은 2004년 8월 13일 출원된 미국특허 출원 10/917,725에 기술된다. 가베지 수집은 완전히 채워질 때까지 기다리기 보다 거의 채워질 때 사용자 데이터 업데이트 블록에서 수행될 수 있고 따라서 호스트에 의해 제공된 데이터가 메모리에 기입될 수 있기 바로 전에 수행되어야 하는 가베지 수집 동작을 트리거링한다.
몇몇 메모리 시스템들에서, 물리적 메모리 셀들은 두 개 또는 그 이상의 존들로 그룹지어 진다. 하나의 존은 논리 블록 어드레스들의 지정된 범위가 맵핑되는 물리적 메모리 또는 메모리 시스템의 임의의 분할된 서브셋일 수 있다. 예를들어, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 존 당 16 메카바이트 데이터를 저장하는 4개의 존들로 분할될 수 있다. 논리 블록 어드레스들의 범위는 4개의 그룹들로 분할되고, 하나의 그룹은 각각 4개의 존들의 물리적 블록들에 할당된다. 논리적 블록 어드레스들은 통상적인 실행시 제한되어, 각각의 데이터는 논리적 블록 어드레스들이 맵핑되는 단일 물리적 존 외측에 결코 기입되지 않는다. 자신의 어드레싱, 프로그래밍 및 판독 회로들을 각각 가지는 평면들(서브-어레이들)로 분할된 메모리 셀 어레이에서, 각각의 존은 바람직하게 다수의 평면들로부터의 블록들, 통상적으로 상기 평면들 각각에 동일한 수의 블록들을 포함한다. 존들은 물리적 변환에 대한 논리 같은 어드레스 관리를 간략화하기 위하여 사용되어, 유사한 변환 테이블들에서, 이들 테이블들을 홀딩하기 위하여 보다 적은 RAM 메모리가 필요하고, 메모리의 현재 활성 영역을 어드레스하기 위하여 액세스 시간들이 보다 빨라지지만, 그 이유는 제한 성질이 최적 소모도 평준화 보다 작을 수 있기 때문이다.
개별 플래시 EEPROM 셀들은 하나 또는 그 이상의 데이터 비트들을 나타내는 전하 저장 엘리먼트 또는 유니트에 임의의 전하량을 저장한다. 저장 엘리먼트의 전하 레벨은 셀의 저장 상태를 판독하는 것의 기초로서 사용되는 메모리 셀의 임계 전압(일반적으로 VT라 함)을 제어한다. 임계 전압 윈도우는 일반적으로 메모리 셀의 두 개 또는 그 이상의 저장 상태들 각각에 대하여 하나인 다수의 범위들로 분할된다. 이들 범위들은 개별 셀들의 저장 상태들을 결정하게 하는 공칭 감지 레벨을 포함하는 가드밴드(guardband)들에 의해 분리된다. 이들 저장 레벨들은 이웃 또는 다른 관련된 메모리 셀들, 페이지들 또는 블록들에서 수행되는 전하 교란 프로그래밍, 판독 또는 소거 동작들의 결과로서 시프트한다. 그러므로 에러 수정 코드들(ECC)은 통상적으로 제어기에 의해 계산되고 프로그램되는 호스트 데이터와 함께 저장되고 만약 필요하면 데이터를 검증하고 몇몇 레벨의 데이터 수정을 수행하기 위한 판독 동안 사용된다. 또한, 시프팅 전하 레벨들은 교란 동작에 의해 정의된 범위들에서 완전하게 시프트하게 하여 에러 데이터가 판독되게 하기 전에 때때로 상태 범위들의 센터들에 다시 저장될 수 있다. 데이터 리프레시 또는 스커브(scrub)라 불리는 이런 과정은 미국특허 5,532,962 및 5,909,449, 및 2003년 10월 3일 출원된 미국특허 출원 10/678,345에 기술된다.
플래시 메모리 셀들의 대응성은 통상적으로 셀들이 소거되고 재프로그램되는 시간들의 수의 함수로서 시간에 따라 변화한다. 이것은 시간에 따라 축적되는 각각의 소거 및/또는 재프로그래밍 동작 동안 저장 엘리먼트 유전체 층에 트랩되는 작은 양의 전하의 결과인 것으로 생각된다. 이것은 일반적으로 메모리 셀들이 덜 신뢰하게 되게 하고, 메모리 셀들이 노화할 때 소거 및 프로그래밍에 대한 보다 높은 전압들을 요구할 수 있다. 메모리 상태들이 프로그램될 수 있는 유효 임계 전압 윈도우는 전하 유지의 결과로서 감소할 수 있다. 이것은 예를들어 미국특허 5,268,870에 기술된다. 그 결과로 메모리 셀들의 유효 수명이 제한된다; 즉, 메모리 셀 블록들은 그들이 시스템에 맵핑되기 전에 현재 소거 및 재프로그래밍 사이크들의 수에만 영향을 받는다. 플래시 메모리 블록이 바람직하게 영향을 받는 사이클들의 수는 메모리 셀들의 특정 구조, 저장 상태들에 사용되는 임계 윈도우의 양, 각각의 셀의 저장 상태들의 수가 증가할 때 일반적으로 증가하는 임계 윈도우의 범위에 좌우된다. 이들 및 다른 인자들에 따라, 수명 사이클들의 수는 10,000 만큼 낮고 100,000 만큼 높을 수 있거나 심지어 몇십만일 수 있다.
만약 개별 블록들의 메모리 셀들에 의해 경험되는 사이클들의 수의 트랙을 유지하는 것이 바람직하다고 생각되면, 카운트는 각각의 블록, 또는 각각의 블록들의 그룹에 대해 유지될 수 있고, 이것은 상기된 미국특허 5,268,870에 기술된 바와 같이, 블록이 소거되는 각각의 시간에 증가된다. 이런 카운트는 미국특허 6,426,893에 기술된 바와 같이, 각각의 블록, 또는 다른 오버헤드 정보와 함께 각각의 블록에 저장된다. 최대 수명 사이클 카운트에 도달할 때 시스템의 블록을 맵핑하는 것에 사용하는 것 외에, 카운트는 메모리 셀 블록들이 노화할 때 소거 및 프로그래밍 파라미터들을 제어하기 위하여 사용될 수 있다. 사이클들의 수의 정확한 카운트를 유지하기 보다, 미국특허 번호 6,345,001은 랜덤 또는 의사 램덤 이벤트가 발생할 때 사이클들의 수의 압축 카운트를 업데이트하는 기술을 기술한다.
사이클 카운트는 수명의 끝에 도달하기 전에 시스템의 메모리 셀 블록들의 사용을 평등화하기 위하여 사용될 수 있다. 몇몇 다른 소모도 평준화 기술들은 미국특허번호 6,230,233, 미국특허출원 공개번호 US 2004/0083335, 및 2002년 10월 28월 출원된 다음 미국특허출원: 일련번호 10/281,739(WO 2004/040578로 공개됨), 10/281,823(US 2004/0177212로 공개됨), 10/281,670(WO 2004/040585로서 공개됨) 및 10/2781,824(WO 2004/040459로서 공개됨)에 기술된다. 소모도 평준화의 주 장점은 다른 블록들이 거의 사용되지 않는 동안, 몇몇 블록들이 최대 사이클 카운트에 도달하는 것을 방지하여, 시스템에 맵핑되게 하는 것이다. 시스템의 모든 블록들에서 합리적으로 공평하게 사이클들의 수를 전개함으로써, 메모리의 전체 용량은 우수한 성능 특성들을 가지고 확장된 기간 동안 유지될 수 있다. 소모도 평준화는 2004년 11월 15일 출원된 미국특허 출원 10/990,189에 기술된 바와 같이 메모리 블록 사이클 카운트들을 유지하지 않고 수행될 수 있다.
소모도 평준화에 대한 다른 방법에서, 블록들의 물리적 존들 사이의 경계들은 한 번에 하나 또는 몇개의 블록들 만큼 논리 대 물리 블록 어드레스 변환들을 증가시킴으로써 메모리 셀 어레이에 걸쳐 점차로 이동된다. 이것은 미국특허출원 공개번호 2004/0083335에 기술되어 있다.
몇몇 메모리 셀들의 블록들이 메모리 시스템의 다른 것들 보다 다수의 소거 및 재프로그래밍 사이클에 영향을 받는 이유는 비교적 작은 논리적 블록 어드레스들에서 데이터 섹터들의 호스트 연속 재기입 때문이다. 이것은 호스트가 파일 할당 테이블들(FAT) 및 등등 같은 메모리에 저장된 하우스키핑 데이터의 특정 섹터들을 계속하여 업데이트하는 메모리 시스템의 많은 애플리케이션들에서 발생한다. 호스트의 특정 사용들은 몇몇 논리적 블록들이 사용자 데이터를 가진 다른 것들 보다 많이 재기입되게 한다. 데이터를 기입하기 위한 호스트로부터 지정된 논리 블록 어드레스로 명령을 수신한 것에 응답하여, 데이터는 소거된 블록들의 풀의 몇몇 블록들중 하나에 기입된다. 즉, 동일한 논리 블록 어드레스의 본래 데이터가 자리하는 동일한 물리적 블록에 데이터를 재기입하기 전에, 논리 블록 어드레스는 소거된 블록 풀의 블록에 재맵핑된다. 본래 및 지금 유효 데이터를 포함하는 블록은 즉각적으로 소거되거나 추후 가베지 수집 동작의 일부로서 소거되고, 그 다음 소거된 블록 풀에 배치된다. 약간의 논리 블록 어드레스들의 데이터가 다른 블록들 보다 많이 업데이트될 때, 시스템의 비교적 적은 물리적 블록들은 보다 빠른 속도로 사이클된다. 물론 상기 주어진 이유 때문에 전체적으로 공평하지 않은 논리 불록 액세스를 겪을 때 물리적 블록에서 소모도를 공평하게 하기 위한 능력을 메모리 시스템내에 제공하는 것은 바람직하다.
하우스키핑 동작들은 메모리 시스템이 동작 가능하게 접속된 호스트 시스템으로부터 수신된 명령의 실행 동안, 및 명령의 실행을 위하여 설정된 시간 경비내에서 수행된다. 메모리 시스템이 명령을 실행하기 위하여 필요한 임의의 하우스키핑 동작 외에, 수신된 명령의 실행과 직접 관련되지 않거나 상기 명령의 실행에 요구된 하우스키핑 동작은 수행될 수 있다. 상기 관련되지 않은 하우스키핑 동작들은 명령이 실행되는 각각의 시간에 수행될 필요가 있는 것이 아니고 몇몇 명령 실행들 동안 수행되는 것으로 제한될 수 있다. 예를들어, 완료하기에 시간이 너무 많이 걸리는 관련되지 않은 하우스키핑 동작의 수행은 명령 관련 하우스키핑 동작이 명령을 실행하기 위하여 필요하지 않기 때문에 필요한 시간이 이용되는 명령의 수신을 기다릴 수 있다. 호스트 명령들의 실행 부분으로서 하우스키핑 기능들을 수행함으로써, 하우스키핑 기능들이 호스트에 의해 설정된 공지된 시간 비용내에서 완료되는 한, 하우스키핑 동작들이 완료되는 것을 호스트가 허용하는지에 관하여는 불활실하다.
관련되지 않은 하우스키핑 동작들의 예들은 소모도 평준화, 스크러빙(scrubbing), 데이터 압축 및 미리 비어있는 가베지 수집을 포함하는 가베지 수집을 포함한다. 가베지 수집 또는 명령을 실행하기 위하여 필요한 임의의 다른 하우스키핑 동작 외에, 메모리 시스템은 명령의 실행에 불필요한 하우스키핑 동작을 수행할 수 있다. 예를들어, 소모도 평준화는 기입 명령을 실행하는데 불필요하지만 수행하기에 시간 비용이 들때 명령의 실행 동안 편리하게 수행된다. 시간 비용은 데이터 기입 같은 명령을 실행하기 위하여 호스트 타임아웃 또는 등등에 의해 설정되거나, 메모리 시스템이 설치된 애플리케이션에서 기입 또는 판독 동안 특정 최소 요구 데이터 전달 속도의 존재에 의해 설정된다. 하나의 특정 실시예에서, 다수의 하우스키핑 동작들을 수행하기 위한 충분한 시간이 없을 경우, 소모도 평준화는 가베지 수집이 불필요한 기입 명령들의 실행 동안 수행된다.
본 발명의 부가적인 측면들, 장점들 및 특징들은 예시적인 실시예들의 다음 설명에 포함되고, 상기 설명은 첨부 도면들과 관련하여 취해져야 한다.
도 1A 및 1B는 함께 동작하는 비휘발성 메모리 및 호스트 시스템의 블록도이다.
도 2는 도 1A의 메모리 어레이의 제 1 예시적인 구성을 도시한다.
도 3은 도 1A의 메모리에 저장된 오버헤드 데이터를 가진 예시적ㅇㄴ 호스트 데이터 섹터를 도시한다.
도 4는 도 1A의 메모리 어레이의 제 2 예시적 구성을 도시한다.
도 5는 도 1A의 메모리 어레이의 제 3 예시적 구성을 도시한다.
도 6은 도 1A의 메모리 어레이의 제 3 예시적 구성의 확장도이다.
도 7은 하나의 특정 구성에서 도 1A의 어레이의 메모리 셀들 그룹의 회로도이다.
도 8은 도 1A 메모리 어레이의 예시적 구성 및 용도를 도시한다.
도 9는 제 1 실시예에 따른 기입 명령을 실행하기 위하여 메모리 시스템의 예시적 동작을 제공하는 타이밍도이다.
도 10 및 11은 도 9의 타이밍을 사용하는 메모리 시스템 동작의 다른 측면들을 도시한다.
도 12는 도 9-11에 의해 도시된 기입 동작의 하나의 특정 실행을 도시하는 동작 흐름도이다.
도 13A, 13B 및 13C는 도 12에 의해 도시된 소모도 평준화 동작에 대한 다른 타이밍을 도시하는 곡선들이다.
도 14는 도 12의 흐름도의 변형으로서 도시된 제 2 실시예에 따른 기입 명령에 응답하는 메모리 시스템의 동작을 도시하는 흐름도이다.
도 15는 도 14의 흐름도에 도시된 동작의 예시적인 실행의 타이밍 도이다.
도 16은 도 15의 타이밍을 사용하는 메모리 시스템 동작의 하나의 측면을 도시한다.
도 17은 도 15의 대안인 메모리 시스템의 동작을 도시하는 타이밍 도이다.
도 18은 제 3 실시예에 따른 기입 명령의 실행 동안 메모리 시스템의 동작을 도시하는 흐름도이다.
도 19는 도 18의 흐름도에 따른 메모리 시스템의 예시적 동작을 도시하는 타이밍 도이다.
도 20 및 21은 메모리 시스템 동작의 다른 실시예들을 도시하는 타이밍 도이다.
도 22는 판독 명령의 실행 동안 본 발명의 다양한 측면들의 사용을 도시하는 타이밍 도이다.
메모리 아키텍쳐들 및 그 동작
도 1A를 참조하여, 플래시 메모리는 메모리 셀 및 제어기를 포함한다. 도시 된 실시예에서, 두 개의 집적 회로 장치들(칩들)(11 및 13)은 메모리 셀들의 어레이(15) 및 다양한 논리 회로들(17)을 포함한다. 논리 회로들(17)은 데이터, 명령 및 상태 회로들을 통하여 독립된 칩상의 제어기(19)와 인터페이스하고, 어레이(13)에 어드레싱, 데이터 전달 및 감지 및 다른 지원을 제공한다. 다수의 메모리 어레이 칩들은 제공된 저장 용량에 따라 하나로부터 다수일 수 있다. 제어기 및 일부 또는 전체 어레이는 현재 경제적인 대안이 아닌 단일 집적 회로 칩상에 선택적으로 결합될 수 있다. 제어기 기능을 제공하기 위하여 호스트에 의존하는 플래시 메모리 장치는 메모리 집적 회로 장치들(11 및 13) 정도를 포함한다.
통상적인 제어기(19)는 마이크로프로세서(21), 주로 펌웨어를 저장하기 위한 판독 전용 메모리(ROM)(23) 및 메모리 칩들(11 및 13)에 기입되거나 판독되는 사용자 데이터의 임시 저장을 위한 버퍼 메모리(RAM)(25)를 포함한다. 회로들(27)은 메모리 어레이 칩(들)과 인터페이스하고 회로들(29)은 접속들(31)을 통하여 호스트와 인터페이스한다. 데이터의 보전은 이 실시예에서 코드를 계산하는데 전용으로 사용되는 회로들(33)을 사용하여 ECC를 계산함으로써 결정된다. 사용자 데이터가 저장을 위하여 호스트로부터 플래시 메모리 어레이로 전달될 때, 회로는 데이터로부터 ECC를 계산하고 코드는 메모리에 저장된다. 사용자 데이터가 메모리로부터 추후 판독될 때, 상기 데이터는 동일한 알고리듬에 의해 ECC를 계산하고 코드를 데이터가 계산되고 저장된 것과 비교하는 회로(33)를 통하여 다시 통과된다. 만약 유사하면, 데이터의 보전은 확인된다. 만약 다르면, 사용된 특정 ECC 알고리듬에 따라, 알고리듬에 의해 지원된 수까지 에러의 비트들은 식별되고 수정된다.
도 1A의 메모리의 접속부들(31)은 호스트 시스템의 접속부들(31')과 짝을 이루고, 이것의 예는 도 1B에 제공된다. 도 1A의 호스트 및 메모리 사이의 데이터 전달들은 인터페이스 회로들(35)을 통하여 이루어진다. 통상적인 호스튼 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함한다. 다른 회로들 및 서브시스템들(43)은 특정 호스트 시스템에 따라 종종 고용량 자기 데이터 저장 디스크 드라이브, 키보드, 모니터 및 기타 등등을 위한 인터페이스 회로들을 포함한다. 상기 호스트들의 몇몇 예들은 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 핸드헬드 컴퓨터들, 팜톱 컴퓨터들, 퍼스널 디지털 어시스탄트들(PDA), MP3 및 다른 오디오 플레이어들, 디지털 카메라들, 비디오 카메라들, 전자 게임 머신들, 무선 및 유선 전화 장치들, 대답 머신들, 음성 레코더들, 네트워크 루터들 및 다른 것들을 포함한다.
도 1A의 메모리는 도 1B의 호스트와 제거 가능하게 접속할 수 있는 형태의 제어기 및 모든 메모리 어레이 회로 장치들을 포함하는 소형 밀폐된 메모리 카드 또는 플래시 드라이브로서 구현될 수 있다. 즉, 짝 접속부들(31 및 31')은 카드가 다른 호스트와 분리되고 이동되게 하거나, 다른 카드를 호스트에 접속함으로써 대체되게 한다. 선택적으로, 메모리 어레이 장치들(11 및 13)은 제어기 및 접속부들(31)을 포함하는 다른 카드와 전기적 및 기계적으로 접속할 수 있는 독립된 카드에 봉해진다. 다른 대안으로서, 도 1A의 메모리는 도 1B의 호스트내에 내장될 수 있고, 접속부들(31 및 31')은 영구적으로 형성된다. 이런 경우, 메모리는 일반적으로 다른 구성요소들을 따라 호스트의 봉입물내에 포함된다.
여기에서 본 발명의 기술들은 다양한 특정 구성들을 가진 시스템들로 구현되고, 그 예들은 도 2-6에 제공된다. 도 2는 메모리 어레이의 일부를 도시하고, 메모리 셀들은 블록들로 그룹지어지고 각각의 블록의 셀들은 일반적으로 동시에 단일 소거 동작의 일부로서 함께 소거 가능하다. 블록은 소거의 최소 단위이다.
도 2의 개별 메모리 셀 블록들의 크기는 가변할 수 있지만, 하나의 상업적으로 실행되는 형태는 개별 블록의 데이터의 단일 섹터를 포함한다. 상기 데이터 섹터의 콘텐트들은 도 3에 도시된다. 사용자 데이터(51)는 통상적으로 512 바이트이다. 사용자 데이터(51) 외에 사용자 데이터로부터 계산된 ECC(533)를 포함하는 오버헤드 데이터, 섹터 데이터 및/또는 섹터가 프로그램된 블록과 관련된 파라미터들(55) 및 파라미터들(55) 및 포함될 수 있는 임의의 오버헤드 데이터로부터 계산된 ECC(57)가 있다. 선택적으로, 단일 ECC는 모든 사용자 데이터(51) 및 파라미터들(55)로부터 계산될 수 있다.
파라미터들(55)은 블록에 의해 경험된 프로그램/소거 사이클들의 수에 관련된 양을 포함할 수 있고, 상기 양은 각각의 사이클 또는 몇번의 사이클들 후 업데이트된다. 이런 경험 양이 소모도 평준화 알고리듬에 사용될 때, 논리 블록 어드레스들은 모든 블록들의 사용(소모도)을 평등하게 하기 위하여 다른 물리적 블록 어드레스들에 규칙적으로 재맵핑된다. 경험 양의 다른 사용은 다른 블록들에 의해 경험된 사이클들의 수의 함수로서 프로그래밍, 판독 및/또는 소거의 전압들 및 다른 파라미터들을 변화시키는 것이다.
파라미터들(55)은 "회전"이라 불리는 메모리 셀들의 각각의 저장 상태들에 할당된 비트 값들의 표시를 포함한다. 이것은 소모도 평준화에 바람직한 효과를 가진다. 하나 또는 그 이상의 플래그들은 상태 또는 상태들을 가리키는 파라미터들(55)에 포함될 수 있다. 블록을 프로그래밍하고 및/또는 소거하기 위하여 사용될 전압 레벨들의 표시는 파라미터들(55) 내에 저장될 수 있고, 이들 전압들은 블록 및 다른 인자들에 의해 경험된 사이클들의 수가 변화할 때 업데이트된다. 파라미터들(55)의 다른 실시예들은 블록 내 임의의 결함 셀들의 표시를 포함하고, 상기 블록의 논리 어드레스는 제 1 블록이 결함인 경우 임의의 대체 블록의 어드레스 및 물리적 블록에 맵핑된다. 임의의 메모리 시스템에 사용된 파라미터들(55)의 특정 결합은 설계에 따라 가변할 것이다. 또한, 몇몇 또는 모든 오버헤드 데이터는 사용자 데이터를 포함하는 블록에서 보다 또는 오버헤드 데이터가 속하는, 상기 기능에 전용으로 사용되는 블록들에 저장될 수 있다.
도 2의 단일 데이터 섹터 블록과 달리 도 4는 다중 섹터 블록이다. 소거의 최소 단위인 예시적인 블록(59)은 4개의 페이지들(0-3)을 포함하고, 그 각각은 프로그램의 최소 단위이다. 데이터의 하나 또는 그 이상의 호스트 섹터들은 섹터의 데이터로부터 계산된 적어도 ECC를 포함하는 오버헤드 데이터와 함께 각각의 페이지에 저장되고 도 3의 데이터 섹터 형태일 수 있다.
전체 블록의 데이터를 다시 기입하는 것은 소거 블록 풀의 소거된 블록에 새로운 데이터를 프로그래밍하는 것을 포함하고, 본래 블록은 소거 풀에서 소거 및 배치된다. 모든 블록의 페이지들 보다 작은 데이터가 업데이트될 때, 업데이트된 데이터는 소거된 블록 풀로부터의 소거된 블록의 페이지에 저장되고 나머지 변화되 지 않은 페이지들의 데이터는 본래 블록으로부터 새로운 블록으로 카피된다. 그 다음 본래 블록은 소거된다. 선택적으로, 새로운 데이터는 데이터가 업데이트되는 블록과 연관된 업데이트 블록에 기입될 수 있고, 업데이트 블록은 블록에 대한 임의의 추가 업데이트들을 수신하기 위하여 가능한 길게 개방된 채로 놓인다. 업데이트 블록이 폐쇄되어야 할 때, 유효 데이터 및 본래 블록은 가베지 수집 동작시 단일 카피 블록에 카피된다. 이들 큰 블록 관리 기술들은 종종 본래 블록으로부터 데이터를 이동시키거나 소거하지 않고 다른 블록의 페이지에 업데이트된 데이터를 기입하는 것을 포함한다. 이것은 동일한 논리 어드레스를 가진 데이터의 다중 페이지들을 유발한다. 데이터의 가장 최근 페이지는 섹터 또는 페이지 오버헤드 데이터에서 필드로서 레코드된 프로그래밍의 시간 같은 몇몇 편리한 기술에 의해 식별된다.
다른 다중 섹터 블록 장치는 도 5에 도시된다. 여기서, 총 메모리 셀 어레이는 두 개 또는 그 이상의 평면들로 물리적으로 분할되고, 4개의 평면들(0-3)은 도시된다. 각각의 평면은 다른 평면들과 매우 무관하게 동작할 수 있도록 하기 위하여 그 자신의 데이터 레지스터들, 감지 증폭기들, 어드레싱 디코더들 및 등등을 가지는 메모리 셀들의 서브 어레이이다. 모든 평면들은 단일 집적 회로 장치 또는 다중 장치들상에 제공될 수 있다. 도 5의 예시적인 시스템의 각각의 블록은 16 페이지들(P0-P15)을 포함하고, 각각의 페이지는 하나, 둘 또는 그 이상의 호스트 데이터 섹터들 및 몇몇 오버헤드 데이터의 용량을 가진다. 평면들은 단일 집적 회로 칩, 또는 다중 칩들상에 형성될 수 있다. 만약 다중 칩들이면, 두 개의 평면들이 하나의 칩상에 형성될 수 있고 다른 두 개의 다른 칩상에 형성될 수 있다. 선택적으로, 하나의 칩상의 메모리 셀들은 메모리 평면들 중 하나를 제공할 수 있고, 4개의 칩들은 함께 사용된다.
다른 메모리 셀 장치는 도 6에 도시된다. 각각의 평면은 다수의 셀들 블록들을 포함한다. 동작의 유사도를 증가시키기 위하여, 다른 평면들내의 블록들은 메타블록들을 형성하기 위하여 논리적으로 링크된다. 하나의 상기 메타블록은 평면(0)의 블록(3), 평면(1)의 블록(1), 평면(2)의 블록(1) 및 평면(3)의 블록(2)로 형성된다. 각각의 메타블록은 논리적으로 어드레스 가능하고 메모리 제어기는 개별 메타블록들을 형성하는 블록들을 할당하고 트랙을 유지한다. 호스트 시스템은 바람직하게 개별 메타블록들의 용량과 동일한 데이터 단위들로 메모리 시스템과 인터페이스한다. 도 6의 논리 데이터 블록(61)은 예를들어 제어기에 의해 메타블록을 형성하는 블록의 물리적 블록 수들(PBN)에 맵핑되는 논리적 블록 어드레스들(LBA)에 의해 식별된다. 메타블록의 모든 블록들은 함께 소거되고, 각각의 블록으로부터의 페이지들은 바람직하게 동시에 프로그램되고 판독된다.
도 2-6과 관련하여 상기된 메모리들을 실행하기 위하여 사용될 수 있는 많은 다른 메모리 어레이 아키텍쳐들, 구성들 및 특정 셀 구조들이 있다. NAND 타입의 메모리 어레이의 하나의 블록은 도 7에 도시된다. 직렬 접속된 메모리 셀들의 다수의 열방향 스트링들은 전압(VSS)의 공통 소스(65) 및 비트 라인들(BL0-BLN)중 하나 사이에 접속되고, 차례로 어드레스 디코더들, 드라이버들, 판독 감지 증폭기들 및 등등을 포함하는 회로들(67)과 접속된다. 특히, 하나의 상기 스트링은 스트링 들의 반대측 단부들에서 선택 트랜지스터들(77 및 79) 사이에 직렬로 접속된 전하 저장 트랜지스터들(70,71..72 및 74)을 포함한다. 이 예에서, 각각의 스트링은 16 저장 트랜지스터들을 포함하지만 다른 수들은 가능하다. 워드 라인들(WL0-WL15)은 각각의 스트링의 하나의 저장 트랜지스터를 가로질러 연장하고 워드 라인들의 어드레스 디코더들 및 전압 소스 드라이버들을 포함하는 회로들(81)에 접속된자. 라인들(83 및 84) 상 전압들은 선택 트랜지스터들을 통하여 전압 소스(65) 및/또는 비트 라인들(BL0-BLN)중 어느 하나에 대해 함께 블록내 모든 스트링들의 접속을 제어한다. 데이터 및 어드레스들은 메모리 제어기로부터 나온다.
블록의 전하 저장 트랜지스터들(메모리 셀들)의 각각의 행은 하나 또는 그 이상의 페이지들을 포함하고, 각각의 페이지의 데이터는 함께 프로그램되고 판독된다. 적당한 전압은 워드 라인을 따라 메모리 셀들의 데이터를 프로그래밍 또는 판독하기 위하여 워드 라인(WL)에 인가된다. 적당한 전압들은 관심있는 셀들과 접속된 비트 라인들(BL)에 인가된다. 도 7의 회로는 행을 따라 모든 셀들이 함께 프로그램되고 판독되지만 단위로서 행을 따라 모든 다른 셀을 프로그래밍 및 판독하는 것이 일반적인 것을 도시한다. 이 경우, 두 세트의 선택 트랜지스터들은 한번에 모든 다른 셀과 동작 가능하게 접속하기 위하여 사용되고(도시되지 않음), 모든 다른 셀은 하나의 페이지를 형성한다. 나머지 워드 라인들에 인가된 전압들은 각각의 저장 트랜지스터들이 도전되게 하도록 선택된다. 하나의 행에서 메모리 셀들을 프로그래밍하거나 판독하는 경우, 선택되지 않은 행들에서 이전에 저장된 전하 레벨들은 비트 라인들에 인가된 전압들이 그들에 접속된 스트링들의 모든 셀들에 영 향을 미칠 수 있기 때문에 교란될 수 있다.
상기된 메모리 시스템 및 그 동작의 하나의 특정 아키텍쳐는 도 8에 의해 도시된다. 설명의 용이함을 위하여 매우 단순화된 메모리 셀 어레이(213)는 아키텍쳐에 따라 블록들 또는 메타블록들(PBN)(P1-Pm)을 포함한다. 호스트로부터 메모리 시스템에 의해 수신된 데이터의 논리 어드레스들은 개별 논리 블록 어드레스(LBA)를 가진 논리 그룹들 또는 블록들(L1-Ln)로 함께 그룹지어진다. 즉, 메모리 시스템의 전체 인접하는 논리 어드레스 공간은 어드레스들의 그룹들로 분할된다. 논리 그룹들(L1-Ln)의 각각에 의해 어드레스된 데이터의 양은 물리적 블록들 또는 메타블록들 각각의 저장 용량과 동일하다. 메모리 시스템 제어기는 물리적 블록들(P1-Pm)의 다른 하나에 그룹들(L1-Ln)의 각각의 논리 어드레스들을 맵핑하는 기능(215)을 포함한다.
메모리의 보다 물리적인 블록들은 메모리 시스템 어드레스 공간의 논리적 그룹들내에 있기 보다 포함된다. 도 8의 실시예에서, 4 개의 상기 추가 물리적 블록들은 포함된다. 본 발명의 애플리케이션들에 제공된 단순화된 설명을 위하여, 두 개의 추가 블록들은 데이터의 기입 동안 데이터 업데이트 블록들로서 사용되고 다른 두 개의 추가 블록들은 소거된 블록 풀을 형성한다. 다른 추가 블록들은 통상적으로 다양한 목적들을 위하여 포함되고, 하나는 블록이 결함이 있는 경우 리던던시로서 존재한다. 하나 또는 그 이상의 다른 블록들은 메모리를 동작시키기 위하여 메모리 시스템 제어기에 의해 사용된 제어 데이터를 저장하기 위하여 사용된다. 특정 블록들은 임의의 특정 목적을 위하여 설계되지 않는다. 오히려, 맵핑(215)은 개별 논리 그룹들의 데이터가 맵핑되고, 임의의 블록들(P1-Pm) 중에 있는 물리적 블록들을 규칙적으로 변화시킨다. 업데이트 및 소거 풀 블록들로서 사용하는 물리적 블록들은 메모리 시스템의 동작 동안 물리적 블록들(P1-Pm)을 통하여 이동한다. 업데이트 및 소거 풀 블록들로서 현재 설계된 물리적 블록들의 식별은 제어기에 의해 관리된다.
도 8에 의해 도시된 메모리 시스템에 새로운 데이터를 기입하는 것은 지금 기술될 것이다. 논리 그룹(L4)의 데이터가 물리적 블록(P(m-2))에 맵핑되는 것이 가정된다. 블록(P2)은 업데이트 블록으로서 설계되고 완전히 소거되고 자유롭게 사용된다. 이 경우, 호스트가 그룹(L4) 내 논리적 어드레스 또는 다중 인접 논리 어드레스들에 데이터를 기입하는 명령을 내릴 때, 데이터는 업데이트 블록(P2)에 기입된다. 새로운 데이터로서 동일한 논리 어드레스들을 가지는 블록(P(m-2))에 저장된 데이터는 그 후 업데이트 블록(L4)에 저장된 새로운 데이터에 의해 폐기되고 대체된다.
추후, 이들 데이터는 P(m-2) 및 P2 블록들로부터 단일 물리적 블록으로 결합(가베지 수집됨)될 수 있다. 이것은 업데이트 블록(P2)으로부터 블록(P5) 같은 소거된 블록 풀의 다른 블록에 새로운 데이터를 기입하고 블록(P(m-2))으로부터 나머지 유효 데이터를 기입함으로써 달성된다. 블록들(P(m-2) 및 P2)은 그후 업데이트 또는 소거 풀 블록들로서 사용하기 위하여 소거된다. 선택적으로, 본래 블록(P(m-2))의 나머지 유효 데이터는 만약 가능하면 새로운 데이터와 함께 블록(P2)에 기입될 수 있고, 블록(P(m-2))은 소거된다.
주어진 데이터 저장 용량에 필요한 메모리 어레이의 크기를 최소화하기 위하여, 추가 블록들의 수는 최소로 유지된다. 업데이트 블록들의 제한된 수, 이 실시예에서 2는 일반적으로 메모리 시스템 제어기에 의해 한 번에 존재하도록 허용된다. 게다가, 본래 물리적 블록으로부터 나머지 유효 데이터와 업데이트 블록으로부터 데이터를 결합하는 가베지 수집은 업데이트 블록이 연관된 물리적 블록에 다른 새로운 데이터가 호스트에 의해 추후 기입될 수 있기 때문에 가능한 한 길게 연기된다. 그 다음 동일한 업데이트 블록은 부가적인 데이터를 수신한다. 가베지 수집은 시간이 걸리고 만약 다른 동작이 결과적으로 지연되면 메모리 시스템의 성능에 악영향을 미칠 수 있기 때문에, 될 수 있는 한 매번 수행되지 않는다. 특히 개별 블록들의 데이터 저장 용량이 매우 클 때, 두 개의 블록들로부터 데이터를 다른 블록에 카피하는 것은 상당한 시간이 걸릴 수 있고, 이것이 현황이다. 그러므로, 이것은 데이터가 기입되는 것을 호스트가 명령할 때 종종 발생하고, 이를 수신하기 위하여 이용할 수 있는 빈 업데이트 블록이 없다. 그 다음 종래 업데이트 블록은 추후 호스트로부터 새로운 데이터를 수신하기 위하여, 기입 명령에 응답하여 가베지 수집된다. 가베지 수집이 얼마나 지연될 수 있는 가의 한계는 도달되었다.
제 1 소모도 평준화 실시예
도 9는 두 개의 업데이트 블록들중 어느 것도 자유롭고 소거되지 않으며, 업데이트 블록들의 어느 하나와 연관되지 않은 블록 데이터가 업데이트될 때 메모리 시스템의 동작을 도시한다. 업데이트 블록들 중 하나는 호스트로부터 새로운 데이터를 수신하기 위하여 이용 가능한 블랭크 소거 업데이트 블록을 형성하기 위 하여 가베지 수집되어야 한다. 도 9의 실시예에서, 데이터의 두 개의 섹터들 또는 다른 유니트들(1 및 2)은 기입된다. 호스트 기입 명령은 데이터 전달 길이, 이 경우 두 개의 유니트들을 포함하고, 그 다음 데이터를 포함한다. 도 9의 타이밍 도의 제 2 라인에 도시된 바와 같이, 이들 두 개의 데이터 유니트들은 이들 사이에 메모리 시스템 비지(busy) 신호(도 9의 제 3 라인)가 유지되지 않기 때문에 명령이 수신된 후(도 9의 제 1 라인) 바로 메모리 시스템 제어기 버퍼에 즉각적으로 연속적으로 전달된다. 주장될 때, 메모리 시스템 비지 신호로 인해 호스트는 메모리 시스템과 통신이 중단된다.
도시된 바와 같이 타임들(t4 및 t5) 사이의 메모리 시스템에 의한 비지 신호의 주장은 기입 명령을 실행하기 위하여 필요하고, 그 다음 수신된 데이터를 기입할 때 메모리 시스템이 가베지 수집을 수행하게 한다. 호스트는 비지 신호가 활성화될 때 다른 명령 또는 임의의 다른 데이터를 메모리 시스템에 전송하지 않는다. 도 9의 최종 라인에 도시된 바와 같이, 이것은 새로운 업데이트 블록을 생성하기 위하여 필요할 때 가베지 수집을 수행하기 위한 시간을 생성한다. 제어기는 가베지 수집을 시작하기 위하여 데이터 유니트들(1 및 2)의 전달에 의해 취해진 시간을 사용하지만 이것은 완료하기에 충분한 시간이 아니다. 메모리 시스템은 가베지 수집 및 업데이트 블록에 데이터 기입이 완료될 때까지 호스트를 연기한다. 데이터 기입의 완료 후 타임(t5)에서 비지 신호를 종료하는 것은 호스트가 메모리 시스템과 추가로 통신하게 한다.
메모리 시스템이 주장하는 비지 신호의 길이는 제한되는데, 그 이유는 대부 분의 호스트들은 데이터 유니트가 전달된 후 메모리 시스템에 대해 제한된 고정 시간 양이 기입 명령을 실행하게 하기 때문이다. 만약 비지 신호가 그 보다 오랜 활성화되어 유지되면, 몇몇 호스트들은 상기 데이터를 가진 명령을 반복하고 다른 것들은 전체적으로 처리를 중단한다. 메모리 시스템은 메모리가 기능하도록 설계된 호스트들의 이런 타임아웃 기간을 초과하지 않는 방식으로 동작된다. 하나의 공통 호스트 타임아웃 기간은 250 밀리초이다. 임의의 이벤트에서, 호스트 및 호스트와 접속된 메모리 시스템 사이에서 명령들 및 데이터의 전달은 비지 신호의 메모리 시스템 주장에 의해 지연될 수 있고, 따라서 지연이 메모리 시스템의 전체적인 우수한 성능에 중요한 상황들에 대해 사용을 제한하는 것은 바람직하다.
호스트 타임아웃 기간 외에, 메모리 시스템의 동작은 많은 애플리케이션들에서 유지되어야 하는 최소 데이터 흐름에 의해 제한된다. 이것은 메모리 시스템에 의해 주장된 개별 비지 신호들의 기간이 호스트 타임아웃에 의해 허용된 최대치 보다 작은 것을 요구할 수 있다.
유사하게, 소모도 평준화 동작들은 바람직하게 과도하게 다른 동작들 및 전체 메모리 시스템 성능에 영향을 미치지 않고 바람직하게 스케쥴링된다. 상기된 특허들 및 출원들에 기술된 바와 같이, 소모도 평준화는 소모도를 평등하게 하기 위하여 물리적 메모리 블록들에 논리적 그룹들의 어드레스들 맵핑을 변화시키는 것을 포함한다(소거 사이클들의 수). 항상 재 기입되는 논리적 어드레스들의 범위는 예를들어 평균 보다 높은 속도로 사이클되는 하나의 물리적 블록으로부터 보다 낮은 사이클 히스토리를 가진 다른 물리적 블록으로 재어드레스된다. 많은 소모도 평준화 알고리듬들이 있고, 그중 몇몇은 논리적 그룹 재기입 또는 개별 물리적 블록 사용의 사이클 카운트들을 모니터하고 그중 다른 것은 상기 카운트들을 사용하는 것이 아니라 메모리 블록들에서 소모도를 분배한다.
통상적으로, 소모도 평준화 동작은 하나의 블록에서 다른 블록으로 데이터의 전달(교환)을 포함하고, 이것은 동작의 가장 큰 시간 소모도 부분이다. 소모도 평준화 교환들은 메모리 블록들의 사용시 불균형 형성을 수정하기 위하여 메모리 시스템 제어기에 의해 때때로 시작된다. 소모도 평준화의 목적은 하나 또는 몇몇 블록들이 메모리의 유용한 수명을 초과하는 다수번 사이클링되는 것을 방지함으로써 메모리 수명을 연장시키는 것이다. 일부, 및 때때로 단지 하나의 메모리 블록들의 사용 손실은 메모리 시스템이 실행될 수 없게 할 수 있다.
소모도 평준화는 일반적으로 배경으로 수행된다. 즉, 블록들 및 임의의 데이터 전달(들)의 재맵핑은 호스트가 정지할 때 발생한다. 이것은 메모리 시스템의 성능에 악영향을 주지않는 장점을 가지지만 메모리 시스템이 소모도 평준화하고 소모도 평준화 교환 동안 메모리 시스템으로부터의 전력이 분리되는 동안 호스트가 명령이 전송되는 것을 방지하지 못하는 단점을 가진다. 그러므로, 여기에 기술된 실시예들에서, 소모도 평준화는 데이터 기입들의 일부로서 때때로 포그라운드(foreground)로 수행된다.
도 9를 다시 참조하여, 가베지 수집 대신, 소모도 평준화는 가베지 수집이 기입 명령을 실행하기 위하여 필요하지 않을 때 대신 수행될 수 있다. 가베지 수집 및 소모도 평준화 모두가 블록의 데이터를 전달하는 것을 포함하기 때문에, 두 개의 동작들은 유사한 시간양을 가질 수 있다. 물론, 상기된 바와 같이, 현재 기입 명령을 실행하기 위하여 업데이트 블록을 얻기 위해 필요할 때 가베지 수집은 수행될 것이다. 그러나 만약 새로운 데이터를 위하여 사용 가능한 업데이트 블록이 있고, 가베지 수집이 필요하지 않을 때, 시간은 소모도 평준화를 수행하는 대신 사용될 수 있다. 하나의 특정 기술에서, 소모도 평준화 알고리듬은 소모도 평준화 교환이 바람직한 각각의 시간을 가리키고, 교환은 가베지 수집이 필요하지 않은 다음 기입 동작 동안 발생한다.
도 10은 도 9의 타이밍을 가진 도 9의 메모리 시스템에서 가베지 수집 및 기입 데이터의 예를 도시한다. 두 개의 업데이트 블록들(1 및 2)은 현재 데이터 유니트들을 기입하기 위하여 이용 가능하지 않을 때 존재하고, 상기 블록들 중 하나는 폐쇄되고 소거된 블록 풀로부터의 다른 블록은 데이터를 수신하기 위하여 개방된다. 이것은 이 실시예에서 단지 두 개의 업데이트 블록들이 허용되기 때문이다. 만약 업데이트 블록(1)이 공통 논니 그룹내 데이터 업데이트들 만을 수신함으로써 블록(A)에 링크되면, 업데이트 블록(1)은 몇몇 다른 논리 그룹의 데이터를 저장하기 위하여 사용될 수 없다. 업데이트 블록(2)은 동일한 제한을 가질 수 있다. 그러므로, 업데이트 블록(1)은 도 10에 도시된 가베지 수집 동작에 의해 폐쇄되고, 블록(A) 및 업데이트 블록(1) 각각에서 유효 데이터는 소거된 블록(B)에 카피된다. 그 다음 블록(A) 및 업데이트 블록(1)은 소거되어, 두 개 이상 소거 풀 블록들을 제공한다. 이들 중 하나는 업데이트 블록(3)으로서 주의된 새로운 제 2 업데이트 블록으로서 개방될 수 있고, 여기서 메모리 제어기 버퍼로부터의 데이터는 저장된 다.
그러나, 도 8의 메모리 시스템에서 기입 명령 실행은 항상 가베지 수집이 수행되는 것을 요구하지 않는다. 데이터가 예를들어 개방 업데이트 블록에 기입될 수 있을 때, 상기 기입 명령 실행은 필요하지 않다. 상기 경우, 소모도 평준화 동작은 소모도 평준화 동작 동안 사용하기 위하여 업데이트 블록이 존재할 때, 도 9에 도시된 바와 같이 가베지 수집 대신 수행될 수 있다. 도 11은 이 경우를 추가로 도시한다. 소모도 평준화는 이 실시예에서 소스 블록(A)으로부터 업데이트 블록(1)으로 데이터를 카피하는 것을 포함한다. 제어기 버퍼로부터의 데이터는 업데이트 블록(2)에 기입된다. 소스 블록(A)은 소거되고 소거 풀 블록으로 이용된다. 도 11의 예는 소스 블록(A)에 저장된 논리 그룹이 그것에 할당된 업데이트 블록(1)을 가지는 것을 가정한다. 사용시 일반적으로 몇몇 시스템 업데이트 블록들이 있기 때문에, 이것은 색다른 경우이다. 보다 통상적으로, 새로운 업데이트는 소스 블록(A)의 데이터가 소모도 평준화 교환될 수 있기 전에 개방될 필요가 있다. 그 다음 새로운 업데이트 블록을 개방하는 것은 일반적으로 가베지 수집을 포함하는 다른 업데이트 블록을 폐쇄하는 것을 포함한다.
도 9의 타이밍 도에 따른 동작의 특정 실시예는 도 12의 동작 흐름에 의해 도시되고, 여기서 만약 가베지 수집이 기입 동작을 허용하도록 수행될 필요가 없으면, 소모도 평준화는 대신 수행된다. 호스트로부터의 기입 명령을 수신한 것에 응답하여(단계 255), 기입될 데이터는 호스트로부터 수신되고(단계 227), 메모리 시스템 제어기 버퍼 메모리에 저장된다. 단계(229)에서, 가베지 수집이 현재 기입 동작에 사용하기 위한 업데이트 블록을 자유롭게 할 필요가 있는지 여부가 결정되고, 만약 그렇다면 가베지 수집은 수행된다. 단계들(227 및 229)의 순서는 거꾸로될 수 있거나, 도 9에 도시된 바와 같이 시간의 일부 동안 동시에 수행될 수 있다. 단계(229)는 만약 가베지 수집이 수행되는 가베지 수집 카운터를 증가시키는 것을 포함한다. 카운터는 미리 리셋되고 이런 카운트는 가베지 수집이 발생했는지 아닌지 여부를 결정하기 위하여 추후 참조된다.
다음 단계(231)에서, 소모도 평준화 교환이 계류중인지 여부가 질문된다. 즉, 소모도 평준화를 시작하기 위한 필요한 조건들이 있는지 여부가 결정된다. 상기된 특허들 및 특허 출원들이 제공될 때, 동작을 트리거링하는 다른 이벤트들을 가진 다수의 다른 소모도 평준화 알고리듬이 있다. 여기에 기술된 소모도 평준화 실시예에서, 소모도 평준화는 메모리 블록들 또는 메타블록들의 매 N 소거 사이클들에서 시작된다. 수(N)는 예를들어 50 정도일 수 있다. 비록 이것이 이후에 기술되는 바와 같이 시작 포인트이지만, 결정은 소모도 평준화가 상당한 시간 기간 동안 연기될 때 다소 복잡하게 된다. 상기 연기는 다수의 연속적인 기입 동작들이 각각 가베지 수집을 요구할 때 발생할 수 있다. 그 다음 소모도 평준화에 사용될 수 있는 메모리 시스템 비지 기간들은 없다. 이것은 예를들어 다른 논리 그룹들에서 데이터의 연속적 단일 유니트의 다수의 기입들이 있을 때 발생한다.
만약 소모도 평준화가 계류중이면, 다음 단계(233)는 가베지 수집 카운터의 카운트를 검사한다. 만약 카운트가 영이 아니면, 이것은 가베지 수집 동작이 단계(229)에서 수행된 것을 가리키고, 그러므로 소모도 레벨을 수행하기 충분한 시간 이 없다는 것을 가리킨다. 따라서 소모도 평준화는 스킵된다. 만약 카운트가 영이면, 이것은 가베지 수집이 발생되지 않아서, 소모도 평준화를 수행하기에 충분한 시간이 있다는 것을 가리킨다. 그러나 우선 단계(235)에 의해, 소모도 평준화에 사용하기 위한 빈 업데이트 블록이 있는지 여부가 결정된다. 만약 없다면, 소모도 평준화는 업데이트 블록을 얻기 위한 필요한 가베지 수집 및 소모도 평준화 모두를 수행하기에 충분한 시간이 없기 때문에 스킵된다. 그러나, 만약 이용할 수 있는 업데이트 블록이 있다면, 소모도 평준화는 상기되거나, 이후에 기술되는 소모도 평준화 특허들 및 특허 출원들 중 하나에 기술된 알고리듬에 따라 단계(237)에서 수행된다. 일반적으로, 소모도 평준화 동작은 소모도 평준화를 위하여 이용 가능한 업데이트 블록을 개방하고, 소스 블록으로부터 개방된 업데이트 블록으로 모든 데이터를 카피하고, 업데이트 블록을 폐쇄하고 어드레스 변환 테이블을 소스 블록으로부터 업데이트 블록(목적 블록)으로 데이터의 논리 그룹을 재맵핑하기 위하여 업데이트하는 것을 포함한다.
그 후, 단계(239)에서, 메모리 제어기 버퍼에 수신된 데이터는 플래시 메모리의 블록 또는 메타블록에 기입된다. 가베지 수집 카운터는 도 12 흐름 과정에 의해 다음 데이터 기입동안 사용하기 위하여 영으로 다시 설정된다(단계 241).
소모도 평준화 교환을 시작하는 예시적인 방법은 기술될 것이다. 이것은 도 12의 단계(231)의 일부이다. 기본적으로, 소모도 평준화는 시스템의 블록이 소거되는 매 N 번들에서 시작된다. 이것을 모니터하기 위하여, 블록들의 소거 수의 카운트가 시스템 레벨에 유지된다. 그러나 이런 기술에서, 블록들에 대한 소거 사이 클들의 수의 카운트들을 개별적으로 유지하는 것은 불필요하다.
도 12의 흐름도에 반영된 바와 같이, 계류중인 소모도 평준화 교환은 수행하기에 불충분한 시간이 있을 때 주어진 데이터 기입 사이클 동안 실행될 수 없다. 도 9 및 12의 예에서, 계류중인 소모도 평준화 교환은 만약 가베지 수집이 기입 명령을 실행하기 위하여 수행될 필요가 있으면 스킵될 것이다. 만약 메모리 시스템이 각각의 단일 섹터에 일련의 데이터가 기입되면, 섹터들이 인접하지 않은 논리 어드레스들을 가지는 경우, 가베지 수집은 각각의 기입 동안 수행된다. 이것 및 다른 상황들에서, 계류중인 소모도 평준화 동작은 연기된다. 이런 타입의 지연이 발생하는지 여부는 메모리 시스템이 사용되는 방식에 따른다. 그러나 만약 자주 발생하면, 소모도 평준화는 덜 효과적이 된다. 소모도 평준화가 가장 바람직하도록 시스템 블록 소거들중 규칙적인 간격들에서 이루어지는 것은 바람직하다.
그러므로, 소모도 평준화가 임의의 중요한 시간 동안 연기되었을 때 공칭 N 블록 소거 간격에서 소모도 평준화 교환들 사이의 간격을 가변시키는 것은 바람직하다. 미싱된(missed) 소모도 평준화 동작들의 수는 유지되고, 그 후 N 블록들 간격보다 짧은 간격들에서 개별적으로 계류하게 할 수 있다. 도 13A, 13B 및 13C의 곡선들은 소모도 평준화가 N 소거 사이클들을 상당히 넘어 연기된 후 "회복"을 위한 3 개의 다른 방식들을 도시한다. 이들 곡선들의 수평 축들은 매 N 카운트들인 수직 마크를 가진 총 블록 시스템 소거 카운트를 도시한다. 수직 축들은 최종 소모도 평준화 동작 이후 시스템 소거 사이클들(WL 카운트)의 수를 가리킨다. 도 13A, 13B 및 13C은 이들 실시예들에서 소모도 평준화 교환이 발생할 수 있을 때 기 간들을 나타내기 위하여 "교환이 행해질 수 있음"을 각각 가리킨다. 공칭적으로, WL 카운트들의 수가 N(곡선들을 가로지르는 점선)으로 증가할 때, 소모도 평준화는 발생하고 WL 카운트는 영으로 리턴한다. 이것은 예를들어 도 13A의 271에 도시된다.
도 13A의 소거 카운트(273)에서, WL 카운트가 N에 도달될 대, 스케쥴된 소모도 평준화는 발생하지 않는다. 소모도 평준화는, 조건들이 소모도 평준화 발생을 허용할 때 소거 카운트(275) 때까지 약 1/2 N 정도의 보다 많은 소거 사이클 동안 발생하지 않는다. 그 다음 소모도 평준화는 N(약 1/2 N) 미만의 간격 후 회복을 위하여 다시 소거 카운트(277)에서 수행된다. 그러나 소모도 평준화가 발생하지 않을 때 매우 긴 기간이 존재한다. 오랜 기간으로 인해, 모든(이 경우 4) 미싱된 소모도 평준화 교환들은 할 수 있는 한 곧 발생하고, 소거 카운트(279)에서 시작하고 그 후 허용되면 각각의 기입 명령 동안 계속된다. 이런 기술은 간단한 장점을 가지지만 만약 종래에 다수의 미싱된 교환 평준화 교환들이 경험되면 메모리 시스템에 악영향을 미칠 수 있다.
도 13B는 소모도 평준화가 매우 오랜 시간 동안 발생하지 않는 경우를 처리하기 위한 변형된 방식을 도시한다. 이 실시예에서, 제 1 소모도 평준화 교환은 오랜 기간 후 281에서 발생하고, 연속적인 동작들은 1/2 N 소거 카운트들에서 발생한다. 미싱된 소모도 평준화 교환들은 도 13A에서 처럼 소모도 평준화가 다시 행해질 수 있으면 가능한 빨리 수행하는 대신 이 실시예에서 이루어지고, 도 13B의 기술은 적어도 1/2N 만큼 무언가에 의해 구성 소모도 평준화 교환들을 분리한다. 이 기술은 소모도 평준화 교환들의 매우 공평한 분배를 제공한다.
바람직한 기술은 도 13C에 도시된다. 모든 미싱된 소모도 평준화 교환들을 구성하는 대신, 이들 사이의 간격들은 다소 감소되고 이들 중 다른 것들은 전혀 구성되지 않는다. 283에서 소모도 평준화는 도 13A 및 13B의 예들과 동일하게 최종 소모도 평준화를 실행되도록 지연을 구성하기 위하여 최종 하나로부터 1/2 N 소거 카운트들을 발생시킨다. 그러나 그 후 소모도 평준화 교환들이 없는 동일한 오랜 기간이 있다면, 이 기간 후 285에서 제 2 소모도 평준화 교환이 287에서 제 1 소모도 평준화 후 1/2 N 소거 사이클들을 발생시키지만 추후 교환들은 정상적인 N 소거 사이클 간격들에서 발생한다. 미싱된 소모도 평준화 교환들중 몇몇은 간단히 구성되지 않는다. 이런 기술에 의해 소모도 평준화 교환을 구성하기 위한 특정 기준은 WL 카운트가 N 이상으로 형성된 후 소모도 평준화가 발생할 때, 제 2 교환이 추후 1/2 N 소거 카운트들을 발생시키는 것이다. 그러나, 그 후 아무리 많은 교환들이 미싱되더라도, 소모도 평준화 교환들은 정상 N 소거 카운트 간격에서 발생한다.
도 13A, 13B 및 13C는 소모도 평준화를 수행하는 것이 아니라 단지 이렇게 수행하는 방식들만인 확장된 기간들을 처리하는 3개의 다른 방식들을 제공한다.
제 2 소모도 평준화 실시예
도 14-16은 업데이트 블록의 사전 존재를 요구하지 않는 소모도 평준화 동작을 수행하기 위한 다른 기술을 도시한다. 상기된 바와 같이, 도 9의 방법은 만약 자유롭거나 빈 업데이트 블록이 존재하지 않으면 단계(235)에 의해 계류중인 소모도 평준화 동작의 실행을 스킵한다. 도 14의 기술에서, 다른 한편 업데이트 블록 이 이용되지 못하는 것의 대응하는 단계(235')에 의한 결정은 계류중인 소모도 평준화 동작이 스킵되게 하지 않는다. 오히려, 계류중인 소모도 평준화 동작은 추후 자동으로 완료되는 방식으로 현재 기입 명령의 실행 동안 시작된다. 소모도 평준화 동작을 시작하기 위하여 현재 기입 명령 동안 매우 작은 시간이 얻어져서, 비지 기간 동안 수행될 가베지 수집 또는 다른 시간 소모도 하우스키핑 기능이 수행되게 한다. 또한, 정상 가베지 수집 동작에 의해 대신 완료되기 때문에, 시작된 소모도 평준화 동작이 추후 기입 명령의 실행 동안 완료되는 것을 보장하기 위하여 어느 것도 보장될 필요가 없다.
만약 이용할 수 있는 업데이트 블록(도 14의 단계 235'에서 "예")이 있다면, 소모도 평준화(237')는 도 9의 소모도 평준화(239)에 대응하는 현재 기입 명령의 실행 동안 발생한다. 그러나 만약 메모리 시스템 업데이트 블록들의 제한된 수중 어느 것도 이용할 수 없으면, 도 14의 단계들(301-304)은 추후 시간에 완료를 위하여 소모도 평준화 동작을 설정한다. 한 번에 개방할 수 있는 업데이트 블록들의 수를 제한하는 메모리 시스템에서 소모도 평준화 교환에 사용하기 위한 업데이트 블록을 개방하기 위하여, 종래 업데이트 블록은 우선 폐쇄되어야 한다. 이것은 단계(301)에서 수행되고, 시스템 업데이트 블록은 폐쇄되고, 예를들어 시스템 업데이트 블록들의 가장 최근에 사용된 폐쇄는 바람직하다. 다음 단계(302)에서, 소거된 블록은 이런 소모도 평준화 동작에 대한 업데이트 블록으로서 개방된다. 다음 단계(303)에서, 데이터의 제 1 페이지 또는 메타페이지(메모리 아키텍쳐에 따라)는 소스 블록으로부터 막 개방된 업데이트 블록에 카피된다. 이런 하나의 페이지 또 는 메타페이지는 만약 시간이 이용 가능하다면 카피될 수 있는 것 보다 현재 기입 명령의 실행 동안 카피될 필요가 있다. 소스 블록으로부터 새로운 업데이트 블록으로 모든 데이터를 카피하기 위하여 필요한 시간 양은 매우 큰 블록들의 경우 현재 기입 명령의 실행 동안 이용할 수 있는 것보다 많을 수 있다. 그러므로, 바람직하게 소스 블록으로부터 최소의 데이터 량(바람직하게 기껏 소스 블록 데이터의 1/4 정도의 양)을 카피함으로써 현재 기입 명령의 실행 후 몇몇 완료 시간 동안 소모도 평준화 교환을 설정하는 것은 충분하다.
선택적인 최적화로서, 다음 단계(304)는 데이터의 하나의 페이지 또는 메타 페이지를 가진 새로운 업데이트 블록이 시스템 업데이트 블록들에 적어도 최근에 사용된(LRU) 것으로서 식별되게 할 수 있다. 이런 업데이트 블록은 특히 막 개방된 후 적어도 최근에 사용되지 않은 것이다. 그러나 LRU 업데이트 블록으로서 이를 설계함으로써, 다른 업데이트 블록이 개방될 필요가 있는 다음 시간에 폐쇄될 것이다. 폐쇄 처리는 소스 블록으로부터 이런 블록으로 나머지 페이지들을 카피함으로써 가장 편리하게 실행되도록 하기 위한 가베지 수집을 포함한다. 그 다음 이런 블록은 폐쇄되고 필요한 새로운 업데이트 블록은 개방된다. 소모도 평준화 교환은 메모리 시스템의 정상 동작 동안 완료되었다. 특정 동작은 일단 설정되면 소모도 평준화 교환 완료를 위하여 필요하지 않다.
도 15는 타이밍 도에 의한 처리를 도시한다. 데이터의 예시적인 유니트들(1 및 2)에 관련하여 현재 기입 명령의 실행은 간격(307) 동안 발생한다. 와이어 명령의 실행을 위하여 이용할 수 있는 업데이트 블록을 형성하기 위하여 필요한 가베 지 수집은 초기 간격(309) 동안 발생하고, 그 다음 소모도 평준화 동작이 도 14의 단계들(301-304)과 관련하여 상기된 바와 같이 설정되는 간격(311)에 의해 발생한다. 호스트로부터 제어기 버퍼 메모리에 수신된 데이터의 유니트들(1 및 2)은 간격(313) 동안 플래시 메모리에 기입된다.
추후 간격(315) 동안, 다음 기입 명령의 실행이 발생하고 개방 업데이트 블록을 제공하기 위하여 가베지 수집을 요구할 때, 가베지 수집(317)은 소모도 평준화 교환을 완료한다. 이런 실시예에서 데이터 유니트들(3 및 4)은 간격(319) 동안 플래시 메모리에 기입된다.
도 14 및 15의 처리는 도 16에 의해 다른 방식으로 도시된다. 데이터의 하나의 페이지 또는 메타페이지는 소모도 평준화를 위하여 설계된 소스 블록으로부터 새롭게 개방된 업데이트 블록(3)(데이터 카피 1)으로 카피된다. 개방될 두 개의 업데이트 블록들이 임의의 시간에 개방되는 것을 허용하는 메모리 시스템을 가정하여, 업데이트 블록(2)은 업데이트 블록(3)을 개방하기 위하여 폐쇄된다. 이것은 도 15의 시간 간격(307) 동안 도 14의 단계들(301-304)에 의해 실행된다. 그 후, 도 15의 시간 간격(315) 동안, 소스 블록으로부터의 나머지 데이터는 업데이트 블록(3)(데이터 카피 2)에 카피된다. 추후 기입 명령을 실행하기 위해 필요하여 이루어진 가베지 수집(317)은 이전에 설정된 소모도 평준화 교환을 완료한다.
새로운 데이터 블록 세트들에 하나 또는 그 이상의 데이터 페이지들을 카피하는 것은 가베지 수집 처리를 변형하지 않고 추후 가베지 수집을 위하여 설정된다. 소모도 평준화 교환은 오히려 자동으로 완료된다. 선택적으로, 데이터가 처 음에 새로운 업데이트 블록에 카피될 필요가 있는 것이 아니고, 오히려 새로운 업데이트 블록은 카피될 데이터의 소스 블록을 식별하는 플래그로 마크될 수 있다. 데이터 교환은 추후 플래그에 대한 응답시 발생하게 될 수 있다.
동일한 데이터 기입 및 소모도 평준화 동작을 달성하는 다른 방법은 도 17의 타이밍 도에 도시된다. 메모리 비지 신호는 단일 기입 명령 동안 각각의 데이터 유니트들(1, 2 및 3)의 전달 후 주장된다. 이런 실시예에서, 가베지 수집이 기입 명령을 실행하기 위한 업데이트 블록을 얻기 위하여 필요하다는 것이 가정되고, 다른 가베지 수집은 소모도 평준화를 수행하기 위하여 필요하다. 이것은 도 14의 블록(235')으로부터 "경로 없음"을 얻지만 도시된 것과 다르게 상황을 처리한다. 데이터를 기입하기 위하여 필요한 가베지 수집(321)(도 17)은 제 1 비지 신호 동안 발생한다. 그 다음 가베지 수집(323)은 제 2 비지 신호 동안 소모도 평준화 교환을 위하여 업데이트 블록을 생성한다. 그 다음 전체 소모도 평준화 교환(325)은 제 3 비지 신호 동안 발생하고, 데이터 유니트들(1, 2 및 3)은 추후 플래시 메모리에 기입된다(도시되지 않음).
동일한 기능들은 도 14-16 처럼 도 17의 실시예에서 발생하지만 이를 달성하기 위하여 추가 비지 신호 기간이 요구된다. 메모리 성능은 기입 명령을 실행하고 대부분의 소모도 평준화 교환을 수행하기 위하여 가베지 수집 동작(319)을 사용하여 도 14-16의 실시예에 비해 우수하다.
도 14-16의 예에 의해, 소모도 평준화 교화는 하나가 계류중인 각각의 시간에 시작될 수 있다. 그러므로, 소모도 평준화는 상기 제 1 실시예와 동일하게 스 킵되지 않고 매 N 메모리 시스템 소거 사이클들을 규칙적으로 발생시킬 수 있다. 따라서, 도 13A, 13B 및 13C와 같은 과정들은 불필요하다.
제 3 소모도 평준화 실시예
도 18의 동작 흐름도는 도 12와 유사하지만 다수의 연속적인 비지 기간들 동안 하우스키핑 임무 또는 임무들의 수행을 실행한다. 단계(243)에서 기입 명령을 수신한 후, 시간 비용은 다음 단계(245)에서 계산된다. 즉, 하우스키핑 동작들을 수행하기 위한 이런 기입 동작에서 이용할 수 있는 시간 양은 처음에 결정된다. 이것은 (1) 호스트 타임아웃을 초과하지 않고 데이터의 각각의 유니트가 전달된 후 주장될 수 있는 메모리 시스템 비지 신호의 최대 기간을 (2) 제공된 기입 명령에 의해 전달되는 데이터 단위들의 수의 항들에서 데이터 전달 길이에 곱하는 것을 포함한다. 이것은 하우스키핑을 수행하기 위하여 제어기에 이용할 수 있는 시간이 하기 되는 도 19 및 20에 가장 잘 도시되는 바와 같이 각각의 데이터 유니트 전달과 동시 및 그 후 발생하기 때문이다.
다음 단계(247)에 의해, 데이터의 제 1 다수의 유니트들은 제어기 버퍼 메모리에 수신되고, 가베지 수집은 만약 기입 명령을 실행할 필요가 있으면 단계(249)에서 시작된다. 단계(245)에 의해 결정된 시간 비용은 카운터 또는 등등을 감소시킴으로써 가베지 수집(도시되지 않음)을 수행하기 위하여 취해지는 시간 양에 의해 감소될 수 있다.
단계(251)에서, 제 2 데이터 유니트는 수신되고 그 다음 소모도 평준화가 현재 데이터 기입 동작 동안 수행될 수 있는 여부가 결정된다. 단계(253)에 의해, 계류중인 소모도 평준화 교환이 있는지 여부, 즉 사용되는 특정 소모도 평준화 알고리듬에 따라 소모도 평준화를 시작하기 위한 조건들이 존재하는지 여부가 결정된다. 만약 그렇다면, 다음 단계(255)에서, 소모도 평준화에 사용하기 위한 자유롭거나 빈 업데이트 블록의 존재는 결정된다. 만약 하나가 존재하면, 소모도 평준화는 수행되고(단계 257), 그 다음 현재 기입 명령의 임의의 추가 데이터 유니트들을 수신하고(단계 259) 플래시 메모리에 현재 기입 명령의 데이터 유니트들을 기입한다(단계 261). 물론, 소모도 평준화 교환이 계류중인 아닌 것이 단계(253)에 의해 결정되면, 처리는 직접 단계(259)로 이동한다.
단계(255)를 참조하여, 만약 소모도 평준화 동안 사용하기 위하여 쉽게 이용할 수 있는 업데이트 블록이 없다면, 다음 단계(263)는 업데이트 블록을 얻기 위하여 필요한 가베지 수집을 수행하기 위한 시간이 있는지를 조사한다. 이런 실시예에서 호스트로부터 데이터의 유니트를 수신한 후 각각의 가베지 수집 및 소모도 평준화 교환들이 메모리 시스템으로부터 비지 신호 동안 수행되면, 이런 질문은 제 3 데이터 유니트가 있는지 여부이다. 만약 있다면, 수신되고(단계 265) 필요한 가베지 수집(단계 267)은 수행된다. 단계(257)의 소모도 평준화가 추후 수행된다. 그러나 만약 이런 부가적인 가베지 수집을 위한 시간이 없다면, 처리는 직접적으로 단계(261)로 진행한다.
도 18의 처리의 변형으로서, 시간 비용 단계(245)는 시간이 있는 가베지 수집 및 소모도 평준화 교환들의 비용을 선택적으로 즉각적으로 이루어질 수 있다. 시간이 있는 동작들은 함께 스케쥴링된다. 이것을 수행하기 위하여 필요한 모든 정보는 기입 명령을 수신한 후 즉각적으로 이용할 수 있다. 만약 특정 동작이 하나의 메모리 시스템 비지 기간내에 완료될 수 없으면, 다른 비지 기간으로 확장되도록 스케쥴될 수 있다. 이런 방식에서, 이들 및 다른 하우스키핑 동작들의 최대량은 매우 충분히 사용될 수 있다.
하나의 특정 동작 방법은 도 19의 타이밍 도로 도시되고, 양쪽 가베지 수집 및 소모도 평준화는 데이터의 두 개의 유니트들(1 및 2)을 기입하는 단일 동작 동안 발생한다. 메모리 시스템은 필요한 가베지 수집을 수행하기에 충분한 시간 동안 제 1 데이터 유니트의 전달 후 비지 신호를 유지한다. 가베지 수집이 완료되자 마자, 비지 신호는 제거되고 호스트는 데이터의 제 2 유니트를 전송한다. 그 다음 메모리 시스템은 소모도 레벨을 수행하기 위하여 필요한 시간 동안 제 2 데이터 유니트의 전달 후 비지 신호를 다시 주장한다. 그 다음 데이터의 양쪽 유니트들은 제어기 버퍼 메모리로부터 플래시 메모리의 블록에 기입되고, 그 후 비지 신호는 메모리 시스템이 새로운 명령을 수신하기 위하여 준비되는 호스트를 가리키기 위하여 비활성화된다. 도 19에서, 부가적인 비지 기간은 메모리 시스템 버퍼에 대한 유니트들(1 및 2)의 호스트 전달중에 삽입된다. 이것은 상기된 도 17의 경우이다.
비록 두 개의 다른 하우스키핑 동작들, 즉 가베지 수집 및 소모도 평준화가 연속적인 메모리 시스템 비지 기간들 동안 수행되지만, 단지 하나의 상기 동작은 도 19의 메모리 시스템 비지 기간들의 각각 동안 수행된다. 선택적으로, 대부분의 시간이 블록들 사이의 데이터 전달을 위하여 사용되는 가베지 수집 및 소모도 평준화의 경우 특히, 가베지 수집 또는 소모도 평준화 교환은 두 개의 연속적인 기간들 사이에서 분할될 수 있다. 이 경우, 데이터를 카피하는 것의 일부는 제 1 메모리 시스템 비지 기간 동안 수행되고 그 다음 제 2 비지 기간 동안 완료된다.
데이터 기입 동작들은 주로 도 9 및 19에 도시된 두 개 이상의 데이터의 보다 많은 유니트들의 전달을 포함한다. 이것은 메모리 시스템내에서 가베지 수집, 소모도 평준화 또는 다른 하우스키핑 동작들을 수행하기 위한 부가적인 기회를 제공한다. 도 20은 이것의 하나의 실시예를 제공하고, 여기서 호스트 기입 명령은 데이터 1,2,3 및 4의 4개의 유니트들이다. 메모리 시스템은 만약 필요하거나 목표되면, 연속적인 기간들(217, 219 및 221)에 걸쳐 하나 또는 그 이상의 가베지 수집, 소모도 평준화 또는 다른 하우스키핑 동작들을 수행한다. 이것을 수행하고 데이터를 기입하기 위하여, 메모리 시스템은 각각의 데이터 전달 후 비지 신호 기간을 삽입한다. 이것은 개별 비지 기간들의 기간이 감소되거나 완전히 사용되도록 다중 메모리 시스템 비지 기간들에 걸쳐 하우스키핑 기능의 실행을 확장할 수 있는 장점을 가진다.
도 20의 실시예에서, 각각의 하우스키핑 기간들(217, 219 및 221)의 종료는 비지 신호가 비활성화되게 하고, 차례로 호스트가 다음 데이터 유니트를 전송하게 한다. 선택적으로, 비지 신호의 비주장은 기간들(217, 219 및 221)의 종료와 동기화될 필요가 없다. 오히려, 비지 시간의 기간들은 기간들(217, 219 및 221)을 포함하는 시간이 단일 기간으로서 사용될 수 있도록 몇몇 다른 방식으로 제어될 수 있다. 이 경우 비지 신호의 주장을 제어하기 위한 한 가지 방식은 목표된 동작이 완료될 때까지 각각의 예에서 가능한 한 오랫동안 이루어지고, 그 후 비지 신호는 필요한 만큼 작은 시간 동안 주장된다. 비지 신호를 제어하기 위한 다른 방식은 각각의 비지 신호들이 다소 동일한 기간을 가지게 한다. 이런 공통 기간은 현재 기입 명령에 의해 전달되는 데이터 유니트들의 수에 의해 분할되는 동작(들)을 완료하기 위하여 필요한 시간에서 기입 명령을 수신한 후 결정된다.
예시적인 소모도 평준화 알고리듬
도 12의 단계(237) 및 도 18의 단계(257)에서 실행될 수 있는 특정 소모도 평준화 알고리듬은 지금 기술될 것이다. 물론 소스 블록 및 하나의 목적 블록은 선택된다. 포인터는 소스 블록을 선택하기 위하여 논리 그룹들(도 8의 211)을 통하여 증가된다. 하나의 블록이 소모도 평준화에 영향을 받은 후, 포인터는 순서적으로 다음 논리 그룹으로 이동하고, 그룹이 맵핑되는 물리적 블록은 소스 블록으로서 선택된다. 대안적으로, 포인터는 직접적으로 물리적 블록을 통하여 증가될 수 있다.
지적된 블록은 만약 특정 부가적인 기준에 부합되면 소스 블록으로서 선택된다. 블록은 호스트 데이터를 포함할 필요가 있고, 메모리 시스템 제어 데이터(도 8과 관련하여 기술된 것 외에)를 포함하는 예비 블록들이 있으면 선택되지 않을 것이다. 이것은 예비 블록들의 사용 성질이 예비 블록들상에서 소모도 평준화를 수행하지 않고 메모리를 통하여 사이클링되는 것을 유발한다. 블록은 만약 그것과 연관된 개방 업데이트 블록을 가진다면 소스 블록으로서 선택되지 않을 것이다. 업데이트 블록의 존재는 블록에 맵핑된 논리 그룹에 대한 데이터가 블록 및 업데이트 블록 양쪽에 포함되는 것을 의미한다. 물론, 결함이 있기 때문에 맵핑된 블록 은 소스 블록으로서 선택되지 않을 것이다.
만약 지적된 블록이 이들 또는 몇몇 다른 이유중 하나 때문에 소스 블록으로서 적당하지 않으면, 포인터는 순서적으로 다음 논리 그룹 또는 물리적 블록으로 증가되고 이런 다음 블록은 상기 기준에 따라 검사된다. 만약 이런 제 1 블록의 검사가 실패이면, 다른 것이 지적되고 검사된다. 최대 수는 적당한 블록이 발견되지 않을 때 고려되는 블록들의 수에 놓인다. 현재 소모도 평준화 교환은 그 다음 중지되고 검사는 다음 소모도 평준화 교환 동안 재시작된다.
목적 블록은 호스트로부터 데이터의 저장을 위하여 사용되도록 배치되는 일반적으로 다음 블록인 소거 풀 블록들로부터 선택된다. 그러나 호스트 데이터를 저장하는 대신, 소스 블록으로부터의 데이터는 이런 목적 블록에 카피된다. 그 다음 맵핑 테이블(215)은 이들 데이터가 속하는 논리 그룹이 새로운 블록에 맵핑되도록 업데이트된다. 그 다음 소스 블록은 소거되고 소거 풀내에 놓인다.
다른 실시예들
도 21의 타이밍 도는 두 개 또는 그 이상의 기입 명령들의 실행 동안 단일 하우스키핑 동작이 발생하는 예를 도시한다. 하우스키핑 동작의 하나의 부분(331)은 하나의 기입 명령의 실행 동안 발생하고, 다른 부분(333)은 다음 기입 명령의 실행 동안 발생한다. 하우스키핑 동작은 두 개 이상의 기입 명령 실행들에서 확산되고, 연속적인 기입 실행들 동안 수행되는 것이 아니고, 오히려 시간에 따라 추가로 확산될 수 있다. 이런 능력을 가지는 것의 장점은 특정 하우스키핑 동작들을 수행하기 위하여 필요한 시간들이 특정 기입 사이클 메모리 비지 신호 기간들로부 터 분리될 수 있다는 것이다. 정말로, 메모리 시스템 비지 신호는 연속적인 기입 명령 실행들 동안 균일한 기간을 가지도록 이루어지고, 개별 하우스키핑 동작들은 몇몇 비지 신호 기간들에 걸쳐 수행될 수 있다.
확장된 비지 기간(들)에서 바람직할 수 있는 하나의 다른 하우스키핑 기능은 상기된 바와 같이 메모리 셀들에 저장된 전하 레벨들을 리프레싱(스크러빙)하는 것이다. 수신된 명령의 실행시 포함되지 않은 하나 또는 그 이상의 블록들 또는 메타블록들의 메모리 셀들은 리프레시된다. 다른 것은 상기된 미리 비어진 가베지 수집이다. 상기 가베지 수집은 수신된 명령의 실행시 포함되지 않은 블록들 또는 메타블록들의 데이터에서 수행된다. 수신된 명령의 실행을 위하여 필요하지 않고 요구되지 않는 다른 오버헤드 동작들은 메모리 시스템에 의해 주장된 비지 기간들 동안 수행될 수 있다. 이것은 상기 카피가 상당양의 시간을 차지하기 때문에 다량의 데이터를 카피하는 것을 요구하는 하우스키핑 동작에 특히 유용하다. 소모도 평준화, 스크러빙, 사전 비움 가베지 수집 또는 호스트 명령의 실행 동안 수행되는 다른 유사한 동작들의 어느 것도 명령의 실행의 필수적인 부분이 아니다. 이들은 수신된 명령에 직접 관련되거나 트리거되지 않는다. 상기 다른 동작들을 수행하기 위한 시간 양을 제한하는 것을 제외하고, 호스트 명령의 실행 동안 수행될 수 있는 것에 대한 제한은 거의 없다.
게다가, 기입 명령들의 실행 동안 관련되지 않은 동작들을 수행하는 것외에, 이들은 다른 호스트 명령들의 실행 동안 수행될 수 있고, 여기서 메모리 시스템은 비지 신호의 주장에 의해 또는 다른 방식으로 추가 호스트 명령의 수신을 지연시키 도록 동작할 수 있다. 상기 하나의 다른 명령은 판독 명령이다. 도 22는 시간 간격(341) 동안 플래시 메모리로부터 제어기 메모리로 판독된다. 메모리 비지 신호는 이런 기간 동안 활성화된다. 그러나 이후 바로 비지 신호를 버리기 보다 오히려, 시간 간격(343) 동안 하우스키핑 동작, 또는 일부가 발생하게 하는 시간을 제공하도록 확장된다. 비지 신호가 버려질 때, 데이터의 유니트들(1 및 2)은 호스트로 전달된다. 하우스키핑 동작은 도시된 바와 같이 이런 기간을 통하여 확장될 수 있다. 기입 명령들의 실행 동안 하우스키핑을 수행하기 위하여 상기된 많은 기술들은 또한 판독 명령들의 실행 동안 수행되는 것에 적용될 수 있다.
결론
비록 본 발명의 다양한 측면들이 예시적인 실시예들과 관련하여 기술되었지만, 본 발명이 첨부된 청구항들의 전체 범위내에서 보호되도록 하는 것은 이해될 것이다.

Claims (27)

  1. 소거 가능하고 재프로그래밍 가능한 비휘발성 메모리 시스템을 동작시키는 방법으로서,
    실행을 위한 시간 비용을 가진 메모리 시스템 외측에서 명령을 수신하는 것에 응답하여,
    명령을 실행하기 위하여 필요한 임의의 기능을 수행하고,
    시간 비용내에 속하는 동안 상기 임의의 필요한 기능을 수행하기 위하여 사용된 확장 시간 동안 메모리 시스템의 외측 비지 신호를 주장하고, 및
    수신된 명령을 실행하는데 불필요한 메모리 시스템내에서 하나의 하우스키핑 동작의 적어도 일부를 확장된 비지 신호 시간 동안 수행하는, 비휘발성 메모리 시스템 동작 방법.
  2. 제 1 항에 있어서, 상기 수신된 명령은 메모리 시스템에 기입될 하나 또는 그 이상의 데이터 유니트들 다음에 기입 명령을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  3. 제 2 항에 있어서, 메모리 시스템에 기입될 다수의 데이터 유니트들은 수신되고, 상기 비지 신호는 데이터 유니트들의 수신 중에 적어도 두 개의 간격들에서 주장되고, 상기 시간 동안 상기 하나의 하우스키핑 동작의 적어도 일부는 상기 적 어도 하나의 하우스키핑 동작을 완료함으로써 수행되는, 비휘발성 메모리 시스템 동작 방법.
  4. 제 3 항에 있어서, 상기 적어도 하나의 하우스키핑 동작들은 하나 이상의 상기 적어도 두 개의 간격들 동안 수행되는, 비휘발성 메모리 시스템 동작 방법.
  5. 제 4 항에 있어서, 상기 명령을 실행하기 위하여 필요한 임의의 기능은 가베지 수집 동작 및 수신된 데이터를 메모리 시스템에 기입하는 동작을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  6. 제 1 항에 있어서, 상기 하나의 하우스키핑 동작은 메모리 시스템내의 하나의 위치로부터 다른 위치로 데이터 양을 전달하는 단계를 포함하고, 상기 하우스키핑 동작의 적어도 일부를 수행하는 단계는 데이터 양중 적어도 일부를 전달하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  7. 제 6 항에 있어서, 상기 데이터 양의 나머지 부분들은 상기 하나의 하우스키핑 동작을 수행하기 위하여 특히 지시되지 않은 가베지 수집 동작의 실행 동안 추후 전달되는, 비휘발성 메모리 시스템 동작 방법.
  8. 제 1 항에 있어서, 상기 적어도 하나의 하우스키핑 동작은 명령의 실행시 포 함되지 않은 메모리 부분에서 수행되는 소모도 평준화 동작을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  9. 제 1 항에 있어서, 상기 적어도 하나의 하우스키핑 동작은 명령의 실행시 포함되지 않은 메모리의 일부에 저장된 데이터를 리프레싱 하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  10. 제 1 항에 있어서, 상기 적어도 하나의 하우스키핑 동작은 명령의 실행시 포함되지 않은 메모리의 일부에서 수행되는 가베지 수집 동작을 포함하는, 비휘발성 메모리 시스템 동작 방법.
  11. 소거 가능하고 재프로그래밍 가능한 비휘발성 메모리 시스템을 동작시키는 방법으로서,
    주어진 시간 비용내에서 하나 또는 그 이상의 데이터 유니트들을 전달하기 위한 명령을 수신하는 것에 응답하여,
    임의의 하우스키핑 동작이 하나 또는 그 이상의 데이터 유니트들을 전달하기 위하여 필요한지 여부를 결정하는 단계,
    만약 임의의 하우스키핑 동작이 하나 또는 그 이상의 데이터 유니트들을 전달하기 위하여 필요하면, 적어도 필요한 하우스키핑 동작을 수행하는 단계,
    하나 또는 그 이상의 데이터 유니트들의 전달에 불필요한 하우스키핑 동작이 계류중인지를 결정하는 단계,
    데이터 전달에 불필요한 하우스키핑 동작이 계류중이면, 시간 비용내에서 임의의 나머지 시간이 데이터 전달을 위하여 불필요한 계류중인 하우스키핑 동작을 수행하기 위하여 충분한지 여부를 결정하는 단계,
    만약 충분한 시간이 시간 비용 내에서 남아있으면, 수신된 명령의 실행 동안 데이터 전달에 불필요한 계류중인 하우스키핑 동작의 적어도 일부를 수행하는 단계, 및
    주어진 시간 비용 내에서 하나 또는 그 이상의 데이터 유니트들을 전달하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  12. 제 11 항에 있어서, 하우스키핑 동작이 하나 또는 그 이상의 데이터 유니트들을 기입하기 위하여 필요한지 여부를 결정하는 단계는 두 개 또는 그 이상의 메모리 위치들내 데이터가 단일 위치로 결합되는지 여부를 결정하는 단계를 포함하고, 만약 결합되면, 주어진 시간 비용내에서 상기 데이터를 결합하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  13. 제 11 항에 있어서, 데이터 전달에 불필요한 하우스키핑 동작이 계류중인지를 결정하는 단계는 계류중인 소모도 평준화 교환을 식별하는 단계를 포함하고, 데이터 전달에 불필요한 계류중인 하우스키핑 동작을 수행하는 단계는 주어진 시간 비용 내에서 계류중인 평준화 교환의 적어도 일부를 수행하는 단계를 포함하는, 비 휘발성 메모리 시스템 동작 방법.
  14. 제 13 항에 있어서, 상기 데이터 전달에 불필요한 계류중인 하우스키핑 동작을 수행하는 단계는 주어진 시간 비용내에서 모든 계류중인 소모도 평준화 교환을 수행하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  15. 제 11 항에 있어서, 데이터 전달에 불필요한 하우스키핑 동작이 계류중인지를 결정하는 단계는 수신된 데이터 전달 명령을 실행할 때 포함된 부분과 다른 메모리 시스템의 부분에 저장되는 지정된 데이터를 리프레시하기 위한 동작을 식별하는 단계를 포함하고, 데이터 전달에 불필요한 계류중인 하우스키핑 동작을 수행하는 단계는 주어진 시간 비용내에서 지정된 데이터의 적어도 일부를 리프레싱하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  16. 제 15 항에 있어서, 상기 데이터 전달에 불필요한 계류중인 하우스키핑 동작을 수행하는 단계는 주어진 시간 비용내에서 모든 지정된 데이터를 리프레싱하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  17. 제 11 항에 있어서, 데이터 전달에 불필요한 하우스키핑 동작이 계류중인지를 결정하는 단계는 수신된 기입 명령을 실행할 때 포함된 부분과 다른 메모리 시스템의 부분에서 동작 수행 가베지 수집을 식별하는 단계를 포함하고, 그 후 주어 진 시간 비용 내에서 상기 가베지 수집의 적어도 일부를 수행하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  18. 제 17 항에 있어서, 데이터 전달에 불필요한 계류중인 하우스키핑 동작을 수행하는 단계는 주어진 시간 비용 내에서 모든 데이터 전달을 수행하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  19. 제 11 항에 있어서, 연속적으로 두 개 또는 그 이상의 유니트들을 수신하는 단계를 더 포함하고, 상기 데이터 전달에 불필요한 하우스키핑 동작을 수행하기 위한 시간 비용 내에서 임의의 나머지 시간 양을 결정하는 단계는 충분한 시간이 남아있는지를 결정하고, 데이터 전달 명령의 실행을 완료하는데 불필요한 적어도 하나의 비지 기간을 주장하는 단계를 더 포함하는, 비휘발성 메모리 시스템 동작 방법.
  20. 제 11 항에 있어서, 데이터 전달에 불필요한 하우스키핑 동작이 계류중이고 데이터 전달에 불필요한 계류중인 하우스키핑 동작의 적어도 일부를 수행하기에 충분한 시간 비용 내에서 시간이 없다면, 수행되지 않은 동작들의 카운트에 수행되지 않은 하우스키핑 동작을 부가하는 단계를 포함하는, 비휘발성 메모리 시스템 동작 방법.
  21. 제 20 항에 있어서, 카운트에 포함되는 다수의 수행되지 않은 하우스키핑 동작들에 응답하여, 카운트가 영이 될 때까지 모든 추후 데이터 기입 명령들의 실행 동안 실행을 위하여 상기 하우스키핑 동작들이 각각 계류중이 되도록 하는, 비휘발성 메모리 시스템 동작 방법.
  22. 제 20 항에 있어서, 카운트에 포함되는 다수의 수행되지 않은 하우스키핑 동작들에 응답하여, 각각 수행되지 않은 하우스키핑 동작은 카운트가 영이 될 때까지 모든 추후 데이터 전달 명령들의 실행 동안 실행을 위하여 한번에 계류중이 되도록 하는, 비휘발성 메모리 시스템 동작 방법.
  23. 제 20 항에 있어서, 데이터 전달 명령의 실행과 관련되지 않은 하우스키핑 동작들은 일반적으로 미리 정의된 간격이 되게 하고, 카운트에 포함되는 다수의 수행되지 않은 하우스키핑 동작들에 응답하여, 수행되지 않은 하우스키핑 동작들은 카운트가 영이 될 때까지 상기 미리 정의된 간격 보다 작은 간격들에서 추후 데이터 전달 명령들의 실행 동안 수행되도록 하기 위하여 한번에 계류중이 되게 하는, 비휘발성 메모리 시스템 동작 방법.
  24. 제 20 항에 있어서, 데이터 전달 명령의 실행과 관련되지 않은 하우스키핑 동작들은 일반적으로 미리 정의된 간격이 되게 하고, 카운트에 포함된 다수의 변형되지 않은 하우스키핑 동작들에 응답하여, 적어도 하나의 수행되지 않은 하우스키 핑 동작들은 적어도 하나의 다른 수행되지 않은 하우스키핑 동작들이 수행되지 않은 동안 상기 미리 정의된 간격 보다 작은 간격에서 추후 데이터 전달 명령의 실행 동안 수행되도록 계류중이 되게 하는, 비휘발성 메모리 시스템 동작 방법.
  25. 동시에 소거할 수 있는 다수의 메모리 셀들의 다수의 물리적 블록들로 구성되는 소거 가능하고 재프로그래밍할 수 있는 비휘발성 셀들의 시스템을 동작시키는 방법으로서,
    논리 그룹 어드레스들 내의 데이터는 물리적 블록들에 맵핑되고, 논리 그룹들 중 하나에 데이터를 기입하기 위한 명령 및 기입될 데이터를 수신하는 것에 응답하여,
    물리적 그룹내의 데이터가 하나 이상의 물리적 블록들에 맵핑되는지 여부를 결정하는 단계,
    다수의 블록들 중 두 개 사이에서 계류하는 소모도 평준화 교환이 있는지 여부를 결정하는 단계, 및
    (a) 만약 논리 그룹내 데이터가 하나 이상의 물리적 블록들에 맵핑되면,
    단일 블록으로 하나 이상의 물리적 블록들의 데이터를 결합하고, 및
    논리 그룹과 연관된 업데이트 블록에 수신된 데이터를 기입하거나,
    (b) 만약 논리 그룹내 데이터가 하나 이상의 물리적 블록들에 맵핑되지 않고 계류중인 소모도 평준화 교환이 있다면,
    물리적 블록들의 상기 두 개 사이에서 소모도 평준화 교환을 수행하는 단계, 및
    논리 그룹과 연관된 업데이트 블록에 수신된 데이터를 기입하는 단계를 포함하는, 비휘발성 메모리 셀들의 시스템을 동작시키는 방법.
  26. 동시에 소거할 수 있는 다수의 메모리 셀들의 다수의 물리적 블록들로 구성된 소거 가능하고 재프로그래밍할 수 있는 비휘발성 메모리 셀들의 시스템을 동작시키는 방법으로서,
    물리적 블록들 중 하나에 맵핑된 논리적 그룹 어드레스들 내의 인입 데이터는 상기 하나의 블록에 논리적으로 링크된 업데이트 물리적 블록으로 프로그램되고, 기입 명령 및 기입될 데이터를 수신하는 것에 응답하여,
    업데이트 블록이 기입될 데이터를 수신하기 위하여 이용 가능한지 여부를 결정하는 단계,
    (a) 만약 업데이트 블록이 이용 가능하지 않으면,
    업데이트 블록의 데이터가 논리적으로 링크되는 물리적 블록의 데이터와 다수의 업데이트 블록들 중 하나의 데이터를 결합하여, 이용 가능한 업데이트 블록을 형성하고, 및
    그 후 이용 가능한 업데이트 블록에 데이터를 기입하거나,
    (b) 만약 업데이트 블록이 이용 가능하면,
    물리적 블록들 중 두 개 사이에서 데이터의 소모도 평준화 교환을 수행하고,
    그 후 이용 가능한 업데이트 블록에 데이터를 기입하는 단계를 포함하는, 비휘발성 메모리 셀들의 시스템을 동작시키는 방법.
  27. 동시에 소거할 수 있는 다수의 메모리 셀들의 다수의 물리적 블록들로 구성된 소거 가능하고 재프로그래밍할 수 있는 비휘발성 메모리 셀들의 시스템을 동작시키는 방법으로서,
    물리적 블록들 중 하나에 맵핑되는 논리적 어드레스들 내의 인입 데이터가 상기 하나의 블록에 논리적으로 링크된 업데이트 물리 블록으로 프로그램되고, 다수의 블록들 중 제한 수가 업데이트 블록들로 지정되고 새로운 업데이트 블록들이 적어도 두 개의 블록들로부터 하나의 블록으로 데이터를 결합하는 가베지 수집에 의해 생성되고, 기입 명령 및 기입될 데이터를 수신하는 것에 응답하여,
    기입 명령의 실행에 불필요한 하우스키핑 동작이 계류중인지 여부 및 다수의 블록들 증 하나로부터 업데이트 블록으로 다수의 데이터 유니트들의 카피에 대한 필요성이 있는지를 결정하는 단계,
    만약 있다면, 기입 명령의 실행 동안 상기 하나의 블록으로부터 업데이트 블록들의 하나로 다수의 데이터 유니트들의 하나 또는 그 이상이지만 상기 하나의 블록으로부터 유니트들의 1/4 미만인 것을 카피하는 단계,
    데이터가 결합되도록 하기 위하여 다음 번으로서 상기 하나의 업데이트 블록을 식별하는 단계, 및
    기입 명령의 실행 후, 상기 하나의 업데이트 블록상에서 가베지 수집을 수행 하여, 상기 하나의 블록내 다수의 데이터 유니트들의 나머지가 하나 또는 그 이상의 카피된 유니트들과 함께 공통 블록에 배치되는 단계를 포함하는, 비휘발성 메모리 셀들의 시스템을 동작시키는 방법.
KR1020077017713A 2005-01-20 2006-01-11 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링 KR101304254B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/040,325 2005-01-20
US11/040,325 US20060161724A1 (en) 2005-01-20 2005-01-20 Scheduling of housekeeping operations in flash memory systems
US11/312,985 US7315917B2 (en) 2005-01-20 2005-12-19 Scheduling of housekeeping operations in flash memory systems
US11/312,985 2005-12-19
PCT/US2006/001070 WO2006078531A2 (en) 2005-01-20 2006-01-11 Scheduling of housekeeping operations in flash memory systems

Publications (2)

Publication Number Publication Date
KR20070111470A true KR20070111470A (ko) 2007-11-21
KR101304254B1 KR101304254B1 (ko) 2013-09-05

Family

ID=36384406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077017713A KR101304254B1 (ko) 2005-01-20 2006-01-11 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링

Country Status (9)

Country Link
US (3) US7315917B2 (ko)
EP (2) EP1856616B1 (ko)
JP (2) JP4362534B2 (ko)
KR (1) KR101304254B1 (ko)
AT (2) ATE442627T1 (ko)
DE (2) DE602006020363D1 (ko)
IL (1) IL184675A0 (ko)
TW (1) TWI406295B (ko)
WO (1) WO2006078531A2 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110004651A (ko) * 2009-07-08 2011-01-14 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
KR20190056513A (ko) 2017-11-17 2019-05-27 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
KR20200115102A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 유사도에 따라 후보 선택을 가속하는 방법 및 후보 선택을 수행하는 가속기
US11636173B2 (en) 2019-03-28 2023-04-25 SK Hynix Inc. Method for candidate selection and accelerator for performing candidate selection

Families Citing this family (225)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6506770B1 (en) * 1996-06-06 2003-01-14 Anormed, Inc. Antiviral compounds
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
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
US7975306B2 (en) * 2004-06-04 2011-07-05 Hewlett-Packard Development Company, L.P. Apparatus and method for monitoring secure software
US7441067B2 (en) * 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
JP4394047B2 (ja) * 2005-08-05 2010-01-06 信越ポリマー株式会社 キーフレームおよび押釦スイッチ用カバー部材
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
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
US20070174641A1 (en) * 2006-01-25 2007-07-26 Cornwell Michael J Adjusting power supplies for data storage devices
US7702935B2 (en) * 2006-01-25 2010-04-20 Apple Inc. Reporting flash memory operating voltages
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7436708B2 (en) * 2006-03-01 2008-10-14 Micron Technology, Inc. NAND memory device column charging
CN100485681C (zh) * 2006-03-23 2009-05-06 北京握奇数据系统有限公司 智能卡存储系统及该系统中文件创建管理的方法
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
WO2008019218A2 (en) * 2006-08-04 2008-02-14 Sandisk Corporation Phased garbage collection
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US7451265B2 (en) * 2006-08-04 2008-11-11 Sandisk Corporation Non-volatile memory storage systems for phased garbage collection
US7441071B2 (en) 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
TWI376600B (en) * 2006-09-28 2012-11-11 Sandisk Corp Memory systems and method for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US7444462B2 (en) * 2006-09-28 2008-10-28 Sandisk Corporation Methods for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
US8949555B1 (en) * 2007-08-30 2015-02-03 Virident Systems, Inc. Methods for sustained read and write performance with non-volatile memory
US7464216B2 (en) * 2006-09-29 2008-12-09 Sandisk Corporation Method for phased garbage collection with state indicators
WO2008042592A2 (en) * 2006-09-29 2008-04-10 Sandisk Corporation Phased garbage collection
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
US20080091901A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management
US20080091871A1 (en) * 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
KR100789406B1 (ko) * 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
JP4751814B2 (ja) * 2006-11-28 2011-08-17 富士通東芝モバイルコミュニケーションズ株式会社 携帯端末
KR100881669B1 (ko) * 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
US20080155175A1 (en) * 2006-12-26 2008-06-26 Sinclair Alan W Host System That Manages a LBA Interface With Flash Memory
US7917686B2 (en) 2006-12-26 2011-03-29 Sandisk Corporation Host system with direct data file interface configurability
US8209461B2 (en) 2006-12-26 2012-06-26 Sandisk Technologies Inc. Configuration of host LBA interface with flash memory
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
KR100884239B1 (ko) * 2007-01-02 2009-02-17 삼성전자주식회사 메모리 카드 시스템 및 그것의 백그라운드 정보 전송 방법
US7657701B2 (en) * 2007-01-03 2010-02-02 The General Electric Company System and method of flash memory wear leveling using distributed write cycles
CN100504814C (zh) * 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US7669092B2 (en) 2007-02-26 2010-02-23 Micron Technology, Inc. Apparatus, method, and system of NAND defect management
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP4410271B2 (ja) * 2007-04-25 2010-02-03 株式会社東芝 メモリ制御装置
US7913032B1 (en) * 2007-04-25 2011-03-22 Apple Inc. Initiating memory wear leveling
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US20080294813A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Managing Housekeeping Operations in Flash Memory
US20080294814A1 (en) * 2007-05-24 2008-11-27 Sergey Anatolievich Gorobets Flash Memory System with Management of Housekeeping Operations
WO2008147752A1 (en) * 2007-05-24 2008-12-04 Sandisk Corporation Managing housekeeping operations in flash memory
US7788415B2 (en) 2007-05-28 2010-08-31 Sandisk Il Ltd. Management of internal operations by a storage device
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
TWI369633B (en) 2007-06-27 2012-08-01 Sandisk Corp Phased garbage collection and house keeping operations in a flash memory system
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
WO2009021176A2 (en) * 2007-08-08 2009-02-12 Sandisk Corporation Urgency and time window manipulation to accommodate unpredictable memory operations
US8046524B2 (en) 2007-08-08 2011-10-25 Sandisk Technologies Inc. Managing processing delays in an isochronous system
US11237956B2 (en) * 2007-08-13 2022-02-01 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US7970919B1 (en) * 2007-08-13 2011-06-28 Duran Paul A Apparatus and system for object-based storage solid-state drive and method for configuring same
US9824006B2 (en) 2007-08-13 2017-11-21 Digital Kiva, Inc. Apparatus and system for object-based storage solid-state device
US20090100214A1 (en) * 2007-10-12 2009-04-16 Bei-Chuan Chen Management Platform For Extending Lifespan Of Memory In Storage Devices
JP4554660B2 (ja) * 2007-11-01 2010-09-29 株式会社コナミデジタルエンタテインメント 記憶処理装置、情報提供サーバ、動作方法、ならびに、プログラム
TWI381383B (zh) * 2007-11-14 2013-01-01 Netac Technology Co Ltd 快閃記憶體的資料儲存方法
US9183133B2 (en) * 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US7966445B2 (en) * 2007-12-24 2011-06-21 Telefonaktiebolaget L M Ericsson (Publ) Read status controller
EP2077559B1 (en) * 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Refresh method of a flash memory
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US7957187B2 (en) * 2008-05-09 2011-06-07 Sandisk Corporation Dynamic and adaptive optimization of read compare levels based on memory cell threshold voltage distribution
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8560762B2 (en) * 2008-06-25 2013-10-15 Microsoft Corporation Limited memory power
TWI389125B (zh) * 2008-07-18 2013-03-11 A Data Technology Co Ltd 記憶體儲存裝置及其控制方法
JP2010055247A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ストレージシステム及び構成管理方法
US8675417B2 (en) * 2008-09-28 2014-03-18 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
US8230185B2 (en) 2008-10-08 2012-07-24 International Business Machines Corporation Method for optimizing cleaning of maps in FlashCopy cascades containing incremental maps
US8825940B1 (en) 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8244960B2 (en) 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8051241B2 (en) 2009-05-07 2011-11-01 Seagate Technology Llc Wear leveling technique for storage devices
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US20110010512A1 (en) * 2009-07-09 2011-01-13 Mediatek Inc. Method for controlling storage system having multiple non-volatile memory units and storage system using the same
US8209450B2 (en) * 2009-08-26 2012-06-26 Seagate Technologies Llc Maintenance operations using configurable parameters
US8234520B2 (en) * 2009-09-16 2012-07-31 International Business Machines Corporation Wear leveling of solid state disks based on usage information of data and parity received from a raid controller
US20110082599A1 (en) * 2009-10-06 2011-04-07 Makarand Shinde Optimizing Utility Usage by Smart Monitoring
US8013762B2 (en) * 2009-11-03 2011-09-06 Seagate Technology Llc Evaluating alternative encoding solutions during data compression
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US20110153912A1 (en) * 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US9959209B1 (en) 2010-03-23 2018-05-01 Western Digital Technologies, Inc. Data storage device adjusting command rate profile based on operating mode
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8392670B2 (en) 2010-04-12 2013-03-05 Hitachi, Ltd. Performance management of access to flash memory in a storage device
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US8452937B2 (en) 2010-05-14 2013-05-28 Sandisk Il Ltd. Moving executable code from a first region of a non-volatile memory to a second region of the non-volatile memory to reduce read disturb
JP5464066B2 (ja) * 2010-06-10 2014-04-09 ソニー株式会社 通信装置、及び、通信方法
US8543757B2 (en) 2010-06-23 2013-09-24 Sandisk Technologies Inc. Techniques of maintaining logical to physical mapping information in non-volatile memory systems
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8626986B2 (en) * 2010-06-30 2014-01-07 Sandisk Technologies Inc. Pre-emptive garbage collection of memory blocks
US8683148B2 (en) 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US9741436B2 (en) * 2010-07-09 2017-08-22 Seagate Technology Llc Dynamically controlling an operation execution time for a storage device
US8949506B2 (en) 2010-07-30 2015-02-03 Apple Inc. Initiating wear leveling for a non-volatile memory
US20120036301A1 (en) * 2010-08-03 2012-02-09 Caspole Eric R Processor support for filling memory regions
US10445226B2 (en) 2010-08-10 2019-10-15 Rambus Inc. Verify before program resume for memory devices
JP4910064B2 (ja) 2010-08-31 2012-04-04 株式会社東芝 記憶制御装置、記憶装置、及びデータ移動制御方法
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
JP2012068936A (ja) * 2010-09-24 2012-04-05 Toshiba Corp メモリシステム
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8271692B1 (en) 2010-10-01 2012-09-18 Western Digital Technologies, Inc. Throttled command completion time
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
TWI428743B (zh) * 2010-12-24 2014-03-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US8819328B2 (en) 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US8521948B2 (en) 2011-01-03 2013-08-27 Apple Inc. Handling dynamic and static data for a system having non-volatile memory
CN102592670B (zh) * 2011-01-07 2015-09-30 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
KR20120084906A (ko) * 2011-01-21 2012-07-31 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 그 관리 방법
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
US8560922B2 (en) 2011-03-04 2013-10-15 International Business Machines Corporation Bad block management for flash memory
US10338947B2 (en) * 2011-03-15 2019-07-02 Microsoft Technology Licensing, Llc Extent virtualization
JP2012203443A (ja) 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
JP2012234482A (ja) * 2011-05-09 2012-11-29 Canon Inc 記憶制御装置及びその制御方法、並びにプログラム
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US9189392B1 (en) 2011-06-30 2015-11-17 Western Digital Technologies, Inc. Opportunistic defragmentation during garbage collection
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US8819375B1 (en) 2011-11-30 2014-08-26 Western Digital Technologies, Inc. Method for selective defragmentation in a data storage device
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
TWI454916B (zh) * 2012-05-08 2014-10-01 Phison Electronics Corp 儲存單元管理方法、記憶體控制器與記憶體儲存裝置
US8788778B1 (en) 2012-06-04 2014-07-22 Western Digital Technologies, Inc. Garbage collection based on the inactivity level of stored data
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus
US8750045B2 (en) 2012-07-27 2014-06-10 Sandisk Technologies Inc. Experience count dependent program algorithm for flash memory
TWI479489B (zh) * 2012-08-13 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US20140129758A1 (en) * 2012-11-06 2014-05-08 Spansion Llc Wear leveling in flash memory devices with trim commands
US9411718B2 (en) * 2012-12-21 2016-08-09 Seagate Technology Llc Method to apply fine grain wear leveling and garbage collection
US20140181368A1 (en) * 2012-12-26 2014-06-26 Unisys Corporation Equalizing wear on storage devices with write counters
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) * 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9646039B2 (en) * 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
US9076545B2 (en) 2013-01-17 2015-07-07 Sandisk Tecnologies Inc. Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution
US9489297B2 (en) * 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9153331B2 (en) * 2013-03-13 2015-10-06 Sandisk Technologies Inc. Tracking cell erase counts of non-volatile memory
US20140359181A1 (en) * 2013-05-31 2014-12-04 Hewlett-Packard Development Company, L.P. Delaying Bus Activity To Accomodate Memory Device Processing Time
US20150363120A1 (en) * 2013-06-25 2015-12-17 Micron Technology, Inc. On demand block management
WO2015025357A1 (ja) 2013-08-19 2015-02-26 株式会社 東芝 メモリシステム
US10013280B2 (en) 2013-09-30 2018-07-03 Dell Products, Lp System and method for host-assisted background media scan (BMS)
US9218282B2 (en) * 2013-10-31 2015-12-22 Micron Technology, Inc. Memory system data management
US9727249B1 (en) * 2014-02-06 2017-08-08 SK Hynix Inc. Selection of an open block in solid state storage systems with multiple open blocks
JP6260395B2 (ja) * 2014-03-27 2018-01-17 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
CN104951241B (zh) * 2014-03-31 2018-02-27 群联电子股份有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
US9710176B1 (en) * 2014-08-22 2017-07-18 Sk Hynix Memory Solutions Inc. Maintaining wear spread by dynamically adjusting wear-leveling frequency
US10725668B1 (en) * 2014-08-29 2020-07-28 SK Hynix Inc. Data separation during garbage collection and wear leveling
KR20160049200A (ko) * 2014-10-27 2016-05-09 삼성전자주식회사 데이터 저장 장치의 작동 방법, 이를 포함하는 모바일 컴퓨팅 장치, 및 이의 작동 방법
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US10338817B2 (en) * 2014-12-30 2019-07-02 Sandisk Technologies Llc Systems and methods for storage recovery
KR101614107B1 (ko) * 2015-01-09 2016-04-20 성균관대학교산학협력단 비용 효율적인 선택적 메모리 중복 제거 방법 및 장치
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US20160299844A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Mapping Logical Groups of Data to Physical Locations In Memory
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9772777B2 (en) 2015-04-27 2017-09-26 Southwest Research Institute Systems and methods for improved access to flash memory devices
US9875053B2 (en) 2015-06-05 2018-01-23 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10289327B2 (en) * 2015-06-05 2019-05-14 Western Digital Technologies, Inc. Scheduling scheme(s) for a multi-die storage device
US10324833B2 (en) * 2015-10-27 2019-06-18 Toshiba Memory Corporation Memory controller, data storage device, and memory control method
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10133490B2 (en) * 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US20170139826A1 (en) * 2015-11-17 2017-05-18 Kabushiki Kaisha Toshiba Memory system, memory control device, and memory control method
US10318163B2 (en) * 2016-03-30 2019-06-11 EMC IP Holding Company LLC Balancing SSD wear in data storage systems
US10338825B2 (en) * 2016-03-31 2019-07-02 EMC IP Holding Company LLC Managing SSD wear rate in hybrid storage arrays
US10324633B2 (en) * 2016-03-31 2019-06-18 EMC IP Holding Company LLC Managing SSD write quotas in data storage systems
US10318185B2 (en) * 2016-07-01 2019-06-11 Intel Corporation Method and apparatus to provide both storage mode and memory mode access to non-volatile memory within a solid state drive
US10739996B1 (en) 2016-07-18 2020-08-11 Seagate Technology Llc Enhanced garbage collection
US11691355B2 (en) 2016-10-17 2023-07-04 Basf Se 3D spacer fabric reinforced PU composite and its use
TWI612473B (zh) * 2017-03-22 2018-01-21 慧榮科技股份有限公司 垃圾回收方法以及使用該方法的裝置
JP2018160194A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび方法
JP2018181213A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP6785205B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP6982468B2 (ja) * 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
JP2019079464A (ja) 2017-10-27 2019-05-23 東芝メモリ株式会社 メモリシステムおよび制御方法
KR20190120573A (ko) * 2018-04-16 2019-10-24 에스케이하이닉스 주식회사 메모리 시스템, 데이터 처리 시스템 및 메모리 시스템의 동작 방법
US11016693B2 (en) 2018-06-21 2021-05-25 International Business Machines Corporation Block health estimation for wear leveling in non-volatile memories
US10884889B2 (en) 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11537307B2 (en) 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
US10860219B2 (en) * 2018-10-05 2020-12-08 Micron Technology, Inc. Performing hybrid wear leveling operations based on a sub-total write counter
JP2020155182A (ja) * 2019-03-20 2020-09-24 キオクシア株式会社 メモリシステム及び不揮発性メモリ
KR20210006664A (ko) * 2019-07-09 2021-01-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR20210027563A (ko) * 2019-08-28 2021-03-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
TWI715409B (zh) * 2020-01-08 2021-01-01 點序科技股份有限公司 記憶體管理方法及儲存控制器
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability

Family Cites Families (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4012835A (en) * 1974-09-17 1977-03-22 E. I. Du Pont De Nemours And Co. Method of forming a dual in-line package
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
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
GB9111524D0 (en) * 1991-05-29 1991-07-17 Hewlett Packard Co Data storage method and apparatus
JP3134819B2 (ja) * 1997-06-04 2001-02-13 ソニー株式会社 データ処理装置
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
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
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JP3328321B2 (ja) 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5479633A (en) * 1992-10-30 1995-12-26 Intel Corporation Method of controlling clean-up of a solid state memory disk storing floating sector data
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5640529A (en) 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
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
US5696929A (en) * 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
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
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US6412023B1 (en) 1998-05-21 2002-06-25 Sony Corporation System for communicating status via first signal line in a period of time in which control signal via second line is not transmitted
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
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5956743A (en) 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US5871890A (en) * 1997-11-14 1999-02-16 Eastman Kodak Company Method for processing roomlight handleable radiographic films using two-stage development
US6233644B1 (en) * 1998-06-05 2001-05-15 International Business Machines Corporation System of performing parallel cleanup of segments of a lock structure located within a coupling facility
US6286016B1 (en) * 1998-06-09 2001-09-04 Sun Microsystems, Inc. Incremental heap expansion in a real-time garbage collector
JP3544476B2 (ja) 1998-09-11 2004-07-21 富士通株式会社 メモリ管理テーブル作成方法
GB9903490D0 (en) 1999-02-17 1999-04-07 Memory Corp Plc Memory system
JP3351398B2 (ja) * 1999-08-09 2002-11-25 株式会社村田製作所 データ通信装置
JP3863330B2 (ja) 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6345001B1 (en) 2000-09-14 2002-02-05 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6990547B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Replacing file system processors by hot swapping
US20020161846A1 (en) 2001-01-29 2002-10-31 Ulrich Thomas R. Data path controller architecture
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP4042359B2 (ja) 2001-07-10 2008-02-06 日本電気株式会社 キャッシュ制御方法及びキャッシュ装置
US6931480B2 (en) 2001-08-30 2005-08-16 Micron Technology, Inc. Method and apparatus for refreshing memory to preserve data integrity
US6973535B2 (en) * 2001-09-14 2005-12-06 Cornice, Inc. Digital device configuration and method
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP3928500B2 (ja) 2002-02-26 2007-06-13 株式会社日立製作所 メモリ装置
US6771536B2 (en) 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US6781877B2 (en) 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US6985992B1 (en) 2002-10-28 2006-01-10 Sandisk Corporation Wear-leveling in non-volatile storage systems
US7035967B2 (en) 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
EP1556868B1 (en) 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US6973531B1 (en) 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144516A1 (en) 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
KR100654429B1 (ko) 2004-03-03 2006-12-06 삼성전자주식회사 무선 스테이션의 트래픽을 동적으로 제어하는 방법 및 장치
KR100568115B1 (ko) 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
DE102004036488A1 (de) 2004-07-28 2006-03-23 Siemens Ag Verfahren, Vorrichtung und System zur adaptiven Optimierung von Transportprotokollen bei der Übertragung von Bildern
US7398348B2 (en) 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
US20060053247A1 (en) * 2004-09-08 2006-03-09 Hugo Cheung Incremental erasing of flash memory to improve system performance
US7441067B2 (en) 2004-11-15 2008-10-21 Sandisk Corporation Cyclic flash memory wear leveling
US7386655B2 (en) 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
JP2006195736A (ja) 2005-01-13 2006-07-27 Sony Corp 半導体記憶装置及びその制御方法
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
US20060161724A1 (en) 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
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
US7827141B2 (en) 2005-03-10 2010-11-02 Oracle International Corporation Dynamically sizing buffers to optimal size in network layers when supporting data transfers related to database applications
JP5162846B2 (ja) 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7779056B2 (en) 2006-09-15 2010-08-17 Sandisk Corporation Managing a pool of update memory blocks based on each block's activity and data order
US20080091871A1 (en) 2006-10-12 2008-04-17 Alan David Bennett Non-volatile memory with worst-case control data management
US20080091901A1 (en) 2006-10-12 2008-04-17 Alan David Bennett Method for non-volatile memory with worst-case control data management

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110004651A (ko) * 2009-07-08 2011-01-14 삼성전자주식회사 고체 상태 드라이브 장치 및 그것의 구동 방법
US8341374B2 (en) 2009-07-08 2012-12-25 Samsung Electronics Co., Ltd. Solid state drive and related method of scheduling operations
KR20190056513A (ko) 2017-11-17 2019-05-27 에스케이하이닉스 주식회사 메모리 장치에 대한 태스크들을 스케줄링하는 반도체 장치 및 이를 포함하는 시스템
US10635351B2 (en) 2017-11-17 2020-04-28 SK Hynix Inc. Semiconductor device for scheduling tasks for memory device and system including the same
KR20200115102A (ko) 2019-03-28 2020-10-07 에스케이하이닉스 주식회사 유사도에 따라 후보 선택을 가속하는 방법 및 후보 선택을 수행하는 가속기
US11636173B2 (en) 2019-03-28 2023-04-25 SK Hynix Inc. Method for candidate selection and accelerator for performing candidate selection

Also Published As

Publication number Publication date
JP4362534B2 (ja) 2009-11-11
KR101304254B1 (ko) 2013-09-05
US8364883B2 (en) 2013-01-29
US20090265508A1 (en) 2009-10-22
IL184675A0 (en) 2007-12-03
DE602006009081D1 (de) 2009-10-22
JP5222232B2 (ja) 2013-06-26
JP2009282989A (ja) 2009-12-03
WO2006078531A3 (en) 2006-11-23
US20080091872A1 (en) 2008-04-17
US7565478B2 (en) 2009-07-21
JP2008529130A (ja) 2008-07-31
TW200632935A (en) 2006-09-16
US20060161728A1 (en) 2006-07-20
ATE499648T1 (de) 2011-03-15
EP2112599A1 (en) 2009-10-28
EP2112599B1 (en) 2011-02-23
EP1856616A2 (en) 2007-11-21
US7315917B2 (en) 2008-01-01
DE602006020363D1 (de) 2011-04-07
ATE442627T1 (de) 2009-09-15
WO2006078531A2 (en) 2006-07-27
TWI406295B (zh) 2013-08-21
EP1856616B1 (en) 2009-09-09

Similar Documents

Publication Publication Date Title
KR101304254B1 (ko) 플래시 메모리 시스템들에서 하우스키핑 동작들의 스케쥴링
TWI393140B (zh) 在一非揮發性記憶體中儲存資料之方法
US20060161724A1 (en) Scheduling of housekeeping operations in flash memory systems
KR101040961B1 (ko) 온-칩 비휘발성 메모리 기록 캐쉬를 사용하기 위한 시스템및 방법
US7433993B2 (en) Adaptive metablocks
US7451264B2 (en) Cycle count storage methods
KR100983212B1 (ko) 데이터 런 프로그래밍
US7467253B2 (en) Cycle count storage systems
US7441067B2 (en) Cyclic flash memory wear leveling
US20080294814A1 (en) Flash Memory System with Management of Housekeeping Operations
US8117380B2 (en) Management of non-volatile memory systems having large erase blocks
US20080294813A1 (en) Managing Housekeeping Operations in Flash Memory
US20050144363A1 (en) Data boundary management
JP2009503726A (ja) 状況依存メモリ性能
WO2008147752A1 (en) Managing housekeeping operations in flash memory
WO2007121025A1 (en) Cycle count storage methods and systems

Legal Events

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

Payment date: 20160727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6