KR20070102485A - 클러스터 자동-정렬 - Google Patents

클러스터 자동-정렬 Download PDF

Info

Publication number
KR20070102485A
KR20070102485A KR1020077012085A KR20077012085A KR20070102485A KR 20070102485 A KR20070102485 A KR 20070102485A KR 1020077012085 A KR1020077012085 A KR 1020077012085A KR 20077012085 A KR20077012085 A KR 20077012085A KR 20070102485 A KR20070102485 A KR 20070102485A
Authority
KR
South Korea
Prior art keywords
cluster
block
page
logical
data
Prior art date
Application number
KR1020077012085A
Other languages
English (en)
Inventor
세르게이 아나토리에비츠 고로베츠
알랜 데이비드 베네트
Original Assignee
쌘디스크 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 쌘디스크 코포레이션 filed Critical 쌘디스크 코포레이션
Publication of KR20070102485A publication Critical patent/KR20070102485A/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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

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

Abstract

클러스터들로 호스트로부터 데이터를 수신하고 메모리 어레이에 데이터를 페이지 단위들로 기입하는 비휘발성 메모리 시스템에서 페이지들에 클러스터들의 정렬이 제공된다. 정렬은 데이터의 논리-물리적 맵핑에서의 오프셋들을 사용하여 각 블록 내에서 구현된다. 서로 다른 블록들은 서로 다른 오프셋들을 가질 수 있다. 호스트가 서로 다른 클러스터 경계 위치들을 갖고 데이터를 보낼 때, 데이터는 데이터가 정렬을 유지하도록 서로 다른 오프셋들로 기입될 수 있다.

Description

클러스터 자동-정렬{Cluster Auto-alignment}
이 발명은 비휘발성 메모리 시스템들의 동작에 관한 것으로, 특히 이러한 메모리 시스템들 내 데이터의 취급에 관한 것이다.
하나 이상의 집적회로 칩들 상에 형성된 플래시 EEPROM(Electrically Erasable and Programmable Read Only Memory) 셀들의 어레이를 채용하는, 특히 작은 폼 팩터 카드 형태의, 최근에 사용되는 상업적으로 성공한 많은 비휘발성 메모리 제품들이 있다. 일반적으로 반드시 별도의 집적회로 칩 상에 있을 필요는 없으나 메모리 제어기는 카드에 착탈가능하게 접속되는 호스트와 인터페이스하여 카드 내 메모리 어레이의 동작을 제어한다. 통상적으로 이러한 제어기는 마이크로프로세서, 어떤 비휘발성 독출전용 메모리(ROM), 휘발성 랜덤 액세스 메모리(RAM) 및 데이터 프로그래밍 및 독출시 제어기를 통해 데이터가 통과할 때 데이터로부터 에러 정정 코드(ECC)를 계산하는 것과 같은 하나 이상의 특별한 회로들을 포함한다. 구입될 수 있는 카드들의 일부는 CF(CompactFlash™) 카드들, MultiMedia 카드들(MMC), SD(Secure Digital) 카드들, P-Tag(personnel tags) 및 메모리 스틱 카드들이다. 호스트들은 개인용 컴퓨터들, 노트북 컴퓨터들, PDA들, 각종 데이터 통신 디바이스들, 디지털 카메라들, 셀룰라 전화들, 휴대 오디오 플레이어들, 자동차 사운드 시스템들, 및 유사 유형들의 장비를 포함한다. 일부 시스템들에서, 착탈가능 카드는 제어기를 포함하지 않으며 호스트가 카드 내 메모리 어레이의 동작을 제어한다. 이러한 유형의 메모리 시스템의 예들은 스마트 미디어 카드들 및 xD 카드들을 포함한다. 따라서, 메모리 어레이의 제어는 카드 내 제어기 상의 소프트웨어에 의해서, 혹은 호스트 내 제어 소프트웨어에 의해서 달성될 수 있다. 메모리 카드 구현 외에도, 이러한 유형의 메모리는 대안적으로 각종 유형들의 호스트 시스템들에 내장될 수 있다. 착탈가능 및 내장형 애플리케이션들 둘 다에서, 호스트 데이터는 메모리 제어 소프트웨어에 의해 구현되는 저장방식에 따라 메모리 어레이에 저장될 수 있다.
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 어레이는 셀들의 열들을 형성하기 위해 개개의 비트라인들과 기준 전위간에 하나 이상의 선택 트랜지스터들과 함께 접속된, 16 혹은 32와 같은 3이상 메 모리 셀들의 직렬 스트링들을 이용한다. 워드라인들은 이들 많은 수의 열들 내에서 셀들을 가로질러 확장한다. 열 내의 개개의 셀은 스트링을 통해 흐르는 전류가 어드레스된 셀에 저장된 전하의 레벨에 의존하도록 스트링 내 나머지 셀들이 거의 턴 온 되지 않게 함으로써 프로그래밍시 독출되고 검증된다. 메모리 시스템의 일부로서 NAND 구조 어레이들 및 이들의 동작의 예들은 미국특허 5,570,315, 5,774,397, 6,046,935, 6,522,580에 있다.
앞의 참조된 특허들에서 논의된 바와 같이 현 플래시 EEPROM 어레이들의 전하 저장 요소들은 통상적으로 전도성이 있게 도핑된 폴리실리콘 물질로부터 형성되는 것으로 대부분이 공통적으로 전기적 도전성의 플로팅 게이트들이다. 플래시 EEPROM 시스템들에서 유용한 대안적 유형의 메모리 셀은 비휘발성이 되게 전하를 저장하는 도전성 플로팅 게이트 대신에 비도전성 유전물질을 이용한다. 실리콘 옥사이드, 실리콘 나이트라이드 및 실리콘 옥사이드(ONO)로 형성되는 3중의 유전층은 도전성 제어 게이트와 메모리 셀 채널 위의 반도체 기판의 표면 사이에 개재된다. 셀은 전자들을 셀 채널에서 질화물 내로 -전자들이 한정된 영역에 트랩되어 저장된다- 주입함으로써 프로그램되고, 핫 정공들을 질화물 내로 주입함으로써 소거된다. 유전 저장요소들을 채용하는 몇가지 특정한 셀 구조들 및 어레이들은 Harari 등의 미국특허출원공개 2003/0109093에 기술되어 있다.
개개의 플래시 EEPROM 셀들은 전하 저장 요소 혹은 유닛에 하나 이상의 비트들의 데이터를 나타내는 전하량을 저장한다. 저장요소의 전하 레벨은 이의 메모리 셀의 임계전압(일반적으로 VT라 함)을 제어하며, 이는 셀의 저장상태를 읽는 근거로서 사용된다. 임계전압 윈도우는 일반적으로 메모리 셀의 2이상의 저장상태들 각각에 한 범위로서 다수의 범위들로 분할된다. 이들 범위들은 개개의 셀들의 저장상태들을 판정할 수 있게 하는 공칭 센싱 레벨을 포함하는 카드밴드들에 의해 분리된다. 이들 저장레벨들은 이웃 혹은 다른 관계된 메모리 셀들, 페이지들 혹은 블록들에서 수행되는 프로그래밍, 독출 혹은 소거동작들을 교란시키는 전하의 결과로서 옮겨진다. 그러므로 에러 정정 코드들(ECC)는 통상적으로 제어기에 의해 계산되어 프로그램되는 호스트 데이터와 함께 저장되며 독출시 데이터를 검증하고 필요하다면 데이터 정정의 어떤 레벨을 수행하는데 사용된다. 또한, 옮겨진 전하레벨들은 전하 레벨들을 허용된 범위들에서 중앙에 있게 조정하여 데이터가 재기입되는 새로운 위치에 데이터를 카피함으로써, 수시로 전하 레벨들의 상태 범위들의 중심들로 다시 복구될 수 있다. 이것은 교란 동작들로 인해 전하레벨들이 이들의 정해진 범위들을 완전히 벗어나 옮겨지게 되어 이에 따라 오류의 데이터가 독출되기 전에 행해질 수 있다. 데이터 리프레쉬 혹은 스크럽이라 하는 이 프로세스는 미국특허 5,532,962 및 5,909,449에 기술되어 있다.
대부분의 집적회로 애플리케이션들에서처럼, 일부 집적회로 기능을 구현하는데 요구되는 실리콘 기판면적을 줄이고자 하는 압력은 플래시 EEPROM 메모리 셀 어레이들에서도 존재한다. 주어진 크기의 메모리 카드 및 그 외 다른 유형들의 패키지들의 저장용량을 증가시키기 위해서, 혹은 용량을 증가시킬 뿐만 아니라 크기도 감소시키기 위해서, 실리콘 기판의 주어진 면적에 저장될 수 있는 디지털 데이터량을 증가시킬 것이 계속적으로 요망된다. 데이터의 저장밀도를 증가시키는 한 방법은 메모리 셀 당 및/또는 저장단위 혹은 요소 당 2이상의 비트의 데이터를 저장하는 것이다. 이것은 전하요소 전하 레벨 전압 범위의 윈도우를 3이상 상태들로 분할함으로써 달성된다. 이러한 4상태들의 사용은 각 셀이 2비트의 데이터를 저장할 수 있게 하고 8상태는 저장요소당 3비트의 데이터를 저장하며, 등등이 된다. 플로팅 및 이들의 동작을 사용하는 복수상태 플래시 EEPROM 구조는 미국특허 5,043,940 및 5,172,338에 기술되어 있고 유전 플로팅 게이트들을 사용하는 구조들에 대해선 언급된 미국특허출원공개 2003/0109093에 기술되어 있다. 복수상태 메모리 셀 어레이의 선택된 부분들은 미국특허 5,930,167 및 6,456,528에 기술된 방식으로, 여러 가지 이유로 2상태(바이너리)로 동작될 수도 있다.
전형적인 플래시 EEPROM 어레이의 메모리 셀들은 함께 소거되는 이산 블록들의 셀들로 분할된다. 즉, 소거 블록은 동시에 소거될 수 있는 최소 수의 셀들인 소거 단위이다. 통상적으로 각 소거 블록은 하나 이상 페이지들의 데이터를 저장하며, 페이지는 2이상의 페이지가 프로그램되거나 서로 다른 서브어레이들 혹은 플레인들에서 병렬로 독출될 수 있을지라도, 프로그래밍 및 독출의 최소 단위이다. 통상적으로 각 페이지는 1이상의 섹터들의 데이터를 저장하며, 섹터의 크기는 호스트 시스템에 의해 정의된다. 예로서의 섹터는 자기 디스크 드라이브들에 대해 설정된 표준에 따라 512 바이트의 사용자 데이터와, 이에 더하여 사용자 데이터 및/또는 이들이 저장된 소거 블록에 관한 몇 바이트의 오버헤드 정보를 포함한다. 통상적으 로 이러한 메모리들은 각 소거 블록 내에서 16, 32 혹은 그 이상의 페이지들로 구성되고, 각 페이지는 데이터의 하나 혹은 단지 몇 개의 호스트 섹터들을 저장한다.
사용자 데이터를 메모리 어레이에 프로그램시 병행도를 증가시키기 위해서, 통상적으로 어레이는, 자신의 데이터 레지스터들 및 데이터의 섹터들이 몇 개 혹은 모든 플레이들 각각에 및 이로부터 동시에 프로그램될 수 있게 병렬 동작을 가능하게 하는 그 외의 회로들을 내장하고 일반적으로 플레인이라고 하는 서브어레이들로 분할된다. 단일의 집적회로 상의 어레이는 물리적으로 플레인들로 분할될 수 있고, 혹은 각 플레인은 별도의 하나 이상의 집적회로 칩들로부터 형성될 수 있다. 이러한 메모리 구현의 예들은 미국특허 5,798,968 및 5,890,192에 기술되어 있다.
일부 메모리 시스템들에서, 물리적 메모리 셀들은 2이상의 존들의 그룹으로 되어 있다. 존은 명시된 범위의 논리적 블록 어드레스들이 맵핑되는 물리적 메모리 혹은 메모리 시스템의 임의의 분할된 서브세트일 수 있다. 예를 들면, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 존 당 16메가바이트의 데이터를 저장하는 4개의 존으로 분할될 수 있다. 논리 블록 어드레스들의 범위는 4개 그룹들로 분할되고, 한 그룹은 4개 존 각각의 소거블록들에 할당된다. 논리 블록 어드레스들은 전형적인 구현에서, 논리 블록 어드레스들이 맵핑되는 단일 물리적 존 밖에 각 데이터가 결코 기입되지 않게 제약된다. 각각이 자신의 어드레싱, 프로그래밍 및 독출 회로들을 구비하고 있는 플레이들(서브어레이들)로 분할된 메모리 셀에서, 각 존은 바람직하게는 통상적으로 존들 각각으로부터 동일 수의 소거 블록들로서, 복수의 플레인들로부터 소거블록들을 포함한다. 존들은 주로 논리를 물리로 변환하 는 등의 어드레스 관리를 단순화하여 변환 테이블들을 보다 작게 함으로써, 이들 테이블들을 유지하는데 RAM 메모리를 덜 필요로 하게 하고 메모리 현재 활성화된 영역을 어드레스하는 시간을 보다 빠르게 하는데 사용되는데, 그러나 이들의 한정적 본질 때문에 최적의 웨어 레벨링(wear leveling)에 못 미치는 결과를 초래할 수 있다.
메모리를 보다 효율적으로 관리하기 위해서, 소거블록들을 함께 링크시켜 가상의 블록들 혹은 메타블록들을 형성할 수도 있다. 즉, 각 메타블록은 각 플레인으로부터 하나의 소거블록을 포함하게 정의된다. 메타블록의 사용은 미국특허 6,763,424에 기술되어 있고, 이 특허는 이 출원에 인용된 모든 다른 특허들 및 특허출원들과 함께 전부를 참조문헌으로 여기 포함시킨다. 메타블록은 데이터를 프로그래밍 및 독출하기 위한 목적지로서 호스트 논리 블록 어드레스에 의해 확인된다. 마찬가지로, 메타블록의 모든 소거블록들은 함께 소거된다. 이러한 큰 블록들 및/또는 메타블록들로 동작되는 메모리 시스템 내 제어기는 호스트로부터 수신된 논리 블록 어드레스들(LBA)와 메모리 셀 어레이 내 물리 블록 번호들(PBN)간 변환을 포함하는 다수의 기능들을 수행한다. 통상적으로 블록들 내 개개의 페이지들은 블록 어드레스 내에서 오프셋들에 의해 확인된다. 어드레스 변환은 흔히 논리 블록 번호(LBN)와 논리 페이지의 중간 텀의 사용을 수반한다.
메모리가 호스트에 접속되는 경우, 메모리 시스템과 호스트에 의해 사용되는 서로 다른 데이터 구조들의 결과로서 어떤 비능률이 일어날 수 있다. 통상적으로 호스트 시스템들은 데이터를 클러스터들로서 관리하는데, 클러스터는 고정된 수의 섹터들을 내포한다. 통상적으로, 클러스터는 다른 개수의 섹터들도 가능하지만, 데이터의 4내지 64개의 섹터들을 내포한다. 통상적으로 호스트는 클러스터 단위로 특정 파일에 대해 데이터의 할당을 기록하는 파일 할당 테이블(FAT)를 관리한다. 일반적으로 착탈가능 메모리 카드들의 메모리 시스템들과 같은 메모리 시스템들은 데이터의 단위으로서 클러스터들을 사용하지 않는다. 일 예에서, 한 클러스터의 데이터는 호스트에 의해 메모리 카드에 보내지고 메모리 카드는 한 클러스터의 데이터가 비휘발성 메모리에 저장되어 있을 때 신호를 리턴한다. 이어서, 호스트는 다음 한 클러스터의 데이터를 보낸다. 일반적으로 이들 클러스터들을 저장하는데 사용되는 페이지들과 클러스터들간에 정렬은 없다. 이것은 단일의 한 클러스터의 데이터의 프로그래밍은 클러스터가 단일 페이지에 기입될 수 있을지라도, 클러스터가 메모리의 두 페이지들로 확장하기 때문에 두 개의 기입동작들을 요구할 수 있음을 의미할 수 있다. 이것은 메모리에 데이터를 프로그램하는데 필요한 시간을 증가시킨다.
이 문제에 대한 한 가능한 해결책은, 클러스터가 제1 페이지에서 제2 페이지로 확장한 경우, 저장할 클러스터의 부분을 랜덤 액세스 메모리(RAM)과 같은 휘발성 메모리에 제2 페이지에 저장하고 클러스터가 기입되었음을 표시하는 신호를 호스트에 리턴하는 것이다. 다음 클러스터가 수신되었을 때, RAM 내 데이터가 카피되고 새로운 클러스터의 일부와 함께 전체 페이지 기입의 일부로서 제2 페이지에 기입될 수 있다. 다음 클러스터의 나머지는 전과 같이 RAM에 저장된다. 그러나, 어떤 표준들에 따라, 이러한 방식으로 RAM에 데이터의 저장은 메모리의 파워가 없어진 경우 이러한 데이터의 유실 위험성 때문에 허용되지 않는다.
또 다른 해결책은 물리에서 논리로의 섹터들의 맵핑은 클러스터 경계들을 페이지 경계들에 정렬시키기 위해 일정한 값만큼 변경되게 오프셋을 구현하는 것이다. 그러나, 예를 들면 테스트 목적으로, 호스트 시스템이 클러스터 경계들의 위치들을 변경한다면, 데이터는 오정렬될 것이며 정렬은 메모리에 저장된 모든 데이터를 이동시킬 것을 요구할 것이다. 포맷 프로세스는 FAT 카피들의 수와 클러스터 크기같은, 이전의 포맷 파라미터들을 고려함이 없이 정규로 행해진다. 포맷동안 클러스터들과 메모리 페이지들간에 최종의 오프셋에 대한 직접적인 제어는 없다. 결국, 오프셋은 포맷후에 다를 수 있다. 이에 따라, 이 기술은 몇가지 결점들을 갖는다.
그러므로, 호스트의 데이터 단위들의 경계들이 페이지 경계들과 일치되게 메모리 어레이의 페이지들에 호스트의 데이터 단위들(이를테면 클러스터들)을 정렬시키는 방법에 대한 필요성이 있다. 또한, 파워가 제거되어도 호스트 데이터가 유시되는 것으로부터 보호되도록 이를 행하는 방법에 대한 필요성이 있다. 또한, 융통성이 있고 호스트에 의해 보내진 데이터 내 클러스터 경계 위치들의 변경을 할 수 있도록 이를 행하는 방법에 대한 필요성이 있다.
<요약>
메모리 어레이의 페이지들에 호스트 데이터의 클러스터들을 정렬시키는 방법은 메모리 어레이의 블록에 데이터의 저장을 위해 오프셋을 사용한다. 오프셋을 사용하여, 위치들로부터 변위되지 않았다면 그에 저장되었을 위치들로부터 변위된 메모리 어레이 내 위치들에 섹터들이 저장된다. 오프셋은 블록 단위로 구현될 수 있 다. 따라서, 메모리 어레이의 특정 블록에 맵핑되는 일 범위의 논리 어드레스들(논리 블록)에 변경은 없으며, 오프셋은 블록 내에 데이터가 어떻게 배열되는가에만 영향을 미친다. 그러므로, 데이터 한 부분으로부터 다른 부분(예를 들면, 호스트가 테스트 이유로 클러스터 경계 위치들을 변경한 경우)으로 오프셋이 변경되어도, 서로 다른 부분들은 서로 다른 오프셋들을 가지고 기입될 수 있다.
클러스터 경계들은 일반적으로 논리 블록 경계들에 정렬되지 않기 때문에, 논리 블록은 일반적으로 클러스터 단편에서 시작하고 종료하며 중간에 다수의 완전한 클러스터들을 내포한다.
일 예에서, 논리 블록의 시작부터 클러스터 단편은 제1 페이지의 끝에 기입된다. 이어서, 완전한 클러스터들은 후속 페이지들에 정렬하여 기입된다. 논리 그룹의 끝부터 클러스터 단편은 제1 페이지에 기입되고, 이에 따라 제1 페이지를 채운다. 대안적으로, 논리블록의 시작부터의 클러스터 단편은 블록의 마지막 페이지에 기입될 수 있어, 완전한 클러스터들이 나머지 페이지들에 기입될 수 있고, 논리 블록의 끝부터 클러스터 단편은 마지막 페이지에 기입된다. 그러나, 어떤 메모리 설계들은 나중 기입동작동안 이전 기입된 데이터를 변조할 위험 때문에 1회 이상 페이지가 기입되지 않게 한다. 또한, 어떤 설계들은 비순차적으로 페이지들이 채워지지 않게 한다.
또 다른 예에서, 논리블록의 시작부터 클러스터 단편은 스크래치 패드 블록에 혹은 저장될 블록 밖의 다른 위치에 저장된다. 다음에 오는 완전한 클러스터들은 정렬되어 블록의 페이지들에 저장된다. 마지막 클러스터 단편은 스크래치 패드 블록으로부터 카피되는 논리블록의 시작부터 클러스터 단편과 함께 블록의 마지막 페이지에 기입된다. 이 방법은 단지 1회 각 페이지가 기입되어 페이지들이 순차로 기입되게 한다.
본 발명의 기술들은 한 소거블록인 블록 혹은 메타블록을 형성하기 위해 링크되는 복수의 소거블록들을 포함하는 블록에 대해 사용될 수 있다. 기술들은 각종 크기들의 클러스터들에 적용될 수 있고 클러스터 크기가 페이지 크기와 동일한 경우로 한정되지 않는다.
도 1a는 메모리 제어기 및 메모리 어레이 집적회로들을 포함하는 메모리 시스템도이다.
도 1b는 도 1a의 메모리 시스템과 함께 동작하는 호스트 시스템도이다.
도 2는 도 1a의 메모리 어레이 구성예이다.
도 3는 도 1a의 메모리 어레이에 저장되는 오버헤드 데이터를 가진 호스트 데이터 섹터의 예이다.
도 4는 도 1a의 메모리 어레이의 제2 구성예이다.
도 5는 도 1a의 메모리 어레이의 제3 구성예이다.
도 6은 도 1a의 메모리 어레이의 제3 구성예의 확장이다.
도 7은 도 1a와 같이 메모리 어레이에 저장되는 데이터에 대한 논리단위들과 물리적 위치들간의 대응을 도시한 것이다.
도 8a는 본 발명의 실시예에 따라 메모리 어레이에 저장되는 데이터에 대한 논리단위들과 물리적 위치들간의 대응을 도시한 것이다.
도 8a는 도 8a의 예에서 논리-물리적 맵핑에서 오프셋의 작용을 도시한 것이다.
도 9a는 본 발명의 또 다른 실시예에 따라 메모리 어레이에 저장되는 데이터에 대한 논리단위들과 물리적 위치들간의 대응을 도시한 것이다.
도 9a는 도 9a의 예에서 논리-물리적 맵핑에서 오프셋의 작용을 도시한 것이다.
메모리 구조 및 이들의 동작
먼저 도 1a를 참조하면, 플래시 메모리는 메모리 셀 어레이 및 제어기를 포함한다. 도시된 예에서, 2개의 집적회로 디바이스들(칩들)(11, 13)은 메모리 셀 어레이(15) 및 각종 논리회로들(17)을 포함한다. 논리회로들(17)은 데이터, 명령 및 상태회로들을 통해 별도의 칩 상에 제어기(19)와 인터페이스하고, 어레이(13)에 어드레싱, 데이터 전송 및 감지, 및 그 외 지원을 제공한다. 메모리 어레이 칩들의 수는 제공된 저장용량에 따라, 1내지 다수개일 수 있다. 메모리 셀 어레이는 단일 칩 상에 놓여질 수도 있고, 혹은 복수의 칩들 상에 메모리 셀들로 구성될 수도 있다. 대안적으로 제어기 및 부분 혹은 전체 어레이가 단일 집적회로 칩에 조합될 수 있지만 현재는 경제적 대안이 아니다.
전형적인 제어기(19)는 마이크로프로세서(21), 주로 펌웨어를 저장하는 독출전용 메모리(ROM)(23) 및 주로 메모리 칩들(11, 13)에 기입 혹은 이들로부터 독출 되는 사용자 데이터의 일시적 저장을 위한 버퍼 메모리(RAM)(25)를 포함한다. 버퍼 메모리(25)는 휘발성 혹은 비휘발성 메모리일 수 있다. 회로들(27)은 메모리 어레이 칩(들)과 인터페이스하고 회로들(29)은 접속부(31)를 통해 호스트와 인터페이스한다.
도 1a의 메모리의 접속부(31)는 호스트 시스템의 접속부(31')와 짝을 이루며, 이의 예가 도 1b에 있다. 도 1a의 호스트와 메모리간 데이터 전송들은 인터페이스 회로들(35)을 통해서 행해진다. 전형적인 호스트는 마이크로프로세서(37), 펌웨어 코드를 저장하기 위한 ROM(39) 및 RAM(41)을 포함한다. 그 외의 회로들 및 서브시스템들(43)은 흔히 특정 호스트 시스템에 따라, 고용량 자기 데이터 저장 디스크 드라이브, 키보드용 인터페이스 회로들, 모니터 등을 포함한다. 이러한 호스트들의 몇 예들은 데스크탑 컴퓨터, 랩탑 컴퓨터들, 휴대 컴퓨터들, 팜탑 컴퓨터들, PDA들, MP3 및 그 외 다른 오디오 플레이어들, 디지털 카메라들, 비디오 카메라들, 전자 게임기들, 무선 및 유선 전화 디바이스들, 자동응답기들, 음성 레코더들, 네트워크 라우터들 및 등을 포함한다.
도 1a의 메모리는 도 1b의 호스트에 착탈가능하게 연결될 수 있는 형태로 제어기 및 이의 모든 메모리 어레이 회로 디바이스들을 내장한 소형의 내장된 카드로서 구현될 수 있다. 즉, 서로 짝을 이루는 접속부들(31, 31')은 카드를 분리시켜 다른 호스트에 옮길 수 있게 하거나 또 다른 카드를 호스트에 연결함으로써 대치되게 한다. 대안적으로, 메모리 어레이 디바이스들은 제어기 및 접속부(31)를 내장한 카드와 전기적 및 기계적으로 연결될 수 있는 별도의 카드 내 내장될 수도 있다. 또 다른 대안으로서, 도 1a의 메모리는 도 1b의 호스트 내 내장될 수 있는데, 접속부들(31, 31')은 영구적인 것이다. 이 경우에, 메모리는 일반적으로 다른 성분들과 함께 호스트의 엔클로저 내에 내장된다. 또 다른 대안으로서, 메모리 칩(11)과 같은 메모리 칩은 메모리 제어기 없이 호스트 시스템의 접속부(31')에 직접 연결할 수 있다. 이 경우, 메모리 제어기의 기능들은 호스트 시스템의 마이크로프로세서(37)에 의해 수행된다.
도 2는 메모리 셀들이 소거블록들로 그룹을 이룬 메모리 어레이의 부분을 도시한 것으로, 각 소거 블록 내 셀들은 통상적으로 동시에 단일 소거동작의 일부로서 함께 소거될 수 있다. 소거블록은 소거의 최소단위이다.
도 2의 개개의 메모리 셀 소거블록들의 크기는 다양할 수 있으나 상업적으로 실시되는 한 형태는 개개의 소거블록 내 단일 섹터의 데이터를 포함한다. 이러한 데이터 섹터의 내용들이 도 3에 도시되었다. 사용자 데이터(51)는 통상적으로 512바이트이다. 사용자 데이터(51) 외에도 사용자 데이터로부터 계산된 EOC(53), 섹터 데이터 및/또는 섹터가 프로그램되는 소거 블록에 관계된 파라미터들(55) 및 파라미터들(55)로부터 계산된 ECC(57)를 포함하는 오버헤드 및 포함될 수도 있을 그 외 어떤 다른 오버헤드 데이터가 있다. 대안적으로, 단일 ECC는 사용자 데이터(51) 및 파라미터들(55)로부터 계산될 수도 있다.
파라미터들(55)은 소거블록이 경험하는 프로그램/소거 사이클들의 수에 관계된 량을 포함할 수 있는데, 이 량은 각 사이클 혹은 어떤 회수의 사이클들 후에 업데이트된다. 이러한 경험 량이 웨어 레벨링 알고리즘에서 사용될 때, 모든 소거블 록들의 사용(웨어)을 균등하게 되도록 논리 블록 어드레스들은 서로 다른 물리적 블록 어드레스들로 규칙적으로 재-맵핑된다. 경험 량의 또 다른 사용은 전압들 및 서로 다른 소거블록들이 경험하는 사이클 수의 함수로서 프로그래밍, 독출 및/또는 소거의 다른 파라미터들을 변경하는 것이다.
파라미터들(55)은 "회전"이라고도 하는, 메모리 셀들의 저장상태들 각각에 할당된 비트 값들의 표시를 포함할 수 있다. 이것은 웨어 레벨링에 잇점있는 효과를 갖는다. 상태를 표시하는 파라미터들(55)에 하나 이상의 플래그들이 포함될 수도 있다. 소거블록을 프로그래밍 및/또는 소거하는데 사용할 전압레벨들의 표시들은 파라미터들(55) 내 저장될 수 있으며, 이들 전압들은 소거블록이 경험하는 사이클 수 및 그 외 인자들이 변경될 때 업데이트된다. 파라미터들(55)의 다른 예들은 소거블록 내 임의의 결함이 있는 셀들의 식별, 이 물리적 블록에 맵핑된 데이터의 논리 어드레스 및 주 소거블록이 결함이 있는 경우 임의의 대치 소거블록의 어드레스를 포함한다. 임의의 메모리 시스템에 사용되는 파라미터들(55)의 특정 조합은 설계에 따라 다양할 것이다. 또한, 오버헤드 데이터 일부 혹은 전부는 사용자 데이터를 포함하거나 오버헤드 데이터가 포함된 소거블록에서가 아니라, 이러한 기능에만 사용되는 소거블록에 저장될 수 있다.
도 4의 복수 섹터 소거블록은 도 2의 단일 데이터 섹터 소거블록과는 다르다. 여전히 소거의 최소단위인 예로서의 소거블록(59)은 4개의 페이지 0-3을 포함하고, 그 각각은 최소 단위의 프로그래밍이다. 하나 이상의 호스트 섹터들의 데이터는 통상적으로 섹터의 데이터로부터 계산된 적어도 ECC를 포함하는 오버헤드와 함께 각 페이지에 저장되고 도 3의 데이터 섹터 형태일 수 있다.
전체 소거 블록의 데이터를 재기입하는 것은 새로운 데이터를 소거 블록 풀(pool)의 사용가능 소거블록에 프로그래밍하는 것을 수반하며, 이때 원 소거블록은 소거되어 소거 풀에 놓여진다. 소거블록의 모든 페이지들 미만의 데이터가 업데이트될 때, 업데이트된 데이터는 통상적으로 소거된 블록 풀로부터 소거블록의 한 페이지에 저장되고 나머지 변경되지 않은 페이지들 내 데이터는 원 소거블록으로부터 새로운 소거블록에 카피된다. 이어서 원 소거블록이 소거된다. 이러한 큰 블록 관리 기술의 변형예는 원 소거블록으로부터의 데이터를 이동시키거나 이를 소거함이 없이, 업데이트된 데이터를 한 페이지의 또 다른 소거블록에 기입하는 것을 포함한다. 이에 따라 복수의 페이지들은 동일 논리 어드레스를 갖게 된다. 가장 최근의 페이지의 데이터는 섹터 혹은 페이지 오버헤드 데이터에 필드로서 기록되는 프로그래밍의 시간과 같은 어떤 편리한 기술에 의해 확인된다.
다른 복수섹터 소거블록 구성을 도 5에 도시하였다. 여기서, 총 메모리 셀 어레이는 물리적으로 2개 이상의 플레인들로 분할되며 4개의 플레인들 0-3이 도시되었다. 각 플레인은 다른 플레인들에 대부분 무관하게 동작할 수 있도록 자신의 데이터 레지스터들, 감지 증폭기들, 어드레싱 디코더들 등을 구비하는 메모리 셀들의 서브어레이이다. 모든 플레인들은 단일 집적회로 디바이스 상에 혹은 복수의 디바이스들 상에 제공될 수 있고 예에서는 하나 이상의 구별되는 집적회로 디바이스들로부터 각 플레인을 형성하고 있다. 도 5의 예의 시스템에서 각 소거블록은 16개의 페이지들 P0-P15를 포함하고, 각 페이지는 하나, 혹은 2이상의 호스트 데이터 섹터들 및 어떤 오버헤드 데이터의 용량을 갖는다.
또 다른 메모리 셀 구성이 도 5에 도시되었다. 각 플레인은 많은 수의 소거블록들을 포함한다. 동작의 병행도를 증가시키기 위해서, 칩의, 혹은 서로 다른 칩들로부터의 서로 다른 플레인들 내 소거블록들은 논리적으로 링크되어 메타블록들을 형성한다. 한 이러한 메타블록이 도 6에 도시되었다. 각 메타블록은 논리적으로 어드레싱될 수 있고 메모리 제어기는 개개의 메타블록들을 형성하는 소거블록들을 할당하고 이를 관리한다. 호스트 시스템은 한 스트림의 섹터들을 형태로 데이터를 제공한다. 이 한 스트림의 섹터들은 논리 블록들로 분할된다. 여기서, 논리 블록은 메모리 어레이의 메타블록에 내포되어 있으므로 동일 수의 섹터들의 데이터를 내포하는 논리적 데이터 단위이다. 메모리 제어기는 각 논리블록이 저장되는 위치의 기록을 관리한다. 예를 들면, 도 6의 이러한 논리 블록(61)은 메타블록을 구성하는 블록들의 물리적 블록 번호(PBN)로 제어기에 의해 맵핑된 논리 블록 어드레스들(LBA)에 의해 확인된다. 메타블록의 모든 블록들은 함께 소거되며, 각 블록으로부터 페이지들은 일반적으로 동시에 프로그램되고 독출된다. 병렬로 프로그램된 메타블록의 서로 다른 소거블록들로부터의 한 그룹의 페이지들은 메타페이지로 간주될 수 있다. 이것은 메타블록 구조를 사용하는 메모리 시스템의 프로그래밍 단위로 간주될 수 있다. 메타블록의 복수의 소거 블록들에 걸쳐 확장하는 큰 메타페이지들을 사용한 데이터의 프로그래밍은 높은 병행도를 제공하며 이에 따라 높은 레이트의 데이터 저장을 할 수 있게 한다.
메타블록 구조를 사용하는 시스템들에서, 메타블록을 형성하는 한 그룹의 소 거블록들은 단일 소거블록으로서 취급될 수 있고 간단히 블록이라 할 수도 있다. 유사하게, 메타블록의 소거블록들에 걸쳐 확장하는 한 그룹의 페이지들은 단일 페이지(혹은 메타페이지)로서 취급될 수 있다. 이 출원에 기술된 어떤 기술들은 소거블록들을 링크시켜 메타블록들을 형성하는 구조들 및 소거블록들을 링크하지 않고 메타블록들을 형성하는 구조들에서 수행될 수 있다. 이에 따라, 이 출원에서 사용되는, "블록"이라는 용어는 단일 소거블록, 혹은 메타블록을 형성하기 위해 링크된 일 그룹의 소거블록들을 지칭할 수 있다. 유사하게, 이 출원에서 사용되는 "페이지"라는 용어는 개개의 소거블록의 페이지, 혹은 메타블록의 소거블록들에 걸쳐 확장하는 메타페이지를 지칭할 수 있다.
도 7은 메타페이지당 4개의 섹터들을 갖는 메타블록(72)에 저장된 클러스터들의 오정렬의 예를 도시한 것이다. 데이터는 각 클러스터가 4개의 섹터를 포함하는 것으로, 일련의 클러스터들로서 호스트로부터 수신된다. 클러스터 K는 2개의 논리 블록들에 걸쳐 확장한다. 이에 따라, 클러스터 K의 일부(섹터들 X-3 내지 X-1)은 제1 논리 블록(74)에 있는 반면, 클러스터 K의 일부(섹터 X)는 제2 논리 블록(76)에 있다. 섹터 X는 제2 논리블록의 제1 섹터이기 때문에, 메타블록(72)의 제1 페이지(페이지 0)에 저장된다. 클러스터 K의 기입이 완료된 것을 나타내는 신호가 섹터 X가 기입될 때 호스트에 보내질 수 있다. 이어서 호스트는 클러스터 K+1을 보낼 수 있다. 클러스터 K+1의 제1 부분(섹터들 X+1, X+2, X+3)이 섹터 X의 페이지 0에 저장된다. 그러나, 페이지는 단지 4섹터들의 데이터만을 저장하기 때문에, 섹터 X+4는 다음 페이지(페이지 1)에 저장되어야 한다. 섹터 X+4는 페이지 1에 기입 되기 전에 버퍼에 저장될 수도 있다. 이에 따라, 제2 페이지 기입동작은 클러스터 K+1을 저장하는데 필요하다. 유사하게, 연이은 클러스터들 K+2 내지 K+N/4 각각은 클러스터들과 페이지들간 오정렬에 기인하여 각 클러스터가 두 페이지들로 확장하기 때문에 2회의 기입동작들을 요구한다. 논리 블록(76)(클러스터 K+N/4)의 마지막 클러스터는 제3 메타블록(78)의 제1 페이지에 부분적으로 기입된다. 이에 따라, 오정렬은 후속의 메타블록들에서 계속된다. 각 클러스터는 이 예에서 2회의 기입동작들을 요구하기 때문에, 데이터를 저장하는 시간은 단일 기입동작에서 각 클러스터가 기입되었을 경우에 걸릴 수도 있을 시간보다 상당히 길 수 있다. 이 문제는 클러스터가 한 페이지와 동일한 량의 데이터를 포함하지 않는 경우 있을 수 있다. 예를 들면, 클러스터가 한 페이지보다 작다면 일부 클러스터들은 단일 페이지 기입될 수도 있으나 다른 것들은 2페이지로 확장한다. 클러스터가 한 페이지보다 크다면, 어떤 페이지들은 한 클러스터로부터의 데이터만을 내포할 수 있고 다른 것들은 두 클러스터들로부터의 데이터를 내포한다. 이에 따라, 한 페이지의 두 배인 클러스터는 3회의 기입동작들을 요구할 수도 있다.
도 8a는 본 발명의 실시예에 따라 메타블록(72)의 페이지들에 호스트 클러스터들을 정렬시키는 예를 도시한 것이다. 전과 같이, 호스트는 메모리에 저장을 위해서 데이터K 내지 K+4/4의 일련의 클러스터들을 순차적인 순서로 보낸다. 메모리는 함께 프로그램되고 소거될 수 있는 복수의 소거블록들로 메타블록이 구성되는 복수의 메타블록들을 포함한다. 메타블록에 대응하는 데이터 단위는 논리 블록이다. 데이터 K 내지 K+N/4의 클러스터들은 3개의 논리 블록들 74, 76, 78에 걸쳐 확 장한다. 클러스터 K의 섹터 X가 수신되었을 때, 메타블록(72)의 제1 페이지(페이지 0)에 저장된다. 섹터 X에 도시된 위치는 이것이 페이지 0 내 마지막 위치에 있음을 나타낸다. 이어서, 클러스터 K+1의 섹터들 X+1 내지 X+4가 수신되었을 때, 이들은 페이지 1에 저장된다. 클러스터 K+1은 페이지 1에 정렬되므로 클러스터 K와 클러스터 K+1간의 경계(섹터 X와 섹터 X+1간의 경계)는 페이지 0과 페이지 1간의 페이지 경계에 위치된다. 이에 따라, 클러스터 K+1의 시작은 페이지 1의 시작에서 시작하고 클러스터 K+1은 페이지 1에 정렬되는 것으로 간주된다. 이 예에서, 클러스터의 크기는 페이지의 크기와 동일하므로 클러스터 K+1은 클러스터 K+1의 끝이 페이지 1의 끝과 일치하여 페이지 1에 들어맞는다. 마찬가지로, 클러스터 K+2는 페이지 2에 정렬된다. 유사하게, 후속의 클러스터들 K+3 내지 K+N/4-1은 각각의 페이지들 3 내지 N/4-1에 정렬된다. 마찬가지로, 후속되는 클러스터들 K+3 내지 K+N/4-1은 페이지들 3 내지 N/4-1에 정렬된다. 클러스터 K+N/4-1를 페이지 N/4-1에 기입하는 것에 이어, 클러스터 K+N/4가 호스트로부터 수신된다. 섹터들 X+N-3, X+N-2 및 X+N-l은 섹터 X의 메타블록(72)의 제1 페이지(페이지 0)에 저장된다. 이에 따라, 메타블록(72)는 논리 블록(76)의 헤드로부터 부분적 클러스터와 논리 블록(76)의 테일로부터 부분적 클러스터를 내포하는 제1 페이지(페이지 0)을 갖는다. 메타블록의 다음 페이지들은 한 클러스터를 내포하므로 단지 1회의 기입동작만이 이들 페이지들 각각에 대해 요구된다. 이것은 어떤 종래 기술의 시스템들에 비해 메모리에 데이터의 보다 빠른 기입을 가능하게 한다.
이 예에서 오프셋은 현 명령의 제1 논리 어드레스와 논리 블록 내 제1 섹터 의 논리 어드레스간 차이로부터 계산될 수 있다. 이 오프셋을 계산하기 위한 식은 다음과 같다.
오프셋 = {(현 명령의 제1 논리 어드레스) mod (페이지당 섹터수)} - (페이지당 섹터수)
이에 따라, 도 8a의 예에서 계산은 다음과 같게 된다.
오프셋 = {(X-3) mod (4)}- 4 = 1-4 = -3
도 8b는 X=0인 경우 논리 블록(76)의 섹터들의 논리-물리 맵핑에서 오프셋으로부터 도 8a의 재정렬 방법을 도시한 것이다. 논리블록(76)(섹터 X)의 제1 논리 섹터를 메타블록(72) 내 제1 물리 어드레스에 기입하는 대신, 제1 논리섹터가 제4 물리 어드레스에 기입된다. 이것은 이 섹터의 맵핑에서 -3의 오프셋인 것으로 간주될 수 있고, 여기서 제로 오프셋은 제1 물리 위치로 제1 논리 섹터의 맵핑이다. 이것은 제1 물리 위치에 저장된 섹터가 섹터 N-3이기 때문에 N-3의 오프셋인 것으로 가주될 수도 있다. 후속의 섹터들은 메타블록(72)의 끝에 도달될 때까지 -3의 오프셋을 가지고 기입된다. 논리 블록(76)의 마지막 세 개의 섹터들 X+N-3, X+N-2 및 X+N-l은 메타블록(72)의 시작에 기입된다. 이들 섹터들은 메타블록의 논리 어드레스들이 랩-어라운드(wrap-around)하는(논리 블록의 제1 어드레스는 논리 블록의 마지막 어드레스에 연속하는 것으로 간주된다) 것으로 -3의 오프셋을 가지고 기입될 것으로 간주될 수도 있다. 이에 따라, 메타블록(72)에 저장된 데이터의 섹터들은 논리블록(76)의 오프셋을 사용하여 찾아질 수 있고 데이터의 섹터 단위로 인덱스하는 것이 전혀 필요하지 않다. 이러한 종류의 오프셋(혹은 페이지-태그)를 사용하여 메타블록들에 데이터의 저장은 2003년 12월 30일에 출원된 "Non-volatile memory and method with block management system" 명칭의 특허출원번호 10/750,155에 기술되어 있고, 이 출원은 참조문헌으로 여기 포함시킨다. 도 8a 및 도 8b의 예가 메타블록(72)의 시작에 저장할 논리블록(76)의 끝부터 랩-어라운드되는 3개의 섹터들(X+N-3, X+N-2, X+N-l)을 보이고 있으나, 이러한 식으로 랩-어라운드되는 섹터수는 1내지 3일 수 있다. 주어진 논리블록에 대한 오프셋의 크기는 페이지 내 섹터수가 1내지 1미만일 수 있다.
어떤 메모리 설계들은 블록의 동일 페이지에 복수회 기입동작들을 허영하지 않는다. 이러한 유형의 메모리들에서, 일단 데이터가 페이지에 기입되었으면, 이 페이지는 후속하는 프로그래밍이 저장된 데이터를 변조시킬 수도 있을 것이기 때문에 그에 추가의 데이터가 기입되지 않게 한다. 이러한 유형의 메모리들에서, 섹터 X를 프로그램한 후에, 페이지 0 내 섹터들 X+N-3, X+N-2, X+N-l의 후속되는 프로그래밍은 가능하지 않을 수 있으므로 도 8a에 도시한 저장방식은 가능하지 않을 수도 있을 것이다. 또한, 어떤 설계들에서, 페이지들은 순차적인 순서로만 기입될 수도 있다. 예를 들면, 페이지 0이 먼저 기입되고, 이어서 페이지 1, 페이지 2 등이 기입된다. 페이지 1이 기입된 후에 페이지 0은 이것이 순차적이지 않기 때문에 기입되지 않는다. 이러한 설계에서, 페이지 0에 임의의 데이터의 기입은 페이지 1 내지 N/4-1를 기입한 후에는 가능하지 않을 수 있다.
도 9a는 클러스터들 및 페이지들을 정렬시키는 정렬방법을 구현하기 위해 스크래치 패드 블록(91)을 사용하는 본 발명의 또 다른 실시예를 도시한 것이다. 스 크래치 패드 블록의 사용은 본원과 동일자에 출원된 "Scratch pad block" 명칭의 미국특허출원에 기재되어 있고, 이를 참조문헌으로 여기 포함시킨다. 이전의 예에서처럼, 호스트 데이터의 일련의 클러스터들(클러스터들 K 내지 K+N/4)은 메모리 어레이에 저장을 위해 호스트로부터 수신된다. 클러스터 K는 제1 논리 블록(74)으로부터의 섹터들 X-3 내지 X-1과 제2 논리블록(76)으로부터의 섹터 X를 포함한다. 섹터들 X-3 내지 X-1은 제1 논리블록(74)에 연관된 메타블록(도시생략)에 저장된다. 섹터 X는 수신되었을 때 즉시로 메타블록(72)에 저장되지 않는다. 대신에, 섹터 X는 다른 위치에 저장된다. 이 예에서, 위치는 스크래치 패드 블록(91)에 있다. 이것은 비휘발성 메모리에 각종 데이터의 단기간 저장을 위해 사용된다. 섹터 X는 비휘발성 메모리에 저장되기 때문에, 메모리 시스템에서 파워가 제거되어도 유실되지 않을 것이다. 대안적으로, 섹터 X는 어떤 다른 비휘발성 메모리에 저장되거나, 아니면 허용된다면 휘발성 메모리에 저장된다. 섹터 X가 스크래치 패드 블록(91)에 저장된 후, 클러스터 K+1이 수신된다. 클러스터 K+1은 페이지 0에 저장되고 페이지 0에 정렬된다. 이에 따라, 클러스터 K와 클러스터 K+1간의 경계는 페이지 0의 시작 경계와 일치한다. 클러스터의 크기와 페이지의 크기가 이 예에서 같기 때문에, 클러스터 K+1은 페이지 0에 정확하게 들어맞고 클러스터 K+1의 끝은 페이지 0의 끝과 일치한다. 유사하게, 후속의 클러스터들 K+2 내지 K+N/4-1는 페이지지 하나씩 기입된다. 클러스터 K+N/4가 수신되었을 때, 논리 블록(76)으로부터 오는 클러스터 K+N/4로부터의 3개의 섹터들(섹터들 X+N-3, X+N-2, X+N-l)은 스크래치 패드 블록(91)으로부터 카피되는 섹터 X와 함께 페이지 N/4-1에 기입된다. 이에 따라, 이 예에서, 메타블록(72)의 마지막 페이지는 논리 블록(76)의 헤드로부터 클러스터 단편과 논리 블록(76)의 테일로부터 클러스터 단편을 내포한다. 페이지들의 순차적 기입을 요구하지 않으며 동일 페이지에 복수회 기입들을 허용하는 메모리들에서, 섹터 X는 다른 위치에 저장됨이 없이 수신시 페이지 N/4-1에 기입될 수도 있을 것이다.
이 예에 있어서 오프셋은 클러스터 경계와 페이지 경계간의 차이로부터 계산될 수 있다. 이것은 현재 명령의 제1 논리 어드레스와 논리 블록의 시작의 논리 어드레스간의 차이로부터 발견될 수 있다. 일 예에서 오프셋은 다음으로부터 계산될 수 있다.
오프셋 = (현 명령의 시작 논리 어드레스) mod (페이지당 섹터수)
이에 따라서, 도 9a에서, 현 명령의 제1 논리 어드레스는 X-3이다. 따라서, 오프셋은 다음과 같다.
Offset = (X-3) mod (4)
= (X-4+1) mod (4)
= 1
정렬을 위한 오프셋은 이 예에서 1 내지 3 섹터일 수 있다. 일반적으로, 오프셋은 제로 내지(클러스터들이 논리 블록 경계들과 일치하는 경계위치들에서 수신된다면) 페이지당 섹터수의 최대에서 1미만일 수 있다.
도 9b는 X=0인 경우 논리블록(76)의 논리-물리 맵핑에서 오프셋으로서 도 9a의 재정렬 방법을 도시한 것이다. 논리블록(76)의 제1 논리섹터(섹터 X)를 메타블 록(72) 내 제1 물리 어드레스에 기입하는 대신에, 제1 논리 섹터는 마지막 물리 어드레스에 기입된다. 이것은 이 섹터의 맵핑에서 1의 오프셋인 것으로 간주될 수 있고, 여기서 메타블록의 어드레스는 랩-어라운드된다(논리 블록(76)의 제1 어드레스가 논리블록(76)의 마지막 어드레스에 연속인 것으로 간주됨). 모든 다른 섹터들은 1의 오프셋을 가지고 기입된다. 따라서, 제2 섹터가 수신되면, 섹터 X+1은 제 물리 어드레스로 가며, 등등이 된다. 메타블록(72)에 저장된 데이터는 논리블록(76)에 대한 오프셋을 사용하여 발견될 수 있고 데이터를 섹터단위로 인덱스는 요구되지 않는다. 이러한 종류의 오프셋(혹은 페이지-태그)을 사용한 메타블록들에 데이터의 저장은 특허출원번호 10/750,155에 기술되어 있다.
도 8 및 도 9의 예들은 각각 4개의 섹터들을 갖는 클러스터들 및 페이지들을 도시한 것이다. 그러나, 기술된 원리들은 여러 크기들의 클러스터들 및 페이지들에 적용될 수 있다. 클러스터는 복수의 페이지들로 확장하고 페이지들에 정렬될 수 있다. 예를 들면, 8섹터의 클러스터는 도 10에 도시된 바와 같이 4섹터를 갖는 페이지들에 정렬될 수 있다. 도 10의 클러스터들은 2페이지의 메타블록(72)을 완전히 점유하고 여기서 이들은 이들이 정렬되어 있지 않으면 3페이지에 걸쳐 확장할 수도 있을 것이다. 따라서, 정렬은 클러스터당 기입 회수를 3에서 2로 감축시킴으로써 효율을 향상시킬 수 있다. 이 예에서, 모든 클러스터 경계는 페이지 경계와 일치하나, 모든 페이지 경계가 클러스터 경계와 일치하는 것은 아니다.
클러스터들은 페이지보다 작을 수 있고 페이지에 정렬될 수 있다. 예를 들면, 클러스터는 16 섹터를 내포할 수 있고 페이지는 64 섹터를 내포할 수 있다. 정 렬되지 않았다면, 일부 클러스터들은 2페이지에 걸쳐 확장할 수 있어 2회 기입동작을 요구할 수 있다. 정렬에 의해, 이들 클러스터들은 단일 페이지에 기입되므로 효율을 향상시킨다. 이 예에서, 모든 페이지 경계는 클러스터 경계와 일치한 모든 클러스터 경계가 페이지 경계와 일치하는 것은 아니다.
논리블록에 대한 오프셋은 기입되는 데이터의 시작 어드레스와 논리블록의 시작 어드레스간 차이로부터 도출될 수 있다. 논리블록의 시작은 페이지의 시작일 것이며 호스트는 클러스터의 시작에서 데이터 기입을 시작한다. 따라서, 이들 두 어드레스들간 차이는 클러스터 경계와 논리블록 경계간 차이를 준다. 오프셋은 이 차이가 페이지당 섹터수로 나누었을 때 나머지로부터 계산될 수 있다. 나머지가 제로라면(차이는 정수개의 페이지), 경계들은 정렬된 것으로 간주될 수 있다. 논리 블록의 오프셋을 정하는 한 방법은 논리블록의 제1 물리 어드레스에 저장된 섹터의 논리 어드레스를 기록하는 것이다.
오프셋은 메모리에 저장된 호스트 데이터의 제1 섹터의 논리 어드레스로부터 도출될 수 있다. 통상적으로, DOS 시스템에서, 논리 어드레스 공간의 제1 부분은 부트섹터, 하나 이상의 파일할당 테이블들(FAT), 루트 디렉토리 및 서브디렉토리들과 같은 시스템 정보에만 사용된다. 호스트 데이터는 시스템 정보 바로 다음에 저장되므로 제1 클러스터는 시스템 정보의 끝 다음에 시작한다. 따라서, 시스템 정보의 논리 어드레스 범위가 알려지면, 제1 클러스터의 시작의 위치가 얻어질 수 있다. 시스템 정보의 논리 어드레스 범위는 FAT(혹은 FAT들)의 위치들 및 디렉토리들을 기록하는 부트섹터로부터 발견될 수 있다. 부트섹터는 클러스터당 섹터수를 나 타내므로 모든 클러스터 경계 위치들은 부트섹터로부터 얻어질 수 있다.
어떤 시스템들에서, 메모리 어레이는 어떤 면들에서 개별적으로 동작할 수 있는 2이상의 분할들로 분할될 수 있다. 어레이의 개개의 분할은 이 분할에 대해 시스템 정보를 위한 논리 어드레스 공간의 전용 부분을 가질 수 있다. 이러한 시스템들에서, 다른 오프셋은 분할에 저장된 호스트 데이터의 제1 섹터의 위치에 따라 서로 다른 분할들에 대해 도출될 수 있다. 따라서, 동일 메모리 어레이 내 서로 다른 분할들은 서로 다른 오프셋들로 동작하므로 각 분할은 클러스터들이 페이지들에 정렬되어 데이터를 저장한다.
본 발명의 일 실시예에 따라, 논리 블록 어드레스 포맷은 논리블록의 오프셋(페이지 태그)를 포함할 수 있다. 따라서, 메타블록 내 섹터의 물리적 위치는 사전 블록 독출없이 결정될 수 있다.
각각의 논리블록마다 개별적 오프셋이 관리되므로, 서로 다른 논리 블록들은 서로 다른 오프셋들을 가질 수 있다. 호스트가 클러스터 경계위치들을 변경할 때 새로운 데이터에 대해 정렬이 변경된다. 다른 메타블록들에 이전에 기입된 데이터는 새로운 정렬로 재기입될 필요가 없기 때문에 교란되지 않은 채로 있을 수 있다. 한 논리블록에서 오프셋의 변경은 오프셋이 대응 논리블록의 논리 어드레스 범위 내 섹터들에만 영향을 미치기 때문에 이웃 논리블록들의 오프셋들에 영향을 미치지 않는다. 동일 논리 어드레스 범위는 오프셋이 그 범위 내에서만 정렬을 제공하여 특정 논리 블록에 맵핑된 상태에 있게 된다.
다른 실시예에서, 위에 기술된 원리들은 논리블록의 단위에 적용하는 대신 논리 그룹의 단위에 적용될 수 있다. 이러한 실시예에서, 오프셋은 논리 블록이 아니라 논리 그룹에 대해 계산된다. 논리 그룹은 메모리 어레이의 한 소거블록의 데이터와 동일한 데이터를 유지하는 데이터의 단위이다. 따라서, 논리블록은 정수개의 논리 그룹들을 내포한다. 논리 그룹들의 상세한 설명은 2004년 5월 7일에 출원된 "Data boundary management" 명칭의 미국특허출원 10/841,118에 제공되어 있고 이 특허출원을 참조문헌으로 여기 포함시킨다. 어떤 메모리 시스템들에서, 메모리 내 데이터의 물리 위치는 논리그룹의 단위들로 추적될 수 있다. 이러한 메모리 시스템들에서, 오프셋은 각 논리 그룹에 대해 도출될 수 있다. 이러한 시스템들에서 논리 그룹 어드레스 포맷은 그 논리 그룹에 대한 오프셋을 포함할 수 있고 서로 다른 논리 그룹들은 서로 다른 오프셋들을 가질 수 있다. 다른 실시예들에서, 오프셋은 블록 내보다 데이터를 덜 갖는 단위들에 대해 유지될 수 있다. 예를 들면, 반, 1/4, 혹은 블록의 데이터의 이외 어떤 다른 분수를 포함하는 단위가 사용될 수 있고 다른 오프셋이 각 단위바다 도출될 수 있다. 이에 따라 데이터는 서로 다른 크기들의 단위들로 정렬될 수 있다.
어떤 메모리 시스템들에서 오프셋들은 여러 가지 이유로 제공된다. 예를 들면, 미국특허출원번호 10/750,155에서, 오프셋은 데이터의 섹터들을 먼저 카피함이 없이, 수신된 데이터가 신속하게 기입될 수 있게 한다. 이러한 오프셋들은 데이터 저장을 위해 사용되는 최종 오프셋 값을 얻기 위해 본 발명에 따라 계산된 오프셋들과 조합될 수 있다. 예를 들면, 논리블록의 논리 어드레스 범위 중간에 논리 어드레스를 갖는 데이터가 수신된 경우, 데이터는 제1 오프셋에 따라 메타블록의 시 작부분에 기입될 수 있다. 그러나, 추가의 오프셋은 데이터를 페이지 경계들에 정렬시키므로 최종 오프셋은 두 성분들로 구성된다.
전술한 바는 구체적인 실시예들을 기술한 것이지만, 다양한 수정, 대안적 구조 및 등가물들이 사용될 수 있다. 그러므로, 위의 설명 및 예시는 청구항들에 의해 정의되는 본 발명의 범위를 한정하는 것으로 취해져서는 안 된다.

Claims (21)

  1. 호스트에 접속된 비휘발성 메모리 어레이에 어드레스 지정 가능한 데이터 패킷들을 저장하는 방법에서, 상기 메모리 어레이는 소거블록 단위들을 가지며, 상기 메모리의 한 블록은 한 논리 블록의 데이터를 유지하며, 어드레스 지정가능의 데이터 패킷들로 형성된 논리 블록은 제1 어드레스 지정가능 데이터 패킷에서 마지막 어드레스 지정가능 데이터 패킷까지 순차로 확장하며, 데이터는 클러스터 단위들로 상기 호스트에 의해 할당되고, 클러스터는 복수의 어드레스 지정가능 데이터 패킷들을 포함하는 것으로, 상기 방법은,
    블록에 저장을 위해 호스트로부터 수신된 데이터에 대해 논리 블록경계와 클러스터 경계간에 오프셋을 결정하는 단계;
    상기 오프셋에 따라 상기 수신된 데이터의 복수의 클러스터들을 기입하기 위해 상기 블록 내 물리적 위치들을, 페이지 경계에 개개의 클러스터 경계가 놓여지게 되도록 선택하는 단계; 및
    상기 제1 어드레스 지정가능 데이터 패킷을 포함하는 제1 부분 클러스터 및 상기 마지막 어드레스 지정가능 데이터 패킷을 포함하는 마지막 부분 클러스터를 상기 블록의 페이지에 기입하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 부분 클러스터 및 상기 마지막 부분 클러스터는 상기 블록의 마지막 페이지에 기입되는, 방법.
  3. 제2항에 있어서, 상기 제1 부분 클러스터는 상기 블록의 마지막 페이지에 기입하기 전에 상기 메타블록 밖에 저장되는, 방법.
  4. 제1항에 있어서, 상기 제1 부분 클러스터 및 상기 마지막 부분 클러스터는 상기 블록의 제 페이지에 기입되는, 방법.
  5. 제4항에 있어서, 상기 제1 부분 클러스터는 상기 블록의 제1 페이지에 직접 저장되며 이어서 상기 마지막 부분 클러스터는 상기 블록의 제1 페이지에도 저장되는, 방법.
  6. 제1항에 있어서, 상기 블록은 복수의 페이지들로 구성되며 상기 제1 및 마지막 부분 클러스터들을 내포한 페이지를 제외하고 상기 블록의 모든 페이지들은 페이지 경계에 클러스터 경계를 갖고 저장된 클러스터들을 내포하는, 방법.
  7. 클러스터는 호스트에 의해 함께 할당된 복수의 어드레스 지정가능 데이터 단위들을 내포하는 것으로서, 호스트로부터 수신된 데이터의 클러스터들을 페이지의 프로그래밍 단위 및 소거블록 단위를 구비한 비휘발성 메모리 어레이에 저장하는 방법에서, 블록은 복수의 페이지들을 내포하는 것으로, 상기 방법은,
    호스트로부터 복수의 데이터 클러스터들을 수신하는 단계;
    클러스터 경계들의 위치들에 관계없이 상기 메모리 어레이의 블록들에 상기 복수의 클러스터들을 맵핑하는 단계;
    클러스터 경계들과 맵핑된 블록 경계들 간에 오프셋을 도출하는 단계; 및
    블록들에 클러스터들의 맵핑을 수정함이 없이, 페이지 경계들에서 클러스터들간 경계들이 생기도록, 상기 도출된 오프셋에 따라, 블록에 맵핑되는 클러스터들 및 클러스터들의 부분들을 상기 블록 내 페이지들에 저장하는 단계를 포함하는, 방법.
  8. 제7항에 있어서, 상기 블록에 맵핑되는 상기 클러스터들의 부분들은 제1 클러스터의 제1 부분 및 제2 클러스터의 제2 부분이며, 상기 제1 및 제2 부분은 상기 블록의 페이지에 함께 저장되는, 방법.
  9. 제8항에 있어서, 상기 블록에 맵핑되는 상기 클러스터들 및 클러스터들의 부분들은 제1 논리 어드레스에서 마지막 논리 어드레스로 확장하는 순차적인 데이터이며, 상기 제1 부분은 상기 제1 논리 어드레스를 포함하며 상기 제2 부분은 상기 마지막 논리 어드레스를 포함하는, 방법.
  10. 제7항에 있어서, 상기 블록에 대한 상기 오프셋을 나타내는 값이 기록되는, 방법.
  11. 비휘발성 메모리 어레이의 메타블록들에 기정의된 클러스터 경계들을 내포하는 데이터를 저장하는 방법에서, 메타블록은 병렬로 프로그램되고 소거되는 2이상의 소거블록들을 포함하며, 소거블록은 상기 비휘발성 메모리 어레이의 최소 소거단위들이며, 논리 블록은 한 메타블록 내 데이터와 동일한 데이터로 구성되며, 논리그룹은 한 소거블록 내 데이터와 동일한 데이터로 구성되는 것으로서, 상기 방법은,
    비휘발성 메모리에 저장하기 위한 것이고 복수의 순차적인 어드레스 지정가능 데이터 패킷들로 구성되는 데이터를 수신하는 단계;
    제1 클러스터로부터 제1 하나 이상의 어드레스 지정가능 데이터 패킷들을 제1 위치에 저장하는 단계로서, 상기 제1 클러스터는 제1 논리 그룹으로부터 상기 제1 하나 이상의 어드레스 지정가능 데이터 패킷들 및 제2 논리 그룹으로부터 제2 하나 이상의 어드레스 지정가능 데이터 패킷들을 내포하는 것인, 단계;
    페이지 경계들이 클러스터 경계들에서 생기도록, 제1 메타블록의 페이지들에 후속의 순차적인 어드레스 지정가능 데이터 패킷들을 저장하는 단계;
    상기 제1 하나이상의 어드레스 지정가능 데이터 패킷들을 가진 마지막 클러스터로부터 제3 의 하나 이상의 어드레스 지정가능 데이터 패킷들을 상기 메타블록의 페이지에 저장하는 단계로서, 상기 마지막 클러스터는 상기 제1 논리 그룹으로부터 상기 제3의 하나 이상의 어드레스 지정가능 데이터 패킷들 및 상기 제3 논리 그룹으로부터 제4의 하나 이상의 어드레스 지정가능 데이터 패킷들을 내포하는 것인, 단계를 포함하는, 방법.
  12. 제11항에 있어서, 상기 제1 위치는 제2 메타블록에 있는, 방법.
  13. 제11항에 있어서, 상기 제1 위치는 상기 메타블록의 페이지에 있고 상기 제3의 하나 이상의 어드레스 지정가능 데이터 패킷들은 상기 메타블록의 페이지에 상기 제1의 하나 이상의 어드레스 지정가능 데이터 패킷들을 기입에 이어 상기 메타블록의 페이지에 기입되는, 방법.
  14. 제11항에 있어서, 상기 제1 논리그룹 내 데이터는 상기 제2 논리그룹 내 데이터에 순차적이며 상기 제3 논리그룹 내 데이터는 상기 제1 논리그룹 내 데이터에 순차적인, 방법.
  15. 제11항에 있어서, 상기 제1, 제2 및 제3 논리그룹들은 상기 제1 메타블록에 저장된 논리블록에 있는, 방법.
  16. 호스트에 의해 보내진 어드레스 지정가능 데이터 패킷들을 비휘발성 저장매체에 저장하는 메모리 시스템에 있어서,
    호스트에 의해 파일들에 할당되는 클러스터들을 형성하는 어드레스 지정가능 데이터 패킷들을 상기 호스트에 의해 수신하는 제어기로서, 클러스터는 복수의 어드레스 지정가능 데이터 패킷들을 내포하며, 일 범위의 순차적 어드레스 지정가능 데이터 패킷들은 클러스터 위치들에 관계없이 상기 제어기에 의해 논리단위에 맵핑되는 것인, 상기 제어기; 및
    상기 제1 제어기와 통신하며, 복수의 소거블록들을 구비하는 비휘발성 메모리 어레이로서, 소거블록은 상기 메모리 어레이의 최소 소거단위이며, 하나 이상의 소거블록들은 상기 논리단위에 저장하게 할당되고, 상기 하나 이상의 소거블록들은 함께 프로그램가능 및 소거가능하고, 상기 하나 이상의 소거블록들은 어드레스 지정가능 데이터 패킷들의 저장을 위한 물리적 위치들을 내포하며, 한 한 범위의 어드레스 지정가능 데이터 패킷들의 각각의 저장을 위한 물리적 위치들은 상기 논리단위에 맵핑되는 상기 한 범위의 어드레스 지정가능 데이터 패킷들을 수정함이 없이, 상기 논리단위 내 클러스터들에 대해 클러스터-페이지 정렬을 제공하게 선택되는 것인, 상기 비휘발성 메모리 어레이를 포함하는, 메모리 시스템.
  17. 제16항에 있어서, 상기 논리단위 내 부분과 상기 논리단위 밖에 부분을 포함하는 클러스터들은 클러스터-페이지 정렬이 없이 상기 논리단위의 페이지에 함께 저장되는 상기 논리단위 내 부분들을 갖는, 메모리 시스템.
  18. 제17항에 있어서, 클러스터 크기는 페이지 크기와 같고 상기 논리단위 내 부분들은 상기 하나 이상의 소거블록들의 완전한 한 페이지를 점유하는, 메모리 시스템.
  19. 제16항에 있어서, 상기 하나 이상의 소거블록들은 2이상의 소거 블록들의 메타블록으로 구성되고 상기 논리단위는 논리블록인, 메모리 시스템.
  20. 제16항에 있어서, 상기 하나 이상의 소거블록들은 한 소거블록으로 구성되고 상기 논리단위는 논리그룹인, 메모리 시스템.
  21. 제16항에 있어서, 상기 메모리 시스템은 호스트에 착탈가능하게 접속되는 메모리 카드에 내장되는, 메모리 시스템.
KR1020077012085A 2004-12-16 2005-11-30 클러스터 자동-정렬 KR20070102485A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/015,211 2004-12-16
US11/015,211 US7395404B2 (en) 2004-12-16 2004-12-16 Cluster auto-alignment for storing addressable data packets in a non-volatile memory array

Publications (1)

Publication Number Publication Date
KR20070102485A true KR20070102485A (ko) 2007-10-18

Family

ID=36123113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077012085A KR20070102485A (ko) 2004-12-16 2005-11-30 클러스터 자동-정렬

Country Status (7)

Country Link
US (1) US7395404B2 (ko)
EP (1) EP1828881B1 (ko)
JP (1) JP4960882B2 (ko)
KR (1) KR20070102485A (ko)
CN (1) CN101099125B (ko)
TW (1) TWI386801B (ko)
WO (1) WO2006065536A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152547B2 (en) 2009-07-16 2015-10-06 Samsung Electronics Co., Ltd. Apparatus and method for scratch pad memory management
KR20190016448A (ko) * 2017-08-08 2019-02-18 삼성전자주식회사 비휘발성 메모리 장치들 및 이를 제어하는 방법들

Families Citing this family (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
JP4863749B2 (ja) * 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US20080235480A1 (en) * 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US7987332B2 (en) * 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
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
US7818493B2 (en) * 2007-09-07 2010-10-19 Sandisk Corporation Adaptive block list management
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009072102A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8775717B2 (en) 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
KR101465789B1 (ko) * 2008-01-24 2014-11-26 삼성전자주식회사 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
TWI390548B (zh) * 2008-07-03 2013-03-21 Silicon Motion Inc 資料儲存方法及其儲存裝置
US20100037102A1 (en) * 2008-08-08 2010-02-11 Seagate Technology Llc Fault-tolerant non-volatile buddy memory structure
US8650355B2 (en) * 2008-10-15 2014-02-11 Seagate Technology Llc Non-volatile resistive sense memory on-chip cache
JP5338260B2 (ja) * 2008-10-31 2013-11-13 アイシン・エィ・ダブリュ株式会社 データリスト読み書き装置及びその方法
US7830700B2 (en) * 2008-11-12 2010-11-09 Seagate Technology Llc Resistive sense memory array with partial block update capability
US8392687B2 (en) * 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
US8782325B1 (en) * 2009-02-09 2014-07-15 Marvell International Ltd. Data type based alignment of data written to non-volatile memory
US8489801B2 (en) * 2009-03-04 2013-07-16 Henry F. Huang Non-volatile memory with hybrid index tag array
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8730729B2 (en) * 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
CN102243611B (zh) * 2010-05-11 2015-06-17 深圳市朗科科技股份有限公司 数据存储方法和系统
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US9323670B2 (en) * 2010-12-13 2016-04-26 Seagate Technology Llc Protecting volatile data of a storage device in response to a state reset
US9280477B2 (en) 2010-12-13 2016-03-08 Seagate Technology Llc Data storage management in a memory device
JP2012173778A (ja) * 2011-02-17 2012-09-10 Sony Corp 管理装置、および管理方法
US8909894B1 (en) * 2011-03-16 2014-12-09 Tintri Inc. Automatically aligning virtual blocks to physical blocks
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US8924631B2 (en) * 2011-09-15 2014-12-30 Sandisk Technologies Inc. Method and system for random write unalignment handling
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US8996839B1 (en) 2012-01-23 2015-03-31 Western Digital Technologies, Inc. Data storage device aligning partition to boundary of sector when partition offset correlates with offset of write commands
US9063838B1 (en) * 2012-01-23 2015-06-23 Western Digital Technologies, Inc. Data storage device shifting data chunks of alignment zone relative to sector boundaries
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
TWI479315B (zh) * 2012-07-03 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103544118B (zh) * 2012-07-17 2016-09-14 群联电子股份有限公司 存储器储存装置、其存储器控制器与数据写入方法
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
CN102929790A (zh) * 2012-10-15 2013-02-13 株洲南车时代电气股份有限公司 一种数据存储系统和方法
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
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
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
TWI514141B (zh) * 2013-08-08 2015-12-21 Phison Electronics Corp 記憶體位址管理方法、記憶體控制器與記憶體儲存裝置
CN104375945B (zh) * 2013-08-15 2018-03-13 群联电子股份有限公司 存储器地址管理方法、存储器控制器与存储器储存装置
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
KR102105362B1 (ko) 2013-09-17 2020-04-28 삼성전자주식회사 집적 회로 및 이를 포함하는 이미지 센서
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
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
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
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
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
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US20150339223A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
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
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
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
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
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
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
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
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
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
WO2017131798A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Storing data in a storage device
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
TWI612421B (zh) * 2017-01-20 2018-01-21 宇瞻科技股份有限公司 快閃記憶體的動態對齊資料方法
CN108334276B (zh) * 2017-01-20 2021-01-29 宇瞻科技股份有限公司 快闪记忆体的动态对齐数据方法
KR20190061942A (ko) * 2017-11-28 2019-06-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN107704208B (zh) * 2017-10-13 2021-08-10 郑州云海信息技术有限公司 一种元数据的修复方法、装置及介质
US10372603B2 (en) 2017-11-27 2019-08-06 Western Digital Technologies, Inc. Handling of unaligned writes
US10977182B2 (en) * 2017-12-01 2021-04-13 Micron Technology, Inc. Logical block mapping based on an offset
CN109388677B (zh) * 2018-08-23 2022-10-11 顺丰科技有限公司 集群之间数据同步方法、装置、设备及其存储介质
US10713163B2 (en) 2018-09-11 2020-07-14 Toshiba Memory Corporation Set aware system data and mapping tables
US10909030B2 (en) * 2018-09-11 2021-02-02 Toshiba Memory Corporation Enhanced trim command support for solid state drives

Family Cites Families (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5831735B2 (ja) * 1975-10-15 1983-07-08 日本電気株式会社 コウガクテキハンドウタイソウチ
US4139911A (en) 1978-03-13 1979-02-13 Westinghouse Electric Corp. High speed sense circuit for semiconductor memories
US4218764A (en) 1978-10-03 1980-08-19 Matsushita Electric Industrial Co., Ltd. Non-volatile memory refresh control circuit
US4253059A (en) 1979-05-14 1981-02-24 Fairchild Camera & Instrument Corp. EPROM Reliability test circuit
JPS58139399A (ja) 1982-02-15 1983-08-18 Hitachi Ltd 半導体記憶装置
US4460982A (en) 1982-05-20 1984-07-17 Intel Corporation Intelligent electrically programmable and electrically erasable ROM
US4612630A (en) 1984-07-27 1986-09-16 Harris Corporation EEPROM margin testing design
JPS6134793A (ja) 1984-07-27 1986-02-19 Hitachi Ltd ダイナミツクメモリ装置における診断及びエラ−訂正装置
JPS6148197A (ja) 1984-08-13 1986-03-08 Fujitsu Ltd チヤ−ジアツプ回路
JPS61172300A (ja) 1985-01-26 1986-08-02 Toshiba Corp 半導体記憶装置
EP0198935A1 (de) 1985-04-23 1986-10-29 Deutsche ITT Industries GmbH Elektrisch umprogrammierbarer Halbleiterspeicher mit Redundanz
US4962322A (en) 1988-12-05 1990-10-09 Texas Instruments Incorporated Nonvolatible capacitor random access memory
JPS62114200A (ja) 1985-11-13 1987-05-25 Mitsubishi Electric Corp 半導体メモリ装置
US5157629A (en) 1985-11-22 1992-10-20 Hitachi, Ltd. Selective application of voltages for testing storage cells in semiconductor memory arrangements
US4763305A (en) 1985-11-27 1988-08-09 Motorola, Inc. Intelligent write in an EEPROM with data and erase check
JPH0715799B2 (ja) 1987-06-30 1995-02-22 日本電気株式会社 半導体記憶装置
FR2618579B1 (fr) 1987-07-21 1989-11-10 Thomson Semiconducteurs Circuit integre a memoire comportant un dispositif anti-fraude
US4809231A (en) 1987-11-12 1989-02-28 Motorola, Inc. Method and apparatus for post-packaging testing of one-time programmable memories
FR2630573B1 (fr) 1988-04-26 1990-07-13 Sgs Thomson Microelectronics Memoire programmable electriquement avec plusieurs bits d'information par cellule
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
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
JPH07105146B2 (ja) 1988-07-29 1995-11-13 三菱電機株式会社 不揮発性記憶装置
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
JPH02260298A (ja) 1989-03-31 1990-10-23 Oki Electric Ind Co Ltd 不揮発性多値メモリ装置
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
JPH0664918B2 (ja) 1989-05-25 1994-08-22 ローム株式会社 自己訂正機能を有する半導体記憶装置
WO1990016069A1 (en) 1989-06-12 1990-12-27 Kabushiki Kaisha Toshiba Semiconductor memory device
FR2650109B1 (fr) 1989-07-20 1993-04-02 Gemplus Card Int Circuit integre mos a tension de seuil ajustable
US5065364A (en) 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5270551A (en) 1990-02-14 1993-12-14 Hitachi, Ltd. Method of and apparatus for protecting electronic circuit against radiation
US5122985A (en) 1990-04-16 1992-06-16 Giovani Santin Circuit and method for erasing eeprom memory arrays to prevent over-erased cells
US5132935A (en) 1990-04-16 1992-07-21 Ashmore Jr Benjamin H Erasure of eeprom memory arrays to prevent over-erased cells
US5200922A (en) 1990-10-24 1993-04-06 Rao Kameswara K Redundancy circuit for high speed EPROM and flash memory devices
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5239505A (en) 1990-12-28 1993-08-24 Intel Corporation Floating gate non-volatile memory with blocks and memory refresh
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5504760A (en) 1991-03-15 1996-04-02 Sandisk Corporation Mixed data encoding EEPROM system
US5263032A (en) 1991-06-27 1993-11-16 Digital Equipment Corporation Computer system operation with corrected read data function
US5313427A (en) 1991-09-20 1994-05-17 Texas Instruments Incorporated EEPROM array with narrow margin of voltage thresholds after erase
JPH05109292A (ja) 1991-10-14 1993-04-30 Toshiba Corp 不揮発性半導体記憶装置
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
US5327383A (en) 1992-04-21 1994-07-05 Intel Corporation Method and circuitry for erasing a nonvolatile semiconductor memory incorporating row redundancy
US5347489A (en) 1992-04-21 1994-09-13 Intel Corporation Method and circuitry for preconditioning shorted rows in a nonvolatile semiconductor memory incorporating row redundancy
US5657332A (en) 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
JPH065823A (ja) 1992-06-19 1994-01-14 Toshiba Corp 不揮発性半導体記憶装置及びその使用方法
US5550394A (en) 1993-06-18 1996-08-27 Texas Instruments Incorporated Semiconductor memory device and defective memory cell correction circuit
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
JP2708333B2 (ja) 1992-09-02 1998-02-04 株式会社東芝 レベルシフタ回路
US5365486A (en) 1992-12-16 1994-11-15 Texas Instruments Incorporated Method and circuitry for refreshing a flash electrically erasable, programmable read only memory
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5335198A (en) 1993-05-06 1994-08-02 Advanced Micro Devices, Inc. Flash EEPROM array with high endurance
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
US5623620A (en) 1993-06-30 1997-04-22 Intel Corporation Special test modes for a page buffer shared resource in a memory device
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
US5523972A (en) 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory
JP3563452B2 (ja) 1994-08-10 2004-09-08 株式会社東芝 セル閾値分布検知回路およびセル閾値分布検知方法
FR2728380A1 (fr) 1994-12-20 1996-06-21 Sgs Thomson Microelectronics Procede d'ecriture de donnees dans une memoire et memoire electriquement programmable correspondante
US5475693A (en) 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
JP3274306B2 (ja) 1995-01-20 2002-04-15 株式会社東芝 半導体集積回路装置
US5513144A (en) 1995-02-13 1996-04-30 Micron Technology, Inc. On-chip memory redundancy circuitry for programmable non-volatile memories, and methods for programming same
US5699297A (en) 1995-05-30 1997-12-16 Kabushiki Kaisha Toshiba Method of rewriting data in a microprocessor additionally provided with a flash memory
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
US5696929A (en) 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
US5687114A (en) 1995-10-06 1997-11-11 Agate Semiconductor, Inc. Integrated circuit for storage and retrieval of multiple digital bits per nonvolatile memory cell
US5703506A (en) 1995-12-26 1997-12-30 Motorola Signal processing method
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5712815A (en) 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US5715193A (en) 1996-05-23 1998-02-03 Micron Quantum Devices, Inc. Flash memory system and method for monitoring the disturb effect on memory cell blocks due to high voltage conditions of other memory cell blocks
JPH09319645A (ja) 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5860091A (en) * 1996-06-28 1999-01-12 Symbios, Inc. Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications
US5675537A (en) 1996-08-22 1997-10-07 Advanced Micro Devices, Inc. Erase method for page mode multiple bits-per-cell flash EEPROM
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
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US5717632A (en) 1996-11-27 1998-02-10 Advanced Micro Devices, Inc. Apparatus and method for multiple-level storage in non-volatile memories
US5835413A (en) 1996-12-20 1998-11-10 Intel Corporation Method for improved data retention in a nonvolatile writeable memory by sensing and reprogramming cell voltage levels
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
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
JP3177207B2 (ja) 1998-01-27 2001-06-18 インターナショナル・ビジネス・マシーンズ・コーポレ−ション リフレッシュ間隔制御装置及び方法、並びにコンピュータ
WO2000050997A1 (fr) * 1999-02-22 2000-08-31 Hitachi, Ltd. Carte memoire, procede d'affectation d'adresse logique, et procede d'ecriture de donnees
JP2000251483A (ja) 1999-02-24 2000-09-14 Sanyo Electric Co Ltd 1チップマイクロコンピュータとそのデータリフレッシュ方法
WO2000060605A1 (en) 1999-04-01 2000-10-12 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
JP4141581B2 (ja) 1999-04-05 2008-08-27 株式会社ルネサステクノロジ フラッシュメモリを搭載する記憶装置
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP3390408B2 (ja) * 2000-05-29 2003-03-24 エヌイーシーマイクロシステム株式会社 半導体集積回路
JP3942807B2 (ja) 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
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
US20040008335A1 (en) 2001-05-23 2004-01-15 Mark Hayes Novel method and apparatus for flow monitoring in mirco-fluidic devices
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
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6560152B1 (en) 2001-11-02 2003-05-06 Sandisk Corporation Non-volatile memory with temperature-compensated data read
JP4238514B2 (ja) * 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置
TWI248609B (en) * 2002-10-18 2006-02-01 Samsung Electronics Co Ltd Method and apparatus for managing disc defects using updateable dam, and disc thereof
JP4518951B2 (ja) * 2002-10-28 2010-08-04 サンディスク コーポレイション 不揮発性記憶システムにおける自動損耗均等化
US6928511B2 (en) * 2003-03-03 2005-08-09 High Tech Computer, Corp. Method and system for managing virtual memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152547B2 (en) 2009-07-16 2015-10-06 Samsung Electronics Co., Ltd. Apparatus and method for scratch pad memory management
KR20190016448A (ko) * 2017-08-08 2019-02-18 삼성전자주식회사 비휘발성 메모리 장치들 및 이를 제어하는 방법들

Also Published As

Publication number Publication date
CN101099125B (zh) 2011-05-04
EP1828881B1 (en) 2012-12-26
CN101099125A (zh) 2008-01-02
EP1828881A1 (en) 2007-09-05
TW200632650A (en) 2006-09-16
TWI386801B (zh) 2013-02-21
WO2006065536A1 (en) 2006-06-22
US7395404B2 (en) 2008-07-01
JP2008524703A (ja) 2008-07-10
US20060136655A1 (en) 2006-06-22
JP4960882B2 (ja) 2012-06-27

Similar Documents

Publication Publication Date Title
US7395404B2 (en) Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7433993B2 (en) Adaptive metablocks
JP4787266B2 (ja) スクラッチパッドブロック
US7383375B2 (en) Data run programming
US8296498B2 (en) Method and system for virtual fast access non-volatile RAM
US7631138B2 (en) Adaptive mode switching of flash memory address mapping based on host usage characteristics
EP1340150B1 (en) 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
JP4399008B2 (ja) 不揮発性メモリおよびマルチストリーム更新追跡を伴う方法
US6426893B1 (en) Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7441067B2 (en) Cyclic flash memory wear leveling
US7379330B2 (en) Retargetable memory cell redundancy methods
US7386655B2 (en) Non-volatile memory and method with improved indexing for scratch pad and update blocks
US20050144363A1 (en) Data boundary management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application