KR101736944B1 - Nand 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시 - Google Patents

Nand 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시 Download PDF

Info

Publication number
KR101736944B1
KR101736944B1 KR1020167015272A KR20167015272A KR101736944B1 KR 101736944 B1 KR101736944 B1 KR 101736944B1 KR 1020167015272 A KR1020167015272 A KR 1020167015272A KR 20167015272 A KR20167015272 A KR 20167015272A KR 101736944 B1 KR101736944 B1 KR 101736944B1
Authority
KR
South Korea
Prior art keywords
partition
partitions
static data
memory device
nand memory
Prior art date
Application number
KR1020167015272A
Other languages
English (en)
Other versions
KR20160075792A (ko
Inventor
윌리엄 에드워드 킴버리
베니쉬 바부
리차드 패트릭
에프레인 오투노
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20160075792A publication Critical patent/KR20160075792A/ko
Application granted granted Critical
Publication of KR101736944B1 publication Critical patent/KR101736944B1/ko

Links

Images

Classifications

    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40611External triggering or timing of internal or partially internal refresh operations, e.g. auto-refresh or CAS-before-RAS triggered refresh
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

방법들, 시스템들 및 디바이스들은 NAND 메모리 디바이스 상에 저장되는 데이터 이미지를 리프레시하는 것을 제공한다. 양상들은 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 스크럽 부분에 일련의 정적 데이터 파티션들 각각을 순차적으로 카피하는 것을 포함한다. 순차적인 카피는, 스크럽 부분이 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서 어드레스들을 점유하는 경우, 마지막 정적 데이터 파티션으로 시작하여 첫 번째 정적 데이터 파티션까지 순차적으로 진행한다. 대안적으로, 순차적인 카피는, 상기 스크럽 부분이 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 어드레스들을 점유하는 경우, 첫 번째 정적 데이터 파티션으로 시작하여 마지막 정적 데이터 파티션까지 순차적으로 진행한다. 파티션 테이블은 각각의 정적 데이터 파티션이 스크럽 부분에 저장되는 것으로서 업데이트될 수 있다. 이러한 동작들은 NAND 디바이스에서 데이터의 페일-세이프 스크러빙 및 리프레시를 가능하게 한다.

Description

NAND 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시{FAIL SAFE REFRESH OF DATA STORED IN NAND MEMORY DEVICE}
관련 출원들
[0001] 본 출원은 2013년 11월 11일자로 출원된 "Fail Safe Refresh of Data Stored in NAND Memory Device"라는 명칭의 미국 가출원 번호 제61/902,394호에 대한 우선권의 이익을 주장하고, 그에 의해, 상기 가출원의 전체 내용들은 모든 목적들을 위해 인용에 의해 포함된다.
[0002] 플래시 메모리는 전기적으로 삭제 및 리프로그래밍될 수 있는 비-휘발성 컴퓨터 저장 칩이다. NAND 플래시 메모리(또한 "NAND 메모리 디바이스" 또는 단순히 "NAND"로 지칭됨)는, 프로그래밍되어 블록들 또는 페이지들로 판독될 수 있는 고밀도 타입의 판독-기록 메모리이다. NAND 메모리 디바이스들은 데이터의 일반적 저장 및 전달뿐만 아니라, 컴퓨팅 디바이스들을 포함하는 다수의 디지털 디바이스들에 구성 데이터를 저장하기 위해 메모리 카드들, USB 플래시 드라이브들, 고체-상태 드라이브들, 및 유사한 제품들에서 사용된다. NAND의 특성은 본원에 저장되는 데이터 이미지의 전부 또는 그 일부가 재기록되고, 따라서, 업데이트될 수 있다는 것이다. 본원에서 사용되는 바와 같이, "데이터 이미지"라는 용어는 NAND의 하나 또는 그 초과의 메모리 셀들에 저장되는 정보를 지칭한다.
[0003] NAND는 전형적으로 다수의 블록들로 조직화(organized)될 수 있고, 각각의 블록은 다수의 페이지들로 구성된다. "블록"은, 그것이 플래시 메모리 및 특히 NAND와 관련이 있으므로, 공칭 길이를 갖는 저장 바이트들 또는 비트들의 시퀀스를 포함한다. 그 길이는 블록 크기로 지칭된다. 블록들에 데이터를 저장하는 프로세스는 보통 전체 페이지가 한 번에 달성되지만, 데이터의 삭제는 블록들의 단위들로 이루어진다.
[0004] NAND 상에 저장되는 데이터 이미지는 통상적으로 "파티션들"로 지칭되는 다수의 논리 저장 유닛들로 분할된다. 파티션들은 서로와 연관된 블록들을 함께 그룹핑한다. 블록들 및 그들의 연관된 파티션들의 조직화는 블록 어드레스들을 맵핑하는 포인터들을 포함하는, NAND에 대한 파티션 테이블에 의해 유지될 수 있다.
[0005] NAND 메모리 디바이스는 종종 데이터, 즉, 정적 데이터 및 동적 데이터의 2개의 카테고리들을 저장하는데 이용된다. 정적 데이터는 일반적으로, 이를테면, 안정된 특정 기능을 컴퓨팅 디바이스에 제공하도록 컴퓨팅 디바이스를 구성시키는데 사용되고, 따라서, 정적 데이터는 전형적으로 전혀 수정되지 않거나 또는 매우 드물게 수정된다. 부트 로더들, 코어 보안, 자원 연결 및 전력 관리와 연관된 컴파일링된 코드는, NAND 메모리 디바이스들에 종종 저장되는 정적 데이터의 일부 예들이다. 이에 반해, 동적 데이터는 전형적으로 빈번하게 변경되는 데이터, 이를테면, 애플리케이션 데이터, 파일들 및 시스템 운영 데이터를 포함한다.
[0006] 시간이 지남에 따라, 손실될 일부 데이터 비트들을 야기할 수 있는 열 확산 프로세스들로 인하여 데이터를 저장하는데 사용되는 재료 상태가 변경될 수 있으므로, NAND에 저장되는 데이터 이미지는 저하될 수 있고, 이는 손상된 데이터 이미지를 초래할 수 있다. 데이터 이미지의 손실을 회피하기 위해, NAND 메모리 디바이스는 데이터 이미지를 리프레시하도록 주기적으로 리프로그래밍되어야 한다.
[0007] 다양한 양상들은 NAND 메모리 디바이스 상에 저장되는 데이터 이미지를 리프레시하기 위한 방법들, 시스템들 및 디바이스들을 포함한다. NAND 메모리 디바이스 상에 저장되는 데이터는 NAND 메모리 디바이스에 순차적으로 저장되는 파티션들로 분할될 수 있다. 첫 번째 어드레스에서 시작하는 데이터의 첫 번째 파티션은 NAND 메모리 디바이스에 저장될 수 있고, 마지막 어드레스에서 종료하는 데이터의 마지막 파티션은 NAND 메모리 디바이스에 저장될 수 있으며, 각각의 파티션의 어드레스들은 파티션 테이블에 저장된다. NAND 메모리 디바이스 상에 저장되는 데이터는 빈번히 재기록 또는 개정되는 동적 데이터, 및 변경된다 해도 극히 드문 정적 데이터(예를 들어, 운영 시스템 소프트웨어)를 포함할 수 있다. 따라서, NAND 메모리 디바이스 상에서 저장되는 데이터는 정적 데이터의 다수의 파티션들에 선행하는(또는 진행되는) 동적 데이터의 다수의 파티션들을 포함할 수 있다. NAND 메모리 공간의 일부 부분들은 데이터를 포함하지 않을 수 있거나, 또는 파티션 테이블에서 더 이상 참조되지 않는 데이터를 포함할 수 있고; 이 미사용된 메모리 공간은 데이터 이미지를 리프레시할 목적으로 사용될 수 있으며, 일반적으로 "스크럽 부분"으로 본원에서 지칭된다.
[0008] 양상에서, NAND 메모리 디바이스 상에 저장되는 정적 데이터 이미지를 리프레시하기 위한 방법은 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 NAND 메모리 디바이스의 스크럽 부분에 일련의 정적 데이터 파티션들 각각을 순차적으로 카피하는 것을 포함할 수 있다. 일련의 정적 데이터 파티션들 각각의 순차적인 카피는, 스크럽 부분이 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서(order) 어드레스들을 점유하는 경우, 마지막 정적 데이터 파티션으로 시작하여 첫 번째 정적 데이터 파티션으로 순차적으로 진행하고, 일련의 정적 데이터 파티션들 각각의 순차적인 카피는 스크럽 부분이 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 어드레스들을 점유하는 경우, 첫 번째 정적 데이터 파티션으로 시작하여 마지막 정적 데이터 파티션으로 순차적으로 진행한다. 또한, 파티션 테이블은 각각의 정적 데이터 파티션이 스크럽 부분에 저장되는 것으로서 업데이트된다.
[0009] 추가 양상들은, NAND 메모리 디바이스 상의 데이터 이미지를 리프레시할 시 클럭을 판독 또는 시작시키는 것을 포함한다. 추후에, 클럭이 데이터 이미지가 리프레시되어야 함을 표시하는지 여부에 관한 결정이 이루어질 수 있고, NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 동작들이 클럭이 데이터 이미지가 리프레시되어야 함을 표시한다고 결정하는 것에 대한 응답으로 수행될 수 있다.
[0010] 추가 양상들은, 파티션 테이블에 저장되는 파티션 어드레스들에 기초하여, 스크럽 부분이 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것을 포함할 수 있다. 또한, 스크럽 부분이 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것은 파티션들이 마지막 정적 데이터 파티션보다 높은 어드레스들에 카피되었는지 아니면 첫 번째 정적 데이터 파티션보다 낮은 어드레스들에 카피되었는지에 기초하여 세팅되는, NAND 메모리 디바이스에 저장되는 자료(datum)에 기초할 수 있다. 추가적으로, NAND 메모리 디바이스는, 일련의 정적 데이터 파티션들이 정적 데이터를 포함하고 일련의 정적 데이터 파티션들에 포함되지 않은 다른 파티션들이 동적 데이터를 포함하도록, 데이터 이미지의 일부로서 저장되는 정적 데이터 및 동적 데이터 둘다를 포함할 수 있다.
[0011] 추가 양상들은, 스크럽 부분이 마지막 정적 데이터 파티션의 마지막 어드레스가 포함하는 것보다 높은 순서 어드레스들을 점유하는 경우, 마지막 정적 데이터 파티션이 NAND 메모리 디바이스 내에서 가장 높은 순서 어드레스에서 종료되도록 마지막 정적 데이터 파티션을 카피하는 것을 포함할 수 있다. 대안적으로, 스크럽 부분이 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 순서 어드레스들을 점유하는 경우 첫 번째 정적 데이터 파티션은 그것이 NAND 메모리 디바이스 내에서 가장 낮은 순서 어드레스에서 시작하도록 카피될 수 있다. 추가적으로, 일련의 정적 데이터 파티션들 중 적어도 하나는 NAND 디바이스 상의 데이터 이미지를 리프레시하는 동작들을 수행하기 전에 일련의 정적 데이터 파티션들 중 적어도 하나의 다른 것에 의해 이미 점유된 어드레스에 카피될 수 있다.
[0012] 추가 양상에서, NAND 디바이스에 저장되는 데이터에 액세스하기 위해 컴퓨팅 시스템에 의해 사용되는 추후에 업데이트되는 파티션 테이블을 갖는 2개의 파티션 테이블들이 존재할 수 있다. 이 양상에서, 파티션 테이블을 업데이트하는 것은 2개의 파티션 테이블들 중 업데이트된 것의 롤링 카운터를 업데이트하는 것을 포함하여 2개의 파티션 테이블들 사이에서 교번할 수 있다. 이러한 롤러 카운터는 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하고 그리고/또는 일련의 파티션들 각각이 카피된 이후 업데이트될 필요가 있는 2개의 파티션 테이블들 중 더 이전의 것을 표시할 수 있다. 또한, 파티션 테이블을 업데이트하는 것은 파티션 테이블이 언제 마지막으로 업데이트되었는지를 반영하는 시스템 파일에 시간 값을 저장하는 것을 포함할 수 있다.
[0013] 추가 양상들은, NAND 메모리 디바이스를 갖는 컴퓨팅 디바이스, 및 위에서 논의된 방법들에 대응하는 다양한 동작들을 수행하기 위한 프로세서 실행가능한 명령들에 의해 구성되는, NAND 메모리 디바이스에 커플링된 프로세서를 포함한다.
[0014] 추가 양상들은 위에서 논의된 방법 동작들에 대응하는 기능들을 수행하기 위한 다양한 수단을 갖는 컴퓨팅 디바이스를 포함한다.
[0015] 추가 양상들은, 프로세서로 하여금, 위에서 논의된 방법 동작들에 대응하는 다양한 동작들을 수행하게 하도록 구성되는 프로세서 실행가능한 명령들이 저장된 비-일시적 프로세서 판독가능한 저장 매체를 포함한다.
[0016] 본원에 포함되고 본 명세서의 일부를 구성하는 첨부한 도면들은 본 발명의 예시적 양상들을 예시하며, 위에서 주어진 일반적 설명 및 아래에서 주어지는 상세한 설명과 함께, 본 발명의 특징들을 설명하도록 서빙한다.
[0017] 도 1은 양상에 따른, 판독-기록 메모리 디바이스 패키징의 개략 블록도이다.
[0018] 도 2a는 양상에 따른, NAND 디바이스를 리프레시하기 위한 일련의 초기 프로세스 단계들을 예시하는 일련의 개략도들이다.
[0019] 도 2b는 양상에 따른, 도 2a의 단계들을 따르는 프로세스 단계들을 추가로 예시하는 일련의 개략도들이다.
[0020] 도 3a는 양상에 따른, NAND 디바이스를 리프레시하기 위한 추후 프로세스 단계들을 예시하는 일련의 개략도들이다.
[0021] 도 3b는 양상에 따른, 도 3a의 단계들을 따르는 프로세스 단계들을 추가로 예시하는 일련의 개략도들이다.
[0022] 도 4는 판독-기록 메모리 상의 데이터 이미지를 리프레시하는 양상의 방법을 예시하는 프로세스 흐름도이다.
[0023] 도 5는 다양한 개시되는 양상들에 따른, NAND를 포함하는 컴퓨팅 디바이스를 예시하는 개략 컴포넌트도이다.
[0024] 첨부한 도면들을 참조하여 다양한 양상들이 상세하게 설명될 것이다. 가능한 어느 곳에서나, 동일한 참조 번호들은 동일한 또는 같은 부분들을 지칭하기 위해 도면들 전반에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대해 이루어지는 참조들은 예시를 목적으로 하며, 본 발명의 범위 또는 청구항들을 제한하도록 의도되지 않는다. 대안적 양상들은 본 개시 내용의 범위로부터 벗어나지 않으면서 고안될 수 있다. 추가적으로, 본 개시 내용의 잘-알려진 엘리먼트들은 상세하게 설명되지 않을 것이거나, 또는 본 개시의 관련 세부사항들을 모호하게 하지 않도록 생략될 것이다.
[0025] "예시적"이라는 용어는 "예, 예증 또는 예시로서 제공되는"을 의미하기 위해 본원에서 사용된다. "예시적"으로서 본원에서 설명되는 임의의 구현은 반드시 다른 구현들에 비해 선호되거나 또는 유리한 것으로서 해석되는 것은 아니다. 추가적으로, 용어들의 사용 "제 1", "제 2", "제 3", "초기" 또는 유사한 용어는 명료함을 목적으로 다양한 설명되는 엘리먼트들을 구별하도록 본원에서 의도되며, 엘리먼트들의 특정 순서 또는 계층에 대해 본 발명을 제한하도록 의도되지 않는다.
[0026] 본원에서 사용되는 "액세스" 또는 "액세스하는"이라는 용어들은, 그 데이터 또는 정보를 스캔하거나 또는 판독할 목적으로, 전자 저장 디바이스, 또는 특정되면, 그것의 특정 부분과 상호작용하는 동작을 지칭한다. 또한, 본원에서 사용되는 "스캔" 또는 "스캔하는"이라는 용어들은 특히, 전자 저장 디바이스에서 데이터 또는 정보를 검사, 해석 또는 검토하는 것을 의미한다. 이에 반해, 본원에서 사용되는 "판독" 또는 "판독하는"이라는 용어들은, 특히, 전자 저장 디바이스에서 데이터 또는 정보를 획득, 추출 또는 리트리브하는 것을 의미한다. 본원에서 사용되는 "카피" 또는 "카피하는"이라는 용어들은 또 다른 위치에서 하나의 위치로부터의 한 세트의 데이터의 거의 동일한 버전을 재생산 또는 생성하는 것을 의미한다. 본원에서 사용되는 "순차적" 또는 "순차적으로"라는 용어들은 첫 번째로부터 마지막으로, 마지막으로부터 첫 번째로, 가장 낮은 순서 어드레스로부터 가장 높은 순서 어드레스로, 가장 높은 순서 어드레스로부터 가장 낮은 순서 어드레스로 등과 같이 순차적 순서로 발생 또는 따르는 것을 지칭한다.
[0027] 다양한 양상들은 NAND 메모리 디바이스들 상의 정적 데이터 이미지를 리프레시하기 위한 방법들, 디바이스들 및/또는 시스템들을 제공한다. 리프로그래밍에 의해 데이터 이미지의 부분들 또는 그 전부를 리프레시하는 프로세스는 또한, "스크럽하는" 또는 "스크럽"으로 본원에서 지칭된다. 스크럽하는 프로세스는 특정 메모리 위치들로부터 판독하는 것, ECC(error-correction code)를 갖는 비트 에러들(만약 있다면)을 정정하는 것 및 정정된 데이터를 또 다른 위치에 또는 동일한 위치에 다시 기록하는 것을 포함할 수 있다. NAND 메모리 디바이스 상에 저장된 정적 데이터 이미지는 데이터가 시간이 지남에 따라 정확하고 판독가능한 상태로 유지됨을 보장하기 위해 주기적으로 스크럽(즉, 리프로그래밍에 의해 리프레시)될 수 있다. 그러나, NAND 메모리 디바이스의 리프로그래밍은, 그것이 동적 데이터 또는 리프로그래밍되도록 의도되지 않은 다른 정적 데이터에 영향을 미치지 않고, 리프로그래밍의 중간에 전력 손실과 같은 가능한 이벤트들을 수용할 수 있는 페일 세이프(fail safe) 방식으로 수행되어야 한다는 사실에 의해 복잡해질 수 있다. 또한, 특정 NAND를 저하시키는데 걸리는 정확한 시간은 온도, 그것이 노출되는 조건들 및 용도에 따라 크게 달라질 것이다. 기간은 3개월 또는 4개월만큼 짧거나 또는 수 년에 걸칠 수 있다. 따라서, 데이터 손실을 방지하기 위해, NAND 상에 저장되는 정적 데이터는 NAND에 저장되는 동적 데이터와 같은 다른 데이터에 영향을 미치지 않으면서 주기적으로 리프레시되어야 한다. 다양한 양상들은, 정적 데이터의 페일-세이프 업데이트 또는 그것의 핸들링을 가능하게 함으로써, 판독-기록 메모리 디바이스들, 이를테면, NAND 메모리 디바이스들에의 데이터 보유(retention)를 촉진한다.
[0028] MBR(master boot record) 또는 GPT(GUID partition table) 파티셔닝 방식들과 유사하게, NAND 파티션들은 소프트웨어에서 관리될 수 있다. 그 소프트웨어는 정적 데이터의 리프레시의 부분으로서 NAND 메모리 디바이스에 저장되는 파티션 테이블들을 유지 및 업데이트할 수 있다. 또한, 정적 데이터가 리프레시될 필요가 있는지 여부를 결정하기 위해, 정적 데이터 이미지의 마지막 리프레시 또는 정적 데이터 이미지의 다음의 요구되는 리프레시에 대한 카운터, 시간 값 또는 다른 표시가 NAND 메모리 디바이스 상에 저장되는 다른 동적 데이터와 함께 또는 파일 시스템에, 이를테면, 시스템 메모리에 저장될 수 있다. 그 카운터, 시간 값 또는 다른 표시는 주기적으로 검사될 수 있고 그리고/또는 미래의 원하는 시간에, 이를테면, 정적 데이터가 스크럽되었던 마지막 시간으로부터 4개월 후에, 정적 데이터 이미지의 리프레시를 트리거링하는데 사용될 수 있는 타이머 세트는 스크럽되었다.
[0029] 도 1은 본원에 개시되는 양상들에 따른, NAND 메모리 디바이스(110)를 포함하는 컴퓨팅 디바이스(100)의 블록도를 예시한다. 컴퓨팅 디바이스(100)는 프로세서(들)(102), ROM(read-only memory)(106), 하나 또는 그 초과의 입력/출력 포트들(108) 및 메모리 제어기(104)가 통신하게 허용하는 시스템 버스(101)를 포함할 수 있다. 추가적으로, NAND 메모리 디바이스(110)는 메모리 제어기(104)를 통해 시스템 버스(101)와 인터페이싱하도록 구성될 수 있다. 컴퓨팅 디바이스(100)는 예시되지 않은 다른 컴포넌트들, 이를테면, 디스플레이/출력 디바이스들 또는 네트워킹 디바이스들을 포함할 수 있다. 또한, 컴퓨팅 디바이스(100)는 단일 컴퓨터 칩 상에서 또는 SOC(system on chip)로서 구현될 수 있다.
[0030] NAND 메모리 디바이스(110)는 영구적인 메모리 디바이스로서 컴퓨팅 디바이스(100)의 하드웨어에 포함될 수 있다. 또한, NAND 메모리 디바이스(110)는 칩 셋을 형성할 수 있는 다수의 이산 컴포넌트들 상에서 또는 멀티-칩 모듈로서 구현될 수 있으며, 함께 사용될 수 있다. 데이터는 저장, 액세스 그리고 NAND 메모리 디바이스(110)로부터 읽혀질 수 있다. 추가적으로, NAND 메모리 디바이스(110)에 저장되는 데이터는 적절하게 기록 및 삭제될 수 있다. 메모리 제어기(104)는 단일 칩으로서 또는 별개의 컴포넌트로서 NAND 메모리 디바이스(110)에 포함될 수 있다. 메모리 제어기(104)는 이를테면, 데이터를 파티셔닝하고, 하나 또는 그 초과의 파티션 테이블들을 업데이트하고, 데이터를 읽고, 데이터를 카피하고, 데이터를 저장하고 그리고 데이터를 삭제하는 프로세스와 같이 NAND 메모리 디바이스(110)를 제어하도록 구성될 수 있다. 다양한 양상들에서, NAND 메모리 디바이스(110) 상에 저장된 데이터 이미지는 일련의 정적 데이터 파티션들 P1-P3, 뿐만 아니라 엠티(empty) 블록들 PEmpty을 포함하는 추가 파티션들, 및 동적 데이터를 저장하기 위해 사용되는 동적 데이터 파티션들 Pn을 포함하는 추가 파티션들로 파티셔닝될 수 있다.
[0031] 도 2a 및 도 2b는 다양한 양상들에 따른, NAND 디바이스를 리프레시하기 위한 일련의 프로세스 단계들을 예시하는 일련의 개략도들을 도시한다. 도 2a 및 도 2b의 개략도들 각각은 양상 데이터 이미지 리프레시먼트(refreshment) 프로세스의 상이한 스테이지에서의 동일한 NAND 메모리 디바이스를 표현한다. 유사하게, 도 3a 및 도 3b는 개시되는 양상들에 따른, NAND 디바이스를 리프레시하기 위한 일련의 프로세스 단계들을 예시하는 일련의 개략도들을 도시한다. 도 3a 및 도 3b의 개략도들 각각은 데이터 이미지 리프레시먼트 프로세스의 상이한 스테이지에서의 동일한 NAND 메모리 디바이스를 표현한다. 또한, 도 2a 및 도 2b에 예시되는 프로세스 단계들은 도 3a 및 도 3b에 도시되는 바와 동일한 NAND 메모리 디바이스일 수 있지만, 상이한 시간들에서 NAND 상에서 실행될 수 있다. 양상에 따라, 도 2a 및 도 2b에 예시되는 프로세스들은 NAND 메모리 디바이스에 저장되는 정적 데이터 이미지가 리프레시될 때마다 도 3a 및 도 3b에 예시되는 프로세스들과 교번될 수 있다.
[0032] 도 2a 및 도 2b를 참조하면, NAND는 리프레시되도록 선택되는 일련의 정적 데이터 파티션들을 포함하는 다수의 파티션들 P1, P2, P3, 파티션 테이블 TP에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 스크럽 파티션 PScrub 및 추가 파티션들 Pn으로 분할되는 데이터 이미지를 포함한다. 또한, NAND는 각각이 블록들을 특정 파티션에 연관시키기 위한 포인터들을 포함하는 2개의 별개의 파티션 테이블 TP1, TP2를 포함할 수 있다. 파티션 테이블들은 NAND 메모리 디바이스의 초기 영역을 점유하는 미리 결정된 블록 범위에 저장된다. 도 2a, 도 2b, 도 3a 및 도 3b에서, 파티션 테이블들은 예시를 목적으로 블록 0 및 블록 1을 점유하는 것으로서 도시되지만, 파티션 테이블들은 2개 초과의 블록들을 점유하고, 블록 0에서 시작할 필요가 없으며, 서로에 대해 연속적일 필요가 없을 수 있다. 열악한 블록들 및 다른 엘리먼트들을 수용하기 위해, 미리 결정된 어드레스들의 범위가 파티션 테이블들의 카피들을 그들이 있는 것으로서 저장하기 위해 예비될 수 있고, 파티션 테이블들은 본원에서의 리프레시먼트 프로세스 동안 업데이트된다. 2개의 별개의 파티션 테이블들 TP1, TP2는, 정적 데이터 이미지가 리프세싱될 때마다, 교번하는 시퀀스에서 업데이트될 수 있다. 파티션 테이블이 업데이트될 때마다, 그 업데이트되는 파티션 테이블은 그것이 2개의 별개의 파티션 테이블들에 대해 가장 최근에 업데이트됨에 대한 표시를 포함할 수 있다. 이러한 표시는 파티션 테이블 참조 아래첨자 TPx의 문자 "x"의 증분적 변화로서 도 2a, 도 2b, 도 3a 및 도 3b에 예시된다. 도 3a 및 도 3b에서, 2개의 별개의 파티션 테이블들은 파티션 테이블들 TP5, TP4로서 시작하고, 교번하는 방식으로 계속 업데이트된다. 이 방식으로, 2개의 별개의 파티션 테이블들 TP5 중 하나는 가장 최근에 업데이트된 것이고, 2개의 별개의 파티션 테이블들 TP4 중 다른 하나는 덜 최근에 업데이트된 것이다. 이 듀얼 파티션 테이블 구성은 NAND를 업데이트하기 위한 페일 세이프 방법을 제공하여서, 하나의 파티션 테이블이, 문제(예를 들어, 리프레시 동안의 전력 손실)가 다른 파티션 테이블의 업데이트 동안 발생하는 경우 또는 그렇지 않으면 다른 파티션 테이블에 무엇인가가 발생하는 경우 사용가능함을 보장한다.
[0033] 리프레시되도록 선택되는 일련의 파티션들 P1, P2, P3은 TZ(trust zone) 파티션, RPM(resource power management) 파티션 및 부트 로더 파티션과 같은 정적 데이터의 특정 부분들 또는 세그먼트들뿐만 아니라 주기적으로 리프레시되는 것으로부터 이익을 얻을 수 있는 추가 정적 데이터 파티션들에 할당될 수 있다. 이러한 정적 데이터 파티션들은 NAND 메모리 디바이스의 메모리 어드레스들에서 연속적으로 함께 그룹핑된다. 양상에서, 리프레시될 일련의 파티션들은 연속적인 정적 데이터 파티션들이어서, 동적 데이터를 포함하는 다른 파티션들은 리프레시되는 일련의 정적 데이터 파티션들 이전에 그리고/또는 이후에 배치될 수 있다. 대안적 양상에서, 하나 또는 그 초과의 동적 데이터 파티션들은 정적 데이터 파티션들 이전에 그리고/또는 이후에 연속적으로 함께 그룹핑되고, 본원에서 설명되는 바와 같이 리프레시되는 일련의 파티션들에 포함될 수 있다. 이러한 대안적 양상에서, 리프레시되도록 타겟되는 이러한 동적 데이터 파티션들은 그들이 리프레시되는 정적 데이터 파티션들이었던 것처럼 취급될 수 있으며, 리프레시되는 실제 정적 데이터 파티션들과 함께 연속적으로 그룹핑될 수 있다.
[0034] 추가적으로, 하나 또는 그 초과의 연속적인 파티션들의 영역은 스크럽 파티션 PScrub로서 표시되는데, 이는 또한 "스크럽 부분"으로서 본원에서 지칭된다. "스크럽 파티션" 및 스크럽 부분이라는 용어들은 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 NAND 메모리 공간의 일부분을 지칭하기 위해 본원에서 사용된다. 다시 말해서, 메모리 레지스터들 및 부분이 엠티 상태이거나 또는 컴퓨팅 디바이스에 대해 더이상 이용가능하지 않은(즉, 파티션 테이블에서 식별되지 않음) 데이터를 저장하기 때문에, 메모리의 스크럽 부분은 데이터를 기록하는데 이용가능하다.
[0035] 정적 데이터 이미지를 리프레시하는 프로세스 동안, NAND 메모리 디바이스 내에서의 스크럽 파티션 PScrub의 포지션은 파티션들이 데이터 이미지의 일련의 파티션들의 순차적 카피 동안 이동될 때(즉, 한 그룹의 메모리 위치들로부터 스크럽 파티션의 일부분으로 카피됨) 시프트할 수 있다.
[0036] NAND는 동적 데이터를 포함하는 데이터의 추가 파티션들 Pn을 저장할 수 있으며, 이는 그들의 주기적 업데이트가 데이터가 프레시(fresh) 상태로 유지됨을 보장하기 때문에 리프레시될 필요가 없다. 동적 데이터 파티션들은 일반적으로 정적 데이터 파티션들과 인터리빙되지 않는다.
[0037] 데이터 이미지 내의 파티션들 각각은 다수의 블록들로 구성될 수 있지만, 각각의 파티션 내의 블록들의 수는 동일할 필요가 없다. 예시를 목적으로, 첫 번째 파티션 P1은 10개의 블록들(B1…B10)을 포함하는 것으로서 도시되고, 제 2 파티션 P2는 20개의 블록들(B1…B20)을 포함하는 것으로서 도시되며, 제 3 파티션 P3은 100개의 블록들(B1…B100)을 포함하는 것으로 도시되고, 스크럽 파티션 PScrub는 200개의 블록들(B1…B200)을 포함하는 것으로 도시된다. 각각의 파티션 내의 블록들의 수는, 데이터 이미지의 다양한 부분들이 업데이트되거나 또는 변경될 때 상이한 NAND 디바이스들, 상이한 데이터 이미지들, 및 시간이 지남에 따라 달라질 수 있다.
[0038] 도 2a 및 도 2b는 스크럽 파티션 PScrub가 리프레시될 데이터를 저장하는 일련의 파티션들보다 높은 순서 어드레스들을 점유하는 경우, NAND 메모리 디바이스에 저장되는 정적 데이터 이미지를 리프레시하기 위한 일련의 프로세스 단계들을 예시한다. 도 2a에 도시되는 단계(200)에서, 일련의 파티션들 P1, P2, P3를 역(reverse) 파티션 순서로(즉, 마지막 파티션으로 시작하여 첫 번째 파티션을 향해 진행함) 스크럽 부분에 카피하는 것은 마지막 파티션이 스크럽 부분에의 기록을 위해 카피되는 것으로 시작될 수 있어서, 그 가장 높은 순서 데이터는 스크럽 부분 내의 그것의 가장 높은 어드레스에 저장된다. 일련의 파티션들 P1, P2, P3의 순차적 카피는 일련의 리프레시되는 파티션들 P1r, P2r, P3r을 생성한다. 역 파티션 순서로 일련의 파티션들 P1, P2, P3을 카피하는 프로세스는 일련의 파티션들 P1, P2, P3의 마지막 파티션 P3을 스크럽 파티션의 끝에(즉, 파티션을 저장할 가장 높은 순서 어드레스들에) 카피함으로써 시작한다. 단계(202)는 일련의 파티션들 중 마지막 파티션 P3의 카피가 스크럽 파티션 PScrub의 끝을 점유하는 마지막 리프레시되는 파티션 P3r을 생성하는데 사용되는 것을 예시한다. 일단 마지막 리프레시되는 파티션 P3r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 마지막 리프레시되는 파티션 P3r이 열악한 카피이면, 프로세스는, 단계(202)에서 리프레시되는 파티션을 생성하는 단계(200)에서 파티션을 카피하는 동작을 반복할 수 있다. 그렇지 않으면, 단계(204)에서, 파티션 테이블 TP3은 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P3r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P3의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 또한, 최신 파티션 테이블 포인터가 일련의 파티션들 중 마지막 파티션 P3에 의해 미리 점유되는 NAND 메모리의 영역으로 더이상 포인팅하지 않으므로, 단계(204)에서, 마지막 리프레시되는 파티션 P3r은 다시 일련의 파티션들 중 마지막 파티션 P3으로 지칭될 수 있다. 추가적으로, 단계(204)에 의해, 일련의 파티션들 중 마지막 파티션 P3의 초기 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 스크럽 파티션 PScrub는 효율적으로 좌로 시프트한다. 이 방식으로, 스크럽 파티션 PScrub는 또한 이제, 정적 데이터 파티션들 사이에 인터리빙된다. 단계들(200, 202 및 204)은 모두 일련의 바로 연속적인 단계들로서 함께 발생할 수 있다는 점이 주목되어야 한다. 단계(204)는 또한, 미리 카피된 파티션에 인접한 NAND 메모리의 일부분에 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션 P2를 카피하는 것을 포함할 수 있다.
[0039] 도 2b에 도시되는 단계(206)에서, 카피된 파티션 P2는 다음 리프레시되는 파티션 P2r을 생성하는데 사용된다. 사실상, 이 다음 리프레시되는 파티션 P2r은 새롭게 시프트되는 스크럽 파티션 PScrub의 끝을 점유할 수 있다. 일단 다음 리프레시되는 파티션 P2r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 그 다음 리프레시되는 파티션 P2r이 열악한 카피이면, 단계(206)에서 리프레시되는 파티션을 생성하는 단계(204)의 카피 프로세스가 반복될 수 있다. 그렇지 않으면, 단계(208)에서, 파티션 테이블 TP4는 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P2r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P2의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 최신 파티션 테이블 포인터가 일련의 파티션들 중 카피된 두 번째 파티션 P2에 의해 미리 점유되는 NAND 메모리의 영역으로 더이상 포인팅하지 않을 수 있다. 따라서, 단계(208)에서, 다음 리프레시되는 파티션 P2r은 일련의 파티션들 중 두 번째 파티션 P2로 지칭될 수 있다. 이 방식으로, 리프레시되는 파티션이 카피되었던 원래의 파티션이 스크럽 파티션으로 흡수되고 더이상 인식되지 않기 때문에, 리프레시되는 파티션은 그것이 카피되었던 원래의 파티션을 대체한다. 추가적으로, 단계(208)에 의해, 일련의 파티션들 중 두 번째 파티션 P2의 초기 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 스크럽 파티션 PScrub는 효율적으로 좌로 추가로 시프트한다. 스크럽 파티션 PScrub는 여전히, 정적 데이터 파티션들 사이에 인터리빙될 수 있다. 단계들(204, 206 및 208)은 모두 일련의 바로 연속적인 단계들로서 함께 발생할 수 있다는 점이 주목되어야 한다. 또한, 단계(208)는 미리 카피된 파티션에 인접한 NAND 메모리의 일부분에 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션을 카피하는 것을 포함할 수 있다. 이 예시되는 예에서, 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션은 일련의 파티션들 중 첫 번째 파티션 P1이다.
[0040] 단계(210)에서, 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션 P1의 카피는 미리 카피된 파티션에 인접한 메모리 레지스터들을 점유하는 또 다른 리프레시되는 파티션 P1r을 생성하는데 사용되고, 따라서, 시프트된 스크럽 파티션 PScrub의 끝에서 시작한다. 일단 첫 번째 리프레시되는 파티션 P1r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 첫 번째 리프레시되는 파티션 P1r이 열악한 카피이면, 단계(210)에서 리프레시되는 파티션을 생성하는 단계(208)의 카피 프로세스가 반복될 수 있다. 그렇지 않으면, 단계(212)에서, 파티션 테이블 TP5는 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P1r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P1의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 또한, 최신 파티션 테이블 포인터가 일련의 파티션들 중 첫 번째 파티션 P1에 의해 미리 점유된 NAND 메모리의 영역으로 더이상 포인팅하지 않으므로, 단계(212)에서, 첫 번째 리프레시되는 파티션 P1r은 다시 일련의 파티션들 중 첫 번째 파티션 P1로 지칭될 수 있다. 따라서, 일련의 파티션들 중 첫 번째 파티션 P1의 카피 이후, 일련의 파티션들 중 첫 번째 파티션 P1의 이전 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 스크럽 파티션 PScrub는 모두 좌측 방향으로 시프트한다. 또한, 그것이 일련의 파티션들에 대해 카피될 마지막 파티션이었기 때문에, 스크럽 파티션 PScrub는 파티션 테이블들 TP5, TP4 외의 리프레시되는 정적 데이터 파티션들 사이에 더이상 인터리빙되지 않는다.
[0041] 리프레시될 일련의 데이터 이미지 파티션들은 전형적으로 3개 초과의 파티션들을 포함할 것이다. 예를 들어, 정적 데이터의 8개 내지 12개의 파티션들은 리프레시될 수 있고, 이 경우, 위에서 설명된 프로세스 단계들이 모든 파티션들이 이 방식으로 리프레시될 때까지 반복될 수 있다.
[0042] NAND 메모리 디바이스에서의 정적 데이터 이미지가 리프레시되는 다음 시간에, 파티션들은 도 3a 및 도 3b에 도시되는 바와 같이 역 순서로 그리고 다른 방향으로 카피될 수 있고, 이는 스크럽 파티션 PScrub가 리프레시될 일련의 파티션들 중 첫 번째 어드레스보다 낮은 어드레스들을 점유하는 경우 NAND 메모리 디바이스 상에 저장되는 데이터 이미지를 리프레시하기 위한 프로세스 동작들을 예시한다. 이 환경에서 데이터 이미지를 리프레시하는 처음에, 일련의 파티션들 P1, P2, P3은 스크럽 파티션의 적어도 일부분을 대체하는 일련의 리프레시되는 파티션들을 생성하기 위해 연속적인 파티션 순서로 카피될 수 있다.
[0043] 도 3a에 도시되는 단계(300)에서, 일련의 파티션들 중 첫 번째 파티션 P1은 첫 번째 리프레시되는 파티션을 생성하기 위해 카피된다. 단계(302)에서, 일련의 파티션들 중 첫 번째 파티션 P1의 카피는 스크럽 파티션 PScrub의 시작(즉, 가장 낮은 메모리 어드레스들)을 점유하는 첫 번째 리프레시되는 파티션 P1r을 생성하는데 사용된다. 연속적인 파티션 순서로 일련의 파티션들 P1, P2, P3을 카피하는 프로세스는 초기에, 일련의 첫 번째 파티션들 중 첫 번째 파티션 P1을 스크럽 파티션의 시작(즉, 스크럽 부분에서의 가장 낮은 어드레스 범위)에 카피한다. 일단 첫 번째 리프레시되는 파티션 P1r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 첫 번째 리프레시되는 파티션 P1r이 열악한 카피이면, 단계(302)에서 리프레시되는 파티션을 생성하는 단계(300)의 카피 프로세스가 반복될 수 있다. 그렇지 않으면, 단계(304)에서, 파티션 테이블 TP6은 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P1r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P1의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 또한, 최신 파티션 테이블 포인터가 일련의 파티션들 중 첫 번째 파티션 P1에 의해 미리 점유되는 NAND 메모리의 영역으로 더이상 포인팅하지 않으므로, 단계(304)에서, 첫 번째 리프레시되는 파티션 P1r은 다시 일련의 파티션들 중 첫 번째 파티션 P1로 지칭될 수 있다. 추가적으로, 단계(304)에 의해, 일련의 파티션들 중 첫 번째 파티션 P1의 초기 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 스크럽 파티션 PScrub는 효율적으로 우로 시프트한다. 이 방식으로, 스크럽 파티션 PScrub는 또한 이제, 리프레시되는 정적 데이터 파티션들 사이에 인터리빙된다. 단계들(300, 302 및 304)은 모두 일련의 바로 연속적인 단계들로서 함께 발생할 수 있다는 점이 주목되어야 한다. 단계(304)는 또한, 미리 카피된 파티션에 인접한 NAND 메모리의 일부분에 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션 P2를 카피하는 것을 포함할 수 있다.
[0044] 단계(306)에서, 사전에 카피되지 않은 일련의 파티션들에서의 카피되는 다음 파티션 P2는 스크럽 파티션 PScrub의 시작을 점유하는 다음 리프레시되는 파티션 P2r을 생성하는데 사용된다. 일단 다음 리프레시되는 파티션 P2r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 다음 리프레시되는 파티션 P2r이 열악한 카피이면, 단계(306)에서 리프레시되는 파티션을 생성하는 단계(304)의 카피 프로세스가 반복될 수 있다. 그렇지 않으면, 도 3b에 도시되는 단계(308)에서, 파티션 테이블 TP7은 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P2r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P2의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 또한, 최신 파티션 테이블 포인터가 일련의 파티션들 중 두 번째 파티션 P2에 의해 미리 점유된 NAND 메모리의 영역으로 더이상 포인팅하지 않으므로, 단계(308)에서, 다음 리프레시되는 파티션 P2r은 다시 일련의 파티션들 중 두 번째 파티션 P2로 지칭될 수 있다. 추가적으로, 일련의 파티션들 중 두 번째 파티션 P2의 초기 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 단계(308)에 의해, 스크럽 파티션 PScrub는 효율적으로 우로 추가로 시프트한다. 이 시점에서, 스크럽 파티션 PScrub는 여전히 리프레시되는 정적 데이터 파티션들 사이에 인터리빙된다. 단계들(304, 306 및 308)은 모두 일련의 바로 연속적인 단계들로서 함께 발생할 수 있다는 점이 주목되어야 한다. 또한, 단계(308)는 미리 카피된 파티션에 인접한 NAND 메모리의 일부분에 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션을 카피하는 것을 포함할 수 있다. 이 예시되는 예에서, 사전에 카피되지 않은 일련의 파티션들 중 그 다음 파티션은 일련의 파티션들 중 마지막 파티션 P3이다.
[0045] 도 3b에 또한 도시되는 단계(310)에서, 사전에 카피되지 않은 일련의 파티션들 중 마지막 파티션 P3의 카피는 스크럽 파티션 PScrub의 시작에서 인접한 메모리 레지스터들을 점유하는 마지막 리프레시되는 파티션 P3r을 생성하는데 사용된다. 일단 세 번째 리프레시되는 파티션 P3r이 생성되면, 그것이 정확한 카피임을 보장하기 위해 검증 검사가 수행될 수 있다. 세 번째 리프레시되는 파티션 P3r이 열악한 카피이면, 단계(310)에서 리프레시되는 파티션을 생성하는 단계(308)의 카피 프로세스가 반복될 수 있다. 그렇지 않으면, 단계(312)에서, 파티션 테이블 TP8은 NAND 메모리 디바이스에 저장되는 리프레시되는 파티션 P3r의 어드레스 또는 어드레스들의 범위로 포인팅하도록, 카피되는 파티션 P3의 시작 어드레스로부터의 포인터를 변경하도록 업데이트될 수 있다. 또한, 최신 파티션 테이블 포인터가 일련의 파티션들 중 첫 번째 파티션 P3에 의해 미리 점유되는 NAND 메모리의 영역으로 더이상 포인팅하지 않으므로, 단계(312)에서, 마지막 리프레시되는 파티션 P3r은 다시 일련의 파티션들 중 마지막 파티션 P3으로 지칭될 수 있다. 따라서, 일련의 파티션들 중 마지막 파티션 P3의 카피 이후, 일련의 파티션들 중 마지막 파티션 P3의 이전 위치가 스크럽 파티션 PScrub의 부분이 되기 때문에, 스크럽 파티션 PScrub는 모두 우측 방향으로 다시 시프트한다. 또한, 그것이 일련의 파티션들에 대해 카피될 마지막 파티션이었기 때문에, 스크럽 파티션 PScrub는 파티션 테이블들 TP7, TP8 외의 리프레시되는 정적 데이터 파티션들 사이에 더이상 인터리빙되지 않는다.
[0046] 다시, 리프레시될 일련의 데이터 이미지 파티션들은 전형적으로 3개 초과의 파티션들을 포함할 것이다. 예를 들어, 정적 데이터의 8개 내지 12개의 파티션들은 리프레시될 수 있고, 이 경우, 위에서 설명된 프로세스 단계들이 모든 파티션들이 이 방식으로 리프레시될 때까지 반복될 수 있다.
[0047] 도 2a 및 도 2b에 예시되는 리프레시 프로세스 단계들(200-212)이 수행되는 경우, 클럭은 시작될 수 있거나, 또는 프로세서는 메모리 레지스터에 현재 클럭 값을 저장할 수 있다. 이러한 클럭(또는 클럭 값)은 메모리 제어기(또는 다른 프로세서)가 정적 데이터 이미지의 다음 리프레시를 언제 수행할 것인지를 결정하는 것을 가능하게 할 수 있다. 예를 들어, 클럭(또는 클럭 값)이 마지막 데이터 이미지 리프레시 이후 4개월이 지났음을 표시하는 경우, 이를테면, 현재 클럭이 4개월만큼 NAND에 저장되는 마지막 리프레시되는 클럭 값과 상이한 경우, 도 3a 및 도 3b에 예시되는 리프레시 프로세스 단계들(300-312)이 수행되고 클럭이 재시작될 수 있거나, 또는 프로세서는 동일한 메모리 레지스터에 현재 클럭 값을 저장할 수 있다.
[0048] NAND 메모리 디바이스 내에서 데이터 이미지 파티션들을 카피하기 위한 양상 프로세스는 리프레시 사이클들의 임의의 부분 동안 전력 실패의 경우 페일 세이프 백업을 제공하도록 설계된다. 추가적으로, 위에서 설명된 프로세스 그룹들 각각의 이점은 일련의 파티션들을 리프레시할 필요가 있는 엠티 블록들의 양이 카피되는 블록들의 총량보다 상당히 적다는 것이다.
[0049] 추가 양상에서, 2개의 별개의 파티션 테이블들은 리프레시 프로세스 동안의 손실된 전력에 기인하여 발생할 수 있는 에러들에 대해 추가적인 보호로서 사용될 수 있다. 이 양상에서, 첫 번째 파티션 테이블이 리프레시되는 데이터 이미지에서의 파티션들의 어드레스 범위들로 포인팅하는 반면, 제 2 파티션 테이블은 리프레시되는 데이터 이미지의 새로운 어드레스 범위들로 포인팅하도록 업데이트될 수 있다. 일단 리프레시 프로세스가 완료되면, 타임스탬프(또는 파티션 테이블의 에이지(age)를 표시하는 다른 데이터)가 제 2 파티션 테이블에 추가될 수 있다. 이 타임스탬프(또는 다른 에이지 식별 데이터)는 NAND 메모리 디바이스에 저장되는 데이터 이미지에 액세스하는 경우 사용되어야 하는 파티션 테이블을 메모리 매니저에게 통지한다. 데이터 이미지가 신뢰성이 없어지기 전에 리프레시 프로세스가 달성되기 때문에, 2개의 파티션 테이블들의 사용은 프로세스가 전력 손실에 의해 인터럽트되는 경우에 조차도 적어도 하나의 파티션 테이블이 유휴 데이터로 포인팅하고 있음을 보장한다.
[0050] 도 4는 NAND 메모리 디바이스 내에 포함되거나 또는 그에 커플링되는 프로세서에 의해 수행될 수 있는 NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하기 위한 양상 방법(400)을 예시한다. 블록(410) 및 결정 블록(415)에서, 프로세서는 NAND 내의 스크럽 파티션이 리프레시될 데이터 이미지의 일련의 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정할 수 있다. 이 결정은 파티션 테이블에 저장되는 정보에 기초할 수 있다. 위에서 기술된 바와 같이, 스크럽 파티션은 NAND 메모리 디바이스에 저장되는 데이터의 파티션 테이블에서 식별되는 메모리 어드레스들의 범위 내에 포함되는 이 메모리 어드레스들일 수 있다.
[0051] 프로세서가 스크럽 파티션이 리프레시될 일련의 파티션들보다 높은 순서 어드레스들을 점유한다고 결정하는 것에 대한 응답으로(즉, 결정 블록(415) = "예"), 프로세서는 일련의 파티션들의 카피가 도 2a 및 도 2b에 예시되는 바와 같은 일련의 리프레시된 파티션들을 생성하기 위해 역 파티션 순서로 데이터 이미지를 구성하는 것을 수행할 수 있다. 역 파티션 순서는 가장 높은 순서 어드레스들과 연관된 파티션(즉, 일련의 파티션들 중 마지막 파티션)이 스크럽 파티션의 끝에 대해 첫 번째에 카피되고, 뒤이어, 프로세스를 통해 인접 파티션이 첫 번째 파티션이 카피될 때까지 계속되는 것을 의미한다. 단지 참조를 목적으로, 스크럽 파티션으로 카피되는 첫 번째 파티션은 첫 번째 리프레시되는 파티션으로 지칭되며, 결국 일련의 리프레시되는 파티션들 중 마지막 파티션이 될 것이다.
[0052] 따라서, 블록(420)에서, 아직 리프레시되지 않은 리프레시될 일련의 파티션들 중 마지막 파티션은 스크럽 파티션의 끝으로 프로세서에 의해 카피되어서, 그것의 가장 높은 어드레스는 리프레시 프로세스의 부분에 기록되지 않은 스크럽 부분의 가장 높은 어드레스를 점유한다. 그 리프레시되는 파티션에 대해 그것이 정확한 복제임을 확인하기 위해 검증 검사가 수행될 수 있다. 프로세서가 검증 검사가 네거티브(negative)라고 결정하는 것에 대한 응답으로, 프로세서는 블록(420)에서의 카피를 반복할 수 있다. 프로세서가 검증 검사가 포지티브(positive)라고 결정하는 것에 대한 응답으로, 블록(425)에서 프로세서는 리프레시되는 파티션으로 포인팅하도록 파티션 테이블을 업데이트할 수 있다. 파티션 테이블 TP은 2개의 별개의 파티션 테이블들을 포함할 수 있고, 여기서, 파티션 테이블을 업데이트하는 것은 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하는 롤링 카운터를 업데이트하는 것을 포함할 수 있다. 따라서, 파티션 테이블을 업데이트하는 것은 2개의 파티션 테이블들 중 가장 오래된 것을 업데이트하는 것 및 파티션 테이블이 언제 업데이트되었는지에 기초하여 시간 값을 저장하는 것을 포함할 수 있다. 이와는 무관하게, 파티션 테이블의 업데이트는 그것이 가장 최근에 카피된 파티션에 의해 미리 점유된 어드레스들로의 포인터들을 더이상 포함하지 않을 것을 의미한다. 이 방식으로, 스크럽 파티션이 한쪽 끝에서 블록들을 루스(loose)함에도 불구하고, 그것은 다른쪽 끝에서 추가되는(added-on) 동일한 수의 블록들을 획득한다. 따라서, 스크럽 파티션은 블록들(420-425)을 통해 카피하는 각각의 사이클에서 포지션을 시프트한다. 결정 블록(430)에서, 리프레시 프로세스를 관리하는 프로세서는 일련의 파티션들에서의 파티션들 모두가 카피되었는지 아니면 리프레시되었는지를 결정할 수 있다.
[0053] 프로세서가 리프레시될 더 많은 파티션들이 존재한다고 결정하는 것에 대한 응답으로(즉, 결정 블록(430) = "아니오"), 프로세서는 위에서 설명된 바와 같이, 블록(420)에서 일련의 파티션들 중 그 다음 파티션을 스크럽 파티션의 새로운 끝에 카피할 수 있다. 블록들(420 내지 430)에서의 동작들은 전체 일련의 파티션들이 역 파티션 순서로 카피될 때까지 사이클에서 프로세서에 의해 반복될 수 있다. 파티션 카피 사이클을 통한 두 번째 패스 상에서, 아직 카피되지 않은 일련의 파티션들 중 마지막 파티션은 일련의 파티션들 중 마지막 파티션에 대해 두 번째이다. 또한, 첫 번째 리프레시되는 파티션이 초기 스크럽 파티션의 마지막 부분을 대체하기 때문에, 아직 대체되지 않은 스크럽 파티션의 끝은 스크럽 파티션의 시작(즉, 더 낮은 순서 어드레스들)을 향해 이동할 것이다. 이 방식으로, 모든 일련의 파티션들이 카피될 때까지, 일련의 파티션들 중 마지막 파티션은 첫 번째에 카피되고, 일련의 파티션들 중 마지막 파티션에 대한 다음 것은 그 다음으로 카피되는 식이다. 또한, 일련의 파티션들 모두가 카피될 때까지, 일련의 리프레시되는 파티션들 중 마지막 파티션은 스크럽 파티션의 마지막 부분을 대체하고; 일련의 리프레시되는 파티션들 중 마지막 파티션에 대한 다음 것은 원래의 스크럽 파티션의 마지막 부분에 대한 다음 것을 대체하는 식이다. 일단 일련의 파티션들의 모든 파티션들이 카피되면, 스크럽 파티션은 데이터 이미지를 구성하는 현재 리프레시되는 일련의 파티션들의 것들보다 더 낮은 순서 블록들을 포함하게 효율적으로 재설정된다.
[0054] 결정 블록(415)으로 리턴하면, 프로세서가 스크럽 파티션이 리프레시될 일련의 파티션들보다 더 낮은 순서 어드레스들을 점유한다고 결정하는 것에 대한 응답으로(즉, 결정 블록(415) = "아니오"), 프로세서는 반대의 방식으로 리프레시 프로세스를 진행할 수 있다. 블록(440)에서, 프로세서는 아직 카피되지 않은 리프레시될 일련의 파티션들 중 첫 번째 파티션을 아직 대체되지 않은 스크럽 파티션의 (즉, 낮은 순서 어드레스들에서의) 시작에 카피할 수 있다. 이 환경에서, 일련의 파티션들의 카피는 일련의 리프레시되는 파티션들을 생성하도록 순차적 파티션 순서로 수행된다. 순차적 파티션 순서는 가장 낮은 순서 어드레스들(즉, 일련의 것들 중 첫 번째 것)과 연관된 파티션이 스크럽 파티션의 시작(즉, 첫 번째 어드레스에서의 시작)에 대해 첫 번째에 카피되는 것을 의미한다. 따라서, 카피는 원래의 스크럽 파티션 중 첫 번째 부분을 대체한다. 이 첫 번째 리프레시되는 파티션 P1r은 일련의 리프레시되는 파티션들 중 첫 번째이다. 프로세서는 그 첫 번째 리프레시되는 파티션에 대해 그것이 정확한 복제임을 확인하기 위해 검증 검사를 수행할 수 있다. 프로세서가 검증 검사가 네거티브라고 결정하는 것에 대한 응답으로, 프로세서는 블록(440)에서의 카피 동작을 반복할 수 있다. 프로세서가 검증 검사가 포지티브라고 결정하는 것에 대한 응답으로, 블록(445)에서 프로세서는 리프레시되는 파티션으로 포인팅하도록 파티션 테이블을 업데이트할 수 있다. 결정 블록(450)에서, 리프레시 프로세스를 관리하는 프로세서는 일련의 파티션들의 모든 파티션들이 카피되는지 아니면 리프레시되는지를 결정할 수 있다.
[0055] 프로세서가 리프레시될 더 많은 파티션들이 존재한다고 결정하는 것에 대한 응답으로(즉, 결정 블록(450) = "아니오"), 프로세서는 위에서 설명된 바와 같이, 블록(440)에서 일련의 파티션들 중 그 다음 파티션을 스크럽 파티션의 새로운 시작에 카피할 수 있다. 프로세서는 데이터 이미지의 전체 일련의 파티션들이 순차적 파티션 순서로 카피될 때까지 사이클에서 블록들(440 내지 450)에서의 동작들을 반복할 수 있다. 리프레시 사이클을 통한 두 번째 패스 상에서, 아직 카피되지 않은 일련의 첫 번째 리프레시되는 파티션들 중 첫 번째 파티션은 데이터 이미지를 구성하는 일련의 파티션들 중 두 번째 파티션이다. 또한, 두 번째 리프레시되는 파티션이 스크럽 파티션의 첫 번째 부분을 대체하기 때문에, 아직 대체되지 않은 스크럽 파티션의 시작은 스크럽 파티션의 끝(즉, 더 높은 순서 어드레스들)을 향해 이동할 것이다. 이 방식으로, 모든 일련의 파티션들이 카피될 때까지, 일련의 파티션들 중 첫 번째 파티션은 첫 번째에 카피되고, 일련의 파티션들 중 그 다음 파티션은 그 다음으로 카피되는 식이다. 또한, 일련의 파티션들 모두가 초기 스크럽 파티션에 카피될 때까지, 초기에, 일련의 파티션들 중 첫 번째 파티션은 스크럽 파티션의 첫 번째 부분을 대체하고, 일련의 파티션들 중 그 다음 것은 스크럽 파티션의 다음 부분을 대체하는 식이다. 일단 일련의 파티션들의 모든 파티션들이 카피되면, 스크럽 파티션은 데이터 이미지를 구성하는 새롭게 리프레시되는 일련의 파티션들 및 더 높은 순서 어드레스들을 갖는 블록들을 포함하게 효율적으로 재설정된다. 따라서, 다음 리프레시 프로세스는 위에서 설명된 바와 같은 동작들(420 내지 430)에서 역 순서로 수행될 것이다.
[0056] 프로세서가 일련의 파티션들의 모든 파티션들이 카피 또는 리프레시되었다고 결정하는 것에 대한 응답으로(즉, 결정 블록(430) = "예" 또는 결정 블록(450) = "예"), 결정 블록(460)에서, 프로세서는 클럭을 검사하거나 또는 저장되는 마지막-리프레시 클럭 값(예를 들어, 날짜/시간 값)을 현재 클럭과 비교하여 데이터 이미지를 다시 리프레시할 시간인지 여부를 결정할 수 있다. 예를 들어, NAND 메모리 디바이스는 데이터 이미지가 최악의 경우의 설계 조건들 하에서도 신뢰성있게 유지됨을 보장하기 위해 매 4개월마다 리프레시될 필요가 있을 수 있다. 프로세서는 결정 블록(460)에서 주기적으로 클럭을 검사하거나 또는 현재 클럭을 저장되는 마지막-리프레시되는 클럭 값과 비교할 수 있고, 프로세서가 데이터 이미지를 리프레시할 시간이 아니라고 결정하는 한(즉, 결정 블록(460) = "아니오") 계속 기다릴 수 있다. NAND 메모리 디바이스를 관리하는 프로세서가 데이터 이미지를 리프레시할 시간이라고 결정하는 것에 대한 응답으로(즉, 결정 블록(460) = "예"), 블록(405)에서, 프로세서는 클럭을 리셋하거나 또는 NAND 메모리 디바이스의 리프레시를 관리하는 프로세서가 다음 리프레시가 언제 수행되어야 하는지를 추후에 결정할 수 있도록 현재 값을 레지스터에서의 마지막-리프레시 날짜/시간으로서 저장할 수 있다. 블록(405)으로부터의 리셋 클럭 시간 또는 저장되는 데이터/시간을 사용하여, 마지막 스크럽 시간이 검사될 수 있고 그리고/또는 타이머가 다음 스크럽이 자동으로 수행되거나 또는 수행되도록 스케줄링되는 경우, 미래의 원하는 시간에 정적 데이터 이미지의 리프레시를 트리거링하도록 세팅될 수 있다. 블록들(420, 425, 430, 440, 445, 450)에 대해 위에서 설명된 파티션들을 리프레시하는 프로세스는, 부트업에서 디바이스가 "리프레시" 동작을 재개하여야 하도록, 긴 기간들의 시간동안 인터럽트될 수 있다(예를 들어, NAND 메모리 디바이스는 긴 기간들 동안 파워 다운될 수 있음). 따라서, 리프레시 프로세스 전에 블록(405)에서 클럭을 리셋하고 그리고/또는 현재 시간을 저장하는 것은, 모든 정적 데이터가, 더 짧은 기간에서가 아니라면, 주어진 기간의 끝까지 최대한으로 리프레싱됨을 보장할 수 있다. 마지막-리프레시되는 날짜/시간은 (즉, 동적 데이터가 저장되는) NAND 메모리 디바이스의 파일 시스템 부분에 저장될 수 있다. 일단 블록(405)에서 클럭이 리셋되거나 또는 현재 날짜/시간이 저장되면, 프로세서는 블록(410)에서의 동작들로 시작하여 리프레시 프로세스를 반복할 수 있다.
[0057] 스크럽 파티션이 블록들(410 및 415)에서 리프레싱될 데이터 이미지보다 높은 어드레스들의 범위를 점유하는지 아니면 낮은 어드레스들의 범위를 점유하는지를 결정하기보다는, 파티션 순서로 파티션들을 리프레시할 것인지(즉, 블록들(440-450)에서의 동작들을 수행함) 아니면 역 파티션 순서로 파티션들을 리프레시할 것인지(즉, 블록들(420-430)에서의 동작들을 수행함)에 대한 프로세서의 결정은 수행되는 마지막 리프레시의 순서 또는 수행될 다음 리프레시의 순서를 표시하는, 메모리에 저장되는 자료(datum) 또는 플래그에 기초할 수 있다. 이 자료 또는 플래그는, 리프레시 사이클의 마지막에서, 이를테면, 모든 파티션들이 리프레시된 이후(즉, 결정 블록(430) = "예" 또는 결정 블록(450) = "예") 세팅될 수 있다. 리프레시가 수행될 다음 시간에서(즉, 결정 블록(460) = "예"), 프로세서는 자료 또는 플래그를 검사하고, 블록들(420-430)에서의 동작들 또는 블록들(440-450)에서의 동작들에 따라 진행할 수 있다.
[0058] 각각의 파티션의 정확한 카피가 생성됨을 보장하는 부분으로서, 검증 검사가 위에서 설명된 리프레시 프로세스들 동안 수행될 수 있다. 검증 검사는 해시-기반 및 비트-바이-비트 분석 방법을 포함하는 다양한 방법들에 의해 수행될 수 있다. 해시-기반 방법에서, 해시 함수는 각각의 파티션에 대해 그리고 그것의 카피에 대해 적용(run)되어서 각각의 해시 값을 생성하고, 2개의 해시 값들을 비교하여 (예를 들어, 값들을 감산함으로써) 그들이 동일한지 여부를 결정할 수 있다. 2개의 해시 값들이 동일하지 않다면, 이것은 파티션에 카피되는 것에 비트 에러가 존재한다는 것을 의미하고, 이 경우, 카피 동작은 반복될 수 있다. 해시 함수에 의해 생성되는 해시 값들은 카피가 원래의 것과 매칭하는지 여부를 결정하기 위해 단순한 산술 함수에서 빨리 조작될 수 있는 파티션 내의 원래의 그리고 카피된 데이터에 대한 프록시들로서 동작한다. 첫 번째 및 두 번째 해시 값들의 비교가 매칭하는 경우, 검증 검사는 포지티브이고, 첫 번째 및 두 번째 해시 값들의 비교가 매칭하지 않는 경우, 검증 검사는 네거티브이다. 해시 함수들이 수행하기에 빠르고 비교가 단순한 산술 함수이기 때문에, 해시-기반 검증 방법은 원래의 그리고 카피 파티션들의 비트-바이-비트 비교보다 훨씬 빠르고 적은 프로세싱 자원들을 소비할 수 있다.
[0059] 다양한 양상들은 다양한 컴퓨팅 디바이스들 중 임의의 것으로 그리고/또는 이를 통해 구현될 수 있고, 이들의 예는 셀룰러 전화의 형태로 도 5에 예시된다. 다양한 양상들은 다양한 다른 컴퓨팅 디바이스들, 이를테면, 태블릿 컴퓨터, 랩탑 컴퓨터, 데스크탑 컴퓨터 또는 다른 컴퓨팅 디바이스들 중 임의의 것으로 그리고/또는 이를 통해 구현될 수 있다. 다양한 양상들에서, 컴퓨팅 디바이스(500)는 터치스크린 제어기(504) 및 내부 메모리(506)에 커플링된 프로세서(502)를 포함할 수 있다. 프로세서(502)는 일반적 또는 특정 프로세싱 태스크들에 대해 지정되는 하나 또는 그 초과의 멀티코어 IC들일 수 있다. 내부 메모리(506)는 NAND와 같은 휘발성 또는 비휘발성 메모리일 수 있으며, 또한 안전한 그리고/또는 암호화된 메모리, 안전하지 않은 그리고/또는 암호화되지 않은 메모리 또는 이들의 임의의 결합일 수 있다. 프로세서(502)는 터치스크린 제어기(504)에 커플링될 수 있다. 터치스크린 제어기(504) 및 프로세서(502)는 또한, 터치스크린 패널(512), 이를테면, 저항성-감지 터치스크린, 용량성-감지 터치스크린, 적외선 감지터치스크린 등에 커플링될 수 있다. 대안적으로, 다양한 양상들은 터치스크린 제어기, 터치스크린 또는 임의의 형태의 스크린 또는 다이렉트 데이터 인터페이스, 이를테면, 데이터 카드, 무선 핫스팟 디바이스, 네트워크 컴포넌트, 주변 메모리 디바이스 또는 유사한 "헤드리스" 디바이스들을 포함하지 않는 다양한 디바이스들 중 임의의 것으로 그리고/또는 이를 통해 구현될 수 있다. 컴퓨팅 디바이스(500)는 하나 또는 그 초과의 라디오 신호 트랜시버들(508)(예를 들어, Peanut?, Bluetooth?, Zigbee?, Wi-Fi, RF 라디오) 및 서로 그리고/또는 프로세서(502)에 커플링되는 전송 및 수신을 위한 안테나들(510)을 가질 수 있다. 트랜시버들(508) 및 안테나들(510)은 다양한 무선 송신 프로토콜 스택들 및 인터페이스들을 구현하기 위해 위에서-언급된 회로를 통해 사용될 수 있다. 컴퓨팅 디바이스(500)는 셀룰러 네트워크를 통해 통신을 가능하게 하고 프로세서에 커플링된 셀룰러 네트워크 무선 모뎀 칩(516)을 포함할 수 있다. 컴퓨팅 디바이스(500)는 프로세서(502)에 커플링된 주변 디바이스 연결 인터페이스(518)를 포함할 수 있다. 주변 디바이스 연결 인터페이스(518)는 단수형으로는 하나의 타입의 연결을 수용하도록 구성되거나, 복수형으로는 공통의 또는 사유의 다양한 타입들의 물리적 그리고 통신 연결들, 이를테면, USB, FireWire, Thunderbolt, 또는 PCIe를 수용하도록 구성될 수 있다. 주변 디바이스 연결 인터페이스(518)는 또한, 유사하게 구성되는 주변 디바이스 연결 포트(도시되지 않음)에 커플링될 수 있다. 컴퓨팅 디바이스(500)는 또한, 오디오 출력들을 제공하기 위한 스피커들(514)을 포함할 수 있다. 컴퓨팅 디바이스(500)는 또한, 본원에서 논의되는 컴포넌트들 전부 또는 그 일부를 포함하기 위한, 플라스틱, 금속 또는 재료들의 결합으로 구성되는 하우징(520)을 포함할 수 있다. 컴퓨팅 디바이스(500)는 프로세서(502)에 커플링된 전력 소스(522), 이를테면, 일회용 또는 재충전가능한 배터리를 포함할 수 있다. 재충전가능한 배터리는 또한, 컴퓨팅 디바이스(500) 외부의 소스로부터의 충전 전류를 수신하기 위해 주변 디바이스 연결 포트에 커플링될 수 있다.
[0060] 본원에 설명되는 다양한 양상들에서의 프로세서들은 위에서 설명된 다양한 양상들의 기능들을 포함하는 다양한 기능들을 수행하기 위해 명령들(즉, 소프트웨어 명령들, 이를테면, 애플리케이션들)에 의해 구성될 수 있는 임의의 프로그래밍가능한 마이크로프로세서, 마이크로컴퓨터 또는 다수의 프로세서 칩 또는 칩들일 수 있다. 일부 디바이스들에서, 무선 통신 기능들에 전용인 하나의 프로세서 및 동작 중인 다른 애플리케이션들에 전용인 하나의 프로세서와 같은 다수의 프로세서들이 제공될 수 있다. 전형적으로, 소프트웨어 애플리케이션들은 그들이 프로세서들에 액세스 및 로딩되기 전에 내부 메모리에 저장될 수 있다. 프로세서들은 애플리케이션 명령들을 저장하기에 충분한 내부 메모리를 포함할 수 있다. 많은 디바이스들에서, 내부 메모리는 휘발성 또는 비휘발성 메모리, 이를테면, 플래시 메모리 또는 이 둘의 혼합일 수 있다. 이러한 설명을 목적으로, 메모리에 대한 일반적 지칭은 프로세서 그 자체 내의 디바이스 및 메모리로 플러깅되는 내부 메모리 또는 탈착식 메모리를 포함하는, 프로세서에 의해 액세스가능한 메모리를 지칭한다.
[0061] 위의 방법 설명들 및 프로세스 흐름도들은 단지 예시적 예들로서 제공되며, 다양한 양상들의 블록들이 제시되는 순서로 수행되어야 함을 요구 또는 함축하도록 의도되지 않는다. 당업자에 의해 인식될 바와 같이, 위의 양상들에서의 블록들의 순서는 임의의 순서로 수행될 수 있다.
[0062] "그 후", "그 다음", "다음으로" 등과 같은 용어들은 블록들의 순서를 제한하도록 의도되지 않고; 이 용어들은 단순히, 방법의 설명을 통해 판독자를 안내하는데 사용된다. 추가로, 예를 들어, 단수 형태들("a", "an" 및 "the")을 사용하는 단수형의 청구항 엘리먼트들에 대한 임의의 지칭은 엘리먼트를 단수형으로 제한하는 것으로 해석되지 않을 것이다.
[0063] 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적 논리 블록들 및 프로세스 흐름도 블록들은 전자 하드웨어, 컴퓨터 소프트웨어 또는 이 둘의 결합들로서 구현될 수 있다. 하드웨어 및 소프트웨어의 이러한 상호교환가능성을 명백하게 예시하기 위해, 다양한 예시적 컴포넌트들, 블록들, 모듈들, 회로들 및 블록들이 일반적으로 그들의 기능에 관하여 위에서 설명되었다. 이러한 기능이 하드웨어로서 구현되는지 아니면 소프트웨어로서 구현되는지는 전체 시스템 상에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은 각각의 특정 애플리케이션에 대해 다양한 방식들로 설명되는 기능을 구현할 수 있지만, 이러한 구현 판정들은 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0064] 본원에서 개시되는 양상들과 관련하여 설명되는 다양한 예시적 논리들, 논리 블록들, 모듈들 및 회로들을 구현하는데 사용되는 하드웨어는 범용 프로세서들, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그래밍가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본원에서 설명되는 기능들을 수행하도록 설계되는 이들의 임의의 결합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한, 컴퓨팅 디바이스들의 결합, 예를 들어, DSP 및 마이크로프로세서의 결합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 또는 그 초과의 마이크로프로세서들 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 대안적으로, 일부 블록들 또는 방법들은 주어진 기능에 특정적인 회로에 의해 수행될 수 있다.
[0065] 하나 또는 그 초과의 예시적 양상들에서, 설명되는 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 결합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 기능들은 바-일시적 컴퓨터 판독가능한 저장 매체 또는 비-일시적 프로세서 판독가능한 저장 매체 상에 하나 또는 그 초과의 명령들 또는 코드로서 저장될 수 있다. 본원에서 개시되는 방법 또는 알고리즘의 동작들은 비-일시적 컴퓨터 판독가능한 또는 프로세서 판독가능한 저장 매체 상에 상주할 수 있는 프로세서 실행가능한 소프트웨어 모듈로 구현될 수 있다. 비-일시적 컴퓨터 판독가능한 또는 프로세서 판독가능한 저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수 있는 임의의 저장 매체들일 수 있다. 제한이 아닌 예로서, 이러한 비-일시적 컴퓨터 판독가능한 또는 프로세서 판독가능한 매체들은 RAM, ROM, EEPROM, FLASH 메모리, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 원하는 프로그램 코드를 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 본원에서 사용되는 바와 같은 디스크(disk 및 disc)는 CD(compact disc), 레이저 디스크(disc), 광학 디스크(disc), DVD(digital versatile disc), 플로피 디스크(disk) 및 블루-레이 디스크(disc)를 포함하며, 여기서 디스크(disk)들은 통상적으로 데이터를 자기적으로 재생하는 반면, 디스크(disc)들은 레이저들을 이용하여 데이터를 광학적으로 재생한다. 위의 것들의 결합들은 또한, 비-일시적 컴퓨터 판독가능한 그리고 프로세서 판독가능한 매체들의 범위 내에 포함된다. 추가적으로, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 물건에 포함될 수 있는, 비-일시적 컴퓨터 프로세서 판독가능한 매체 및/또는 컴퓨터 판독가능한 매체 상의 코드들 및/또는 명령들 중 하나 또는 이들의 임의의 결합 또는 세트로서 상주할 수 있다.
[0066] 당업자는 동일한 기초의 근본적 메커니즘들 및 방법들을 여전히 이용하면서, 개시된 양상들의 양상들의 많은 가능한 수정들 및 결합들이 사용될 수 있다는 것을 인식할 것이다. 설명을 목적으로, 위의 설명은 특정 양상들을 참조로 기재되었다. 그러나, 위의 예시적 논의들은 총망라하는 것(exhaustive)으로 또는 개시된 바로 그 형태들로 본 개시를 제한하도록 의도되지 않는다. 위의 교시 내용들을 고려하여 많은 수정들 및 변화들이 가능하다. 양상들은, 본 개시의 원리들 및 이들의 실제 응용들을 설명하고, 당업자들이 참작되는 특정 사용에 적합한 다양한 수정들에 본 개시 내용 및 다양한 양상들을 가장 알맞게 활용할 수 있게 하기 위해 선택되고 설명되었다. 따라서, 본 개시는 본원에서 나타내고 설명되는 양상들 및 개시되는 기술들의 개별 양상들 및 개별 양상들에 제한되도록 의도되는 것이 아니라, 본원에서 개시되는 다음의 청구항들, 원리들 및 신규한 특징들과 일치하는 가장 넓은 범위를 따를 것이다.

Claims (30)

  1. NAND 메모리 디바이스 상의 데이터 이미지를 리프레시(refresh)하는 방법으로서,
    상기 데이터 이미지는 상기 NAND 메모리 디바이스에 순차적으로 저장되는 일련의 파티션(partition)들로 분할되고, 첫 번째 어드레스에서 시작하는 첫 번째 파티션은 상기 NAND 메모리 디바이스에 저장되고, 마지막 어드레스에서 종료하는 마지막 파티션은 상기 NAND 메모리 디바이스에 저장되고, 그리고 각각의 파티션의 어드레스들이 파티션 테이블에 저장되고, 상기 첫 번째 어드레스는 상기 마지막 어드레스보다 낮은 순서(order) 어드레스이며,
    상기 방법은,
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 스크럽(scrub) 부분에 일련의 정적 데이터 파티션들을, 하나의 리프레시 사이클의 부분으로서, 순차적으로 카피(copy)하는 단계; 및
    각각의 정적 데이터 파티션이 상기 스크럽 부분에 저장될 때 상기 파티션 테이블을 업데이트하는 단계를 포함하고,
    상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 단계는,
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 마지막 정적 데이터 파티션으로 시작하여 첫 번째 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 단계; 및
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 상기 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 첫 번째 정적 데이터 파티션으로 시작하여 상기 마지막 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 단계를 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  2. 제 1 항에 있어서,
    현재 클럭 값을 상기 NAND 메모리 디바이스에 저장되는 마지막 리프레시되는 클럭 값과 비교함으로써 상기 데이터 이미지가 리프레시되어야 하는지 여부를 결정하는 단계;
    상기 데이터 이미지가 리프레시되어야 한다고 결정하는 것에 대한 응답으로 상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 단계; 및
    상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 단계를 더 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  3. 제 1 항에 있어서,
    상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 전에 클럭을 시작하는 단계;
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시하는지 여부를 결정하는 단계; 및
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시한다고 결정하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 단계를 더 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  4. 제 1 항에 있어서,
    상기 파티션 테이블에 저장되는 파티션 어드레스들에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 단계를 더 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  5. 제 1 항에 있어서,
    상기 마지막 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지 아니면 상기 첫 번째 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지에 기초하는 상기 NAND 메모리 디바이스에 저장되는 자료(datum)에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 단계를 더 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  6. 제 1 항에 있어서,
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 단계는 상기 일련의 정적 데이터 파티션들의 각각의 카피에 대해 검증 검사를 수행하는 단계를 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  7. 제 1 항에 있어서,
    상기 일련의 정적 데이터 파티션들 중 적어도 하나는, 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 전에 상기 일련의 정적 데이터 파티션들 중 적어도 하나의 다른 것에 의해 이미 점유된 어드레스에 카피되는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  8. 제 1 항에 있어서,
    상기 파티션 테이블은 2개의 파티션 테이블들을 포함하고,
    상기 2개의 파티션 테이블들 각각은 상기 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하는 롤링 카운터(rolling counter)를 저장하고,
    상기 파티션 테이블을 업데이트하는 단계는, 상기 2개의 파티션 테이블들 중 가장 오래된 것을 업데이트하고, 그리고 상기 파티션 테이블이 언제 업데이트되었는지에 기초하여 시스템 파일에 시간 값을 저장하는 단계를 포함하는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  9. 제 1 항에 있어서,
    상기 NAND 메모리 디바이스는 상기 데이터 이미지의 일부로서 저장되는 정적 데이터 및 동적 데이터 둘다를 포함하고, 그리고
    리프레시되는 상기 일련의 정적 데이터 파티션들은 상기 정적 데이터를 포함하고 그리고 동적 데이터는 리프레시되지 않는,
    NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하는 방법.
  10. 컴퓨팅 디바이스로서,
    데이터 이미지를 저장하는 NAND 메모리 디바이스 ― 상기 데이터 이미지는 상기 NAND 메모리 디바이스에 순차적으로 저장되는 일련의 정적 데이터 파티션들로 분할되고, 첫 번째 어드레스에서 시작하는 첫 번째 정적 데이터 파티션은 상기 NAND 메모리 디바이스에 저장되고, 마지막 어드레스에서 종료하는 마지막 정적 데이터 파티션은 상기 NAND 메모리 디바이스에 저장되고, 그리고 각각의 정적 데이터 파티션의 어드레스들이 파티션 테이블에 저장되고, 상기 첫 번째 어드레스는 상기 마지막 어드레스보다 낮은 순서 어드레스임 ― ; 및
    상기 NAND 메모리 디바이스에 커플링되며 프로세서 실행가능한 명령들로 구성되는 프로세서를 포함하고,
    상기 프로세서 실행가능한 명령들은,
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 스크럽 부분에 일련의 정적 데이터 파티션들을, 하나의 리프레시 사이클의 부분으로서, 순차적으로 카피하는 것; 및
    각각의 정적 데이터 파티션이 상기 스크럽 부분에 저장될 때 상기 파티션 테이블을 업데이트하는 것을 포함하는 동작들을 수행하기 위한 것이고,
    상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 것은,
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 상기 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 마지막 정적 데이터 파티션으로 시작하여 상기 첫 번째 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 것; 및
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 상기 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 첫 번째 정적 데이터 파티션으로 시작하여 상기 마지막 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 것을 포함하는,
    컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    현재 클럭 값을 상기 NAND 메모리 디바이스에 저장되는 마지막 리프레시되는 클럭 값과 비교함으로써 상기 데이터 이미지가 리프레시되어야 하는지 여부를 결정하는 것;
    상기 데이터 이미지가 리프레시되어야 한다고 결정하는 것에 대한 응답으로 상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것; 및
    상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는,
    컴퓨팅 디바이스.
  12. 제 10 항에 있어서,
    상기 프로세서는,
    상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 전에 클럭을 시작하는 것;
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시하는지 여부를 결정하는 것; 및
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시한다고 결정하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는,
    컴퓨팅 디바이스.
  13. 제 10 항에 있어서,
    상기 프로세서는, 상기 파티션 테이블에 저장되는 파티션 어드레스들에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는,
    컴퓨팅 디바이스.
  14. 제 10 항에 있어서,
    상기 프로세서는,
    상기 마지막 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지 아니면 상기 첫 번째 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지에 기초하는 상기 NAND 메모리 디바이스에 저장되는 자료에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것을 더 포함하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는,
    컴퓨팅 디바이스.
  15. 제 10 항에 있어서,
    상기 프로세서는, 상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 것이 상기 일련의 정적 데이터 파티션들의 각각의 카피에 대해 검증 검사를 수행하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되는,
    컴퓨팅 디바이스.
  16. 제 10 항에 있어서,
    상기 프로세서는, 상기 파티션 테이블이 2개의 파티션 테이블들을 포함하고, 상기 2개의 파티션 테이블들 각각이, 상기 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하는 롤링 카운터를 저장하도록 하는 동작들을 수행하기 위한 프로세서 실행가능한 명령들로 구성되고,
    상기 파티션 테이블을 업데이트하는 것은, 상기 2개의 파티션 테이블들 중 가장 오래된 것을 업데이트하고, 그리고 상기 파티션 테이블이 언제 업데이트되었는지에 기초하여 시스템 파일에 시간 값을 저장하는 것을 포함하는,
    컴퓨팅 디바이스.
  17. 컴퓨팅 디바이스로서,
    NAND 메모리 디바이스에 순차적으로 저장되는 일련의 파티션들로 분할되는 데이터 이미지를 저장하는 NAND 메모리 디바이스 ― 첫 번째 어드레스에서 시작하는 첫 번째 파티션은 상기 NAND 메모리 디바이스에 저장되고, 마지막 어드레스에서 종료하는 마지막 파티션은 상기 NAND 메모리 디바이스에 저장되고, 그리고 각각의 파티션의 어드레스들이 파티션 테이블에 저장되고, 상기 첫 번째 어드레스는 상기 마지막 어드레스보다 낮은 순서 어드레스임 ― ; 및
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 스크럽 부분에 일련의 정적 데이터 파티션들을, 하나의 리프레시 사이클의 부분으로서, 순차적으로 카피하기 위한 수단; 및
    각각의 정적 데이터 파티션이 상기 스크럽 부분에 저장될 때 상기 파티션 테이블을 업데이트하기 위한 수단을 포함하고,
    상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하기 위한 수단은,
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 마지막 정적 데이터 파티션으로 시작하여 첫 번째 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하기 위한 수단; 및
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 상기 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 첫 번째 정적 데이터 파티션으로 시작하여 상기 마지막 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  18. 제 17 항에 있어서,
    현재 클럭 값을 상기 NAND 메모리 디바이스에 저장되는 마지막 리프레시되는 클럭 값과 비교함으로써 상기 데이터 이미지가 리프레시되어야 하는지 여부를 결정하기 위한 수단;
    상기 데이터 이미지가 리프레시되어야 한다고 결정하는 것에 대한 응답으로 상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하기 위한 수단; 및
    상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 위한 동작들을 개시하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  19. 제 17 항에 있어서,
    상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 전에 클럭을 시작하기 위한 수단;
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시하는지 여부를 결정하기 위한 수단; 및
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시한다고 결정하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 위한 동작들을 개시하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  20. 제 17 항에 있어서,
    상기 파티션 테이블에 저장되는 파티션 어드레스들에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  21. 제 17 항에 있어서,
    상기 마지막 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지 아니면 상기 첫 번째 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지에 기초하는 상기 NAND 메모리 디바이스에 저장되는 자료에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하기 위한 수단을 더 포함하는,
    컴퓨팅 디바이스.
  22. 제 17 항에 있어서,
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하기 위한 수단은 상기 일련의 정적 데이터 파티션들의 각각의 카피에 대해 검증 검사를 수행하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  23. 제 17 항에 있어서,
    상기 파티션 테이블은 2개의 파티션 테이블들을 포함하고,
    상기 2개의 파티션 테이블들 각각은, 상기 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하는 롤링 카운터를 저장하고,
    상기 파티션 테이블을 업데이트하기 위한 수단은, 상기 2개의 파티션 테이블들 중 가장 오래된 것을 업데이트하고, 그리고 상기 파티션 테이블이 언제 업데이트되었는지에 기초하여 시스템 파일에 시간 값을 저장하기 위한 수단을 포함하는,
    컴퓨팅 디바이스.
  24. 프로세서 실행가능한 명령들이 저장된 프로세서 판독가능한 저장 매체로서,
    상기 프로세서 실행가능한 명령들은, 프로세서로 하여금, NAND 메모리 디바이스 상의 데이터 이미지를 리프레시하기 위한 동작들을 수행하게 하도록 구성되고, 상기 데이터 이미지는 상기 NAND 메모리 디바이스에 순차적으로 저장되는 일련의 파티션들로 분할되고, 첫 번째 어드레스에서 시작하는 첫 번째 파티션은 상기 NAND 메모리 디바이스에 저장되고, 마지막 어드레스에서 종료하는 마지막 파티션은 상기 NAND 메모리 디바이스에 저장되고, 그리고 각각의 파티션의 어드레스들이 파티션 테이블에 저장되고, 상기 첫 번째 어드레스는 상기 마지막 어드레스보다 낮은 순서 어드레스이며,
    상기 동작들은,
    상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 스크럽 부분에 일련의 정적 데이터 파티션들을, 하나의 리프레시 사이클의 부분으로서, 순차적으로 카피하는 것; 및
    각각의 정적 데이터 파티션이 상기 스크럽 부분에 저장될 때 상기 파티션 테이블을 업데이트하는 것을 포함하고,
    상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 것은,
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 마지막 정적 데이터 파티션의 마지막 어드레스보다 높은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 마지막 정적 데이터 파티션으로 시작하여 첫 번째 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 것; 및
    상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들 중 상기 첫 번째 정적 데이터 파티션의 첫 번째 어드레스보다 낮은 순서의 하나 또는 그 초과의 어드레스들을 점유하는 경우, 상기 첫 번째 정적 데이터 파티션으로 시작하여 상기 마지막 정적 데이터 파티션까지 순차적으로 진행하여 상기 일련의 정적 데이터 파티션들 각각을 개별적으로 카피하는 것을 포함하는,
    프로세서 판독가능한 저장 매체.
  25. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금,
    현재 클럭 값을 상기 NAND 메모리 디바이스에 저장되는 마지막 리프레시되는 클럭 값과 비교함으로써 상기 데이터 이미지가 리프레시되어야 하는지 여부를 결정하는 것;
    상기 데이터 이미지가 리프레시되어야 한다고 결정하는 것에 대한 응답으로 상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것; 및
    상기 마지막 리프레시되는 클럭 값을 대체하는 상기 현재 클럭 값을 저장하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는,
    프로세서 판독가능한 저장 매체.
  26. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금,
    상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하기 전에 클럭을 시작하는 것;
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시하는지 여부를 결정하는 것; 및
    상기 클럭이 상기 데이터 이미지가 리프레시되어야 함을 표시한다고 결정하는 것에 대한 응답으로 상기 NAND 메모리 디바이스 상의 상기 데이터 이미지를 리프레시하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는,
    프로세서 판독가능한 저장 매체.
  27. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금, 상기 파티션 테이블에 저장되는 파티션 어드레스들에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는,
    프로세서 판독가능한 저장 매체.
  28. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금, 상기 마지막 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지 아니면 상기 첫 번째 정적 데이터 파티션으로 시작하는 파티션들이 마지막 리프레시되었는지에 기초하는 상기 NAND 메모리 디바이스에 저장되는 자료에 기초하여, 상기 스크럽 부분이 상기 일련의 정적 데이터 파티션들보다 높은 순서 어드레스들을 점유하는지 여부를 결정하는 것을 더 포함하는 동작들을 수행하게 하도록 구성되는,
    프로세서 판독가능한 저장 매체.
  29. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금, 상기 파티션 테이블에서 식별되는 데이터 이미지 파티션들을 저장하지 않는 상기 NAND 메모리 디바이스의 상기 스크럽 부분에 상기 일련의 정적 데이터 파티션들을 순차적으로 카피하는 것이 상기 일련의 정적 데이터 파티션들의 각각의 카피에 대해 검증 검사를 수행하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는,
    프로세서 판독가능한 저장 매체.
  30. 제 24 항에 있어서,
    상기 저장된 프로세서 실행가능한 명령들은, 상기 프로세서로 하여금, 상기 파티션 테이블이 2개의 파티션 테이블들을 포함하고, 상기 2개의 파티션 테이블들 각각이, 상기 2개의 파티션 테이블들 중 어떤 것이 마지막 리프레시되었는지를 표시하는 롤링 카운터를 저장하도록 하는 동작들을 수행하게 하도록 구성되고,
    상기 파티션 테이블을 업데이트하는 것은, 상기 2개의 파티션 테이블들 중 가장 오래된 것을 업데이트하고, 그리고 상기 파티션 테이블이 언제 업데이트되었는지에 기초하여 시스템 파일에 시간 값을 저장하는 것을 포함하는,
    프로세서 판독가능한 저장 매체.
KR1020167015272A 2013-11-11 2014-11-07 Nand 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시 KR101736944B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361902394P 2013-11-11 2013-11-11
US61/902,394 2013-11-11
US14/195,928 2014-03-04
US14/195,928 US9329802B2 (en) 2013-11-11 2014-03-04 Fail safe refresh of data stored in NAND memory device
PCT/US2014/064661 WO2015070082A1 (en) 2013-11-11 2014-11-07 Fail safe refresh of data stored in nand memory device

Publications (2)

Publication Number Publication Date
KR20160075792A KR20160075792A (ko) 2016-06-29
KR101736944B1 true KR101736944B1 (ko) 2017-05-17

Family

ID=52003055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167015272A KR101736944B1 (ko) 2013-11-11 2014-11-07 Nand 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시

Country Status (6)

Country Link
US (1) US9329802B2 (ko)
EP (1) EP3069349B1 (ko)
JP (1) JP6105165B2 (ko)
KR (1) KR101736944B1 (ko)
CN (1) CN105723462B (ko)
WO (1) WO2015070082A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014208609A1 (de) * 2014-05-08 2015-11-26 Robert Bosch Gmbh Refresh eines Speicherbereichs einer nichtflüchtigen Speichereinheit
DE102014211111A1 (de) * 2014-06-11 2015-12-17 Robert Bosch Gmbh Refresh eines Speicherbereichs einer nichtflüchtigen Speichereinheit
KR20160023274A (ko) * 2014-08-22 2016-03-03 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10956245B1 (en) 2017-07-28 2021-03-23 EMC IP Holding Company LLC Storage system with host-directed error scanning of solid-state storage devices
CN111666177B (zh) * 2020-05-07 2023-06-30 中国石油天然气股份有限公司 一种气液两相流量计仪表数据存储方法
KR20230001984A (ko) 2021-06-29 2023-01-05 인천대학교 산학협력단 토복령 추출물 유래 성분을 포함하는 전립선암 전이 억제용 조성물 내지 이의 용도
US11900136B2 (en) * 2021-07-28 2024-02-13 Sony Interactive Entertainment LLC AoT compiler for a legacy game
CN115686584B (zh) * 2021-07-30 2023-11-17 荣耀终端有限公司 一种操作系统升级方法、设备、存储介质及计算机程序产品
CN116661696B (zh) * 2023-06-05 2024-03-22 深圳市航顺芯片技术研发有限公司 一种基于快闪存储器的存储方法及相关装置
CN116540947B (zh) * 2023-07-04 2023-10-13 苏州萨沙迈半导体有限公司 数据擦写的方法、装置、存储介质和单片机

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050135155A1 (en) 2003-12-19 2005-06-23 Renesas Technology Corp. Nonvolatile semiconductor memory device
WO2005106886A3 (en) 2004-04-29 2005-12-01 Milsys Ltd Refreshing data stored in a flash memory
WO2009042298A1 (en) 2007-09-26 2009-04-02 Rambus Inc. Flash memory refresh

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4001945B2 (ja) * 1995-10-13 2007-10-31 ソニー株式会社 半導体メモリのリフレッシュ方法
JPH10302484A (ja) * 1997-04-30 1998-11-13 Hitachi Ltd 不揮発性メモリを用いた記憶装置、および、その管理方法
JP2000298626A (ja) * 1999-04-13 2000-10-24 Nec Corp フラッシュメモリ回路の活性化方式及びその方法
US20030009721A1 (en) 2001-07-06 2003-01-09 International Business Machines Corporation Method and system for background ECC scrubbing for a memory array
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7710777B1 (en) 2006-12-20 2010-05-04 Marvell International Ltd. Semi-volatile NAND flash memory
EP2077559B1 (en) 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Refresh method of a flash memory
US20110047322A1 (en) 2009-08-19 2011-02-24 Ocz Technology Group, Inc. Methods, systems and devices for increasing data retention on solid-state mass storage devices
US8934311B2 (en) 2011-09-06 2015-01-13 Samsung Electronics Co., Ltd. Semiconductor memory device capable of screening a weak bit and repairing the same
US8972819B2 (en) 2011-11-22 2015-03-03 Silicon Space Technology Corporation Memory circuit incorporating radiation-hardened memory scrub engine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050135155A1 (en) 2003-12-19 2005-06-23 Renesas Technology Corp. Nonvolatile semiconductor memory device
WO2005106886A3 (en) 2004-04-29 2005-12-01 Milsys Ltd Refreshing data stored in a flash memory
WO2009042298A1 (en) 2007-09-26 2009-04-02 Rambus Inc. Flash memory refresh

Also Published As

Publication number Publication date
US9329802B2 (en) 2016-05-03
CN105723462A (zh) 2016-06-29
US20150134888A1 (en) 2015-05-14
EP3069349B1 (en) 2017-08-30
JP2016540297A (ja) 2016-12-22
WO2015070082A1 (en) 2015-05-14
JP6105165B2 (ja) 2017-03-29
EP3069349A1 (en) 2016-09-21
CN105723462B (zh) 2017-07-04
KR20160075792A (ko) 2016-06-29

Similar Documents

Publication Publication Date Title
KR101736944B1 (ko) Nand 메모리 디바이스에 저장되는 데이터의 페일 세이프 리프레시
US8356137B2 (en) Data storage scheme for non-volatile memories based on data priority
US8656086B2 (en) System and method for autonomous NAND refresh
CN102750191B (zh) 用于启动固态非易失性存储设备内的刷新操作的方法
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system's unit of memory allocation is coordinated with a storage system's read/write operation unit
TW201945934A (zh) 用以在記憶裝置中進行存取管理的方法、相關記憶裝置及其控制器以及相關電子裝置
JP2007012058A (ja) フラッシュ様媒体におけるトランザクションレコードを格納するファイルシステム
JP6399523B2 (ja) メモリ・デバイスの内容を保護するための方法およびメモリ・デバイス
TWI479505B (zh) 資料管理方法、記憶體控制器與記憶體儲存裝置
TWI479315B (zh) 記憶體儲存裝置、其記憶體控制器與資料寫入方法
US10216571B2 (en) System and methodology for error management within a shared non-volatile memory architecture using bloom filters
US10049007B2 (en) Non-volatile memory device and read method thereof
US8527733B2 (en) Memory system
US9286936B1 (en) Zone based band mapping
TWI781846B (zh) 非對稱型平面管理方法以及資料儲存裝置及其控制器
US9880926B1 (en) Log structured reserved zone for a data storage device
CN110908597B (zh) 适应性锁定范围管理的方法、数据存储装置及其控制器
US8503241B2 (en) Electronic apparatus and data reading method
JP2010256944A (ja) Nand型フラッシュメモリ保守装置及びnand型フラッシュメモリ保守プログラム及びnand型フラッシュメモリ保守方法
CN107643987B (zh) 减少固态硬盘中dram使用的方法及使用其的固态硬盘
KR20240049362A (ko) 신뢰성 있는 플래시 저장
JP2011222048A (ja) 情報処理装置及び情報処理プログラム
US9116794B2 (en) Storage device data protection system
TWI574153B (zh) 減少固態硬碟中dram使用的方法及使用該方法的固態硬碟
JP2013125296A (ja) 半導体装置及び半導体装置のメモリ書き換え検知方法

Legal Events

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