KR20070102485A - 클러스터 자동-정렬 - Google Patents
클러스터 자동-정렬 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation 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
이 발명은 비휘발성 메모리 시스템들의 동작에 관한 것으로, 특히 이러한 메모리 시스템들 내 데이터의 취급에 관한 것이다.
하나 이상의 집적회로 칩들 상에 형성된 플래시 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항에 있어서, 상기 제1 부분 클러스터 및 상기 마지막 부분 클러스터는 상기 블록의 마지막 페이지에 기입되는, 방법.
- 제2항에 있어서, 상기 제1 부분 클러스터는 상기 블록의 마지막 페이지에 기입하기 전에 상기 메타블록 밖에 저장되는, 방법.
- 제1항에 있어서, 상기 제1 부분 클러스터 및 상기 마지막 부분 클러스터는 상기 블록의 제 페이지에 기입되는, 방법.
- 제4항에 있어서, 상기 제1 부분 클러스터는 상기 블록의 제1 페이지에 직접 저장되며 이어서 상기 마지막 부분 클러스터는 상기 블록의 제1 페이지에도 저장되는, 방법.
- 제1항에 있어서, 상기 블록은 복수의 페이지들로 구성되며 상기 제1 및 마지막 부분 클러스터들을 내포한 페이지를 제외하고 상기 블록의 모든 페이지들은 페이지 경계에 클러스터 경계를 갖고 저장된 클러스터들을 내포하는, 방법.
- 클러스터는 호스트에 의해 함께 할당된 복수의 어드레스 지정가능 데이터 단위들을 내포하는 것으로서, 호스트로부터 수신된 데이터의 클러스터들을 페이지의 프로그래밍 단위 및 소거블록 단위를 구비한 비휘발성 메모리 어레이에 저장하는 방법에서, 블록은 복수의 페이지들을 내포하는 것으로, 상기 방법은,호스트로부터 복수의 데이터 클러스터들을 수신하는 단계;클러스터 경계들의 위치들에 관계없이 상기 메모리 어레이의 블록들에 상기 복수의 클러스터들을 맵핑하는 단계;클러스터 경계들과 맵핑된 블록 경계들 간에 오프셋을 도출하는 단계; 및블록들에 클러스터들의 맵핑을 수정함이 없이, 페이지 경계들에서 클러스터들간 경계들이 생기도록, 상기 도출된 오프셋에 따라, 블록에 맵핑되는 클러스터들 및 클러스터들의 부분들을 상기 블록 내 페이지들에 저장하는 단계를 포함하는, 방법.
- 제7항에 있어서, 상기 블록에 맵핑되는 상기 클러스터들의 부분들은 제1 클러스터의 제1 부분 및 제2 클러스터의 제2 부분이며, 상기 제1 및 제2 부분은 상기 블록의 페이지에 함께 저장되는, 방법.
- 제8항에 있어서, 상기 블록에 맵핑되는 상기 클러스터들 및 클러스터들의 부분들은 제1 논리 어드레스에서 마지막 논리 어드레스로 확장하는 순차적인 데이터이며, 상기 제1 부분은 상기 제1 논리 어드레스를 포함하며 상기 제2 부분은 상기 마지막 논리 어드레스를 포함하는, 방법.
- 제7항에 있어서, 상기 블록에 대한 상기 오프셋을 나타내는 값이 기록되는, 방법.
- 비휘발성 메모리 어레이의 메타블록들에 기정의된 클러스터 경계들을 내포하는 데이터를 저장하는 방법에서, 메타블록은 병렬로 프로그램되고 소거되는 2이상의 소거블록들을 포함하며, 소거블록은 상기 비휘발성 메모리 어레이의 최소 소거단위들이며, 논리 블록은 한 메타블록 내 데이터와 동일한 데이터로 구성되며, 논리그룹은 한 소거블록 내 데이터와 동일한 데이터로 구성되는 것으로서, 상기 방법은,비휘발성 메모리에 저장하기 위한 것이고 복수의 순차적인 어드레스 지정가능 데이터 패킷들로 구성되는 데이터를 수신하는 단계;제1 클러스터로부터 제1 하나 이상의 어드레스 지정가능 데이터 패킷들을 제1 위치에 저장하는 단계로서, 상기 제1 클러스터는 제1 논리 그룹으로부터 상기 제1 하나 이상의 어드레스 지정가능 데이터 패킷들 및 제2 논리 그룹으로부터 제2 하나 이상의 어드레스 지정가능 데이터 패킷들을 내포하는 것인, 단계;페이지 경계들이 클러스터 경계들에서 생기도록, 제1 메타블록의 페이지들에 후속의 순차적인 어드레스 지정가능 데이터 패킷들을 저장하는 단계;상기 제1 하나이상의 어드레스 지정가능 데이터 패킷들을 가진 마지막 클러스터로부터 제3 의 하나 이상의 어드레스 지정가능 데이터 패킷들을 상기 메타블록의 페이지에 저장하는 단계로서, 상기 마지막 클러스터는 상기 제1 논리 그룹으로부터 상기 제3의 하나 이상의 어드레스 지정가능 데이터 패킷들 및 상기 제3 논리 그룹으로부터 제4의 하나 이상의 어드레스 지정가능 데이터 패킷들을 내포하는 것인, 단계를 포함하는, 방법.
- 제11항에 있어서, 상기 제1 위치는 제2 메타블록에 있는, 방법.
- 제11항에 있어서, 상기 제1 위치는 상기 메타블록의 페이지에 있고 상기 제3의 하나 이상의 어드레스 지정가능 데이터 패킷들은 상기 메타블록의 페이지에 상기 제1의 하나 이상의 어드레스 지정가능 데이터 패킷들을 기입에 이어 상기 메타블록의 페이지에 기입되는, 방법.
- 제11항에 있어서, 상기 제1 논리그룹 내 데이터는 상기 제2 논리그룹 내 데이터에 순차적이며 상기 제3 논리그룹 내 데이터는 상기 제1 논리그룹 내 데이터에 순차적인, 방법.
- 제11항에 있어서, 상기 제1, 제2 및 제3 논리그룹들은 상기 제1 메타블록에 저장된 논리블록에 있는, 방법.
- 호스트에 의해 보내진 어드레스 지정가능 데이터 패킷들을 비휘발성 저장매체에 저장하는 메모리 시스템에 있어서,호스트에 의해 파일들에 할당되는 클러스터들을 형성하는 어드레스 지정가능 데이터 패킷들을 상기 호스트에 의해 수신하는 제어기로서, 클러스터는 복수의 어드레스 지정가능 데이터 패킷들을 내포하며, 일 범위의 순차적 어드레스 지정가능 데이터 패킷들은 클러스터 위치들에 관계없이 상기 제어기에 의해 논리단위에 맵핑되는 것인, 상기 제어기; 및상기 제1 제어기와 통신하며, 복수의 소거블록들을 구비하는 비휘발성 메모리 어레이로서, 소거블록은 상기 메모리 어레이의 최소 소거단위이며, 하나 이상의 소거블록들은 상기 논리단위에 저장하게 할당되고, 상기 하나 이상의 소거블록들은 함께 프로그램가능 및 소거가능하고, 상기 하나 이상의 소거블록들은 어드레스 지정가능 데이터 패킷들의 저장을 위한 물리적 위치들을 내포하며, 한 한 범위의 어드레스 지정가능 데이터 패킷들의 각각의 저장을 위한 물리적 위치들은 상기 논리단위에 맵핑되는 상기 한 범위의 어드레스 지정가능 데이터 패킷들을 수정함이 없이, 상기 논리단위 내 클러스터들에 대해 클러스터-페이지 정렬을 제공하게 선택되는 것인, 상기 비휘발성 메모리 어레이를 포함하는, 메모리 시스템.
- 제16항에 있어서, 상기 논리단위 내 부분과 상기 논리단위 밖에 부분을 포함하는 클러스터들은 클러스터-페이지 정렬이 없이 상기 논리단위의 페이지에 함께 저장되는 상기 논리단위 내 부분들을 갖는, 메모리 시스템.
- 제17항에 있어서, 클러스터 크기는 페이지 크기와 같고 상기 논리단위 내 부분들은 상기 하나 이상의 소거블록들의 완전한 한 페이지를 점유하는, 메모리 시스템.
- 제16항에 있어서, 상기 하나 이상의 소거블록들은 2이상의 소거 블록들의 메타블록으로 구성되고 상기 논리단위는 논리블록인, 메모리 시스템.
- 제16항에 있어서, 상기 하나 이상의 소거블록들은 한 소거블록으로 구성되고 상기 논리단위는 논리그룹인, 메모리 시스템.
- 제16항에 있어서, 상기 메모리 시스템은 호스트에 착탈가능하게 접속되는 메모리 카드에 내장되는, 메모리 시스템.
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)
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)
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)
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 |
-
2004
- 2004-12-16 US US11/015,211 patent/US7395404B2/en active Active
-
2005
- 2005-11-30 KR KR1020077012085A patent/KR20070102485A/ko not_active Application Discontinuation
- 2005-11-30 WO PCT/US2005/043285 patent/WO2006065536A1/en active Application Filing
- 2005-11-30 JP JP2007546717A patent/JP4960882B2/ja not_active Expired - Fee Related
- 2005-11-30 EP EP05852506A patent/EP1828881B1/en active Active
- 2005-11-30 CN CN2005800422572A patent/CN101099125B/zh active Active
- 2005-12-13 TW TW094144090A patent/TWI386801B/zh not_active IP Right Cessation
Cited By (2)
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 |