Search International and National Patent Collections
Some content of this application is unavailable at the moment.
If this situation persists, please contact us atFeedback&Contact
1. (KR1020070102485) CLUSTER AUTO-ALIGNMENT
Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters
명 세 서
클러스터 자동-정렬{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 셀들은 전하 저장 요소 혹은 유닛에 하나 이상의 비트들의 데이터를 나타내는 전하량을 저장한다. 저장요소의 전하 레벨은 이의 메모리 셀의 임계전압(일반적으로 V T라 함)을 제어하며, 이는 셀의 저장상태를 읽는 근거로서 사용된다. 임계전압 윈도우는 일반적으로 메모리 셀의 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 오프셋에 따라 메타블록의 시작부분에 기입될 수 있다. 그러나, 추가의 오프셋은 데이터를 페이지 경계들에 정렬시키므로 최종 오프셋은 두 성분들로 구성된다.
 전술한 바는 구체적인 실시예들을 기술한 것이지만, 다양한 수정, 대안적 구조 및 등가물들이 사용될 수 있다. 그러므로, 위의 설명 및 예시는 청구항들에 의해 정의되는 본 발명의 범위를 한정하는 것으로 취해져서는 안 된다.