KR101385789B1 - 비휘발성 임시 데이터 핸들링 - Google Patents
비휘발성 임시 데이터 핸들링 Download PDFInfo
- Publication number
- KR101385789B1 KR101385789B1 KR1020120078463A KR20120078463A KR101385789B1 KR 101385789 B1 KR101385789 B1 KR 101385789B1 KR 1020120078463 A KR1020120078463 A KR 1020120078463A KR 20120078463 A KR20120078463 A KR 20120078463A KR 101385789 B1 KR101385789 B1 KR 101385789B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- temporary
- metadata
- nvm
- page
- 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
- 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
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- 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/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
NAND 플래시 메모리와 같은 비휘발성 메모리 내에 저장되는 임시 데이터를 다루기 위한 시스템들 및 방법들이 제공된다. 임시 데이터는 최대 절전 모드 데이터(hibernation data) 또는 전자 디바이스의 단 한번의 부팅 사이클을 위해 필요한 임의의 다른 데이터를 포함할 수 있다. 임시 데이터를 비휘발성 메모리의 하나 이상의 페이지에 저장하는 때에, 전자 디바이스는 임시 마커를 적어도 하나의 페이지에 메타데이터의 부분으로서 저장할 수 있다. 이런 방식으로, 전자 디바이스의 다음 부트업을 할 때에, 전자 디바이스는 연관된 페이지가 불필요한 데이터를 포함하는지를 결정하는 데에 임시 마커를 이용할 수 있다. 따라서, 전자 디바이스는 페이지를 무효화(invalidate)하고 자신의 메타데이터 테이블들로부터 이 페이지를 제거할 수 있다.
Description
NAND 플래쉬 메모리뿐만 아니라, 다른 유형의 비휘발성 메모리들(non-volatile memories, NVMs)은 대용량 저장을 위한 전자 디바이스에서 일반적으로 사용된다. 예를 들어, 휴대용 미디어 플레이어들과 같은 가전 제품은 보통 NAND 플래쉬 메모리를 포함하여 음악, 비디오들, 및 다른 미디어 프로그램들을 저장한다. 이러한 데이터는 일반적으로, 예를 들어 수일, 수개월, 또는 심지어 수년과 같은 오랜 기간의 시간 동안 저장되도록 의도된다.
NVM들은 또한 장기간 저장 외의 목적들을 위해 전자 디바이스들에서 사용될 수 있다. 예를 들어, 전자 디바이스는, 휘발성 메모리로부터 NVM으로 데이터를 일시적으로 저장하여 휘발성 메모리가 전력 감소, 최대 절전 모드(hibernation) 상태 동안 데이터를 손실하지 않고 전원을 차단하도록 할 수 있다. 다른 예시로서, NVM은 가상 메모리 구성(scheme)들에서 사용되어 전자 디바이스의 휘발성 메모리의 외관상 크기(apparent size)를 증가시킨다.
플래쉬 메모리와 같은 비휘발성 메모리에서 단기간 저장을 목적으로 하는 데이터를 처리하기 위한 시스템들 및 방법들이 제공된다. 단기간 저장이 장기간 데이터와는 상이하게 처리되도록 함으로써, NVM의 메모리 관리 효율 및 유효성이 증가할 수 있다.
단기간 저장은 운영 시스템의 현재 인스턴스(instance) 동안에만 필요한 NVM에서의 데이터의 저장을 포함하고, 전자 디바이스가 정지하거나 리부트되는 경우에(또는 그 이전에) 더 이상 유용하지 않다. 이러한 데이터는 일시적으로 필요하지만 지속적인 비휘발성 매체에 저장되기 때문에, "비휘발성 임시 데이터(non-volatile temporary data)" 또는 "NV 임시 데이터"로 칭해질 수 있다. NV 임시 데이터는, 예를 들어, 하드웨어 기반 최대 절전 모드 데이터, 애플리케이션 생성 데이터, 애플리케이션 기반 최대 절전 모드 데이터, 스왑(swap) 파일들, 및 다른 임시 파일들을 포함할 수 있다.
일부 실시예들에서, NV 임시 데이터를 저장하는 경우, 전자 디바이스는 NV 임시 데이터를 임시 마커(temporary marker)로 표시(decorate)할 수 있다. 예를 들어, 전자 디바이스가 NV 임시 데이터를 저장하는 NVM의 각각의 페이지(page)에 대해, 전자 디바이스는 그 페이지의 메타데이터에 임시 마커를 포함할 수 있다. 대안적으로, 전자 디바이스는 NV 임시 데이터를 저장하는 블록의 적어도 하나의 페이지에서 임시 마커를 제공할 수 있다. 이는 전자 디바이스가 다수의 디바이스 부트업들(bootups)에 걸쳐 필요한 정보로부터 NV 임시 데이터를 구별하도록 해준다.
전자 디바이스가 부트업하는 동안, 전자 디바이스는 메타데이터 테이블들을 구축하는 등의 다양한 스타트업(startup) 절차들을 수행하도록 구성될 수 있다. 메타데이터 테이블들은, 예를 들어, 파일 시스템(예를 들어, 논리 블록 어드레스들(logical block addresses, LBAs))에 의해 발행(issue)된 어떠한 논리 어드레스들이 현재 할당되었는지를 나타내는 테이블 및/또는 논리-물리(logical-to-physical) 어드레스 맵을 포함할 수 있다. 전자 디바이스는, NVM의 페이지들을 통해 스캐닝하고 각각의 페이지가 임시 마커를 포함하는지 여부(또는 각각의 페이지가 NV 임시 데이터를 저장하기 위해 마킹된 블록에 있는지 여부)를 판단함으로써 매타데이터 테이블들을 생성할 수 있다. 페이지가 임시 마커를 포함하는 경우, 그 페이지에 포함된 데이터는 그 전자 디바이스의 이전 부팅(boot)에서만 유용했으며, 현재 부팅에는 필요하지 않다. 따라서, 전자 디바이스는 그 페이지를 무효한 데이터를 가지는 것으로 마킹하고 그 페이지(그리고 그것의 저장된 메타데이터)를 메타데이터 테이블들로부터 제외시킬 수 있다. 부트업에서 이러한 클린업(cleanup) 동작들을 수행함으로써, 전자 디바이스는 처음부터 NVM 메모리 위치들의 효율적인 사용을 보장할 수 있다. 즉, 현재 부팅 사이클 동안의 어떠한 단계에서도 전자 디바이스는, 가비지 수거(garbage collection) 또는 웨어 레벨링(wear leveling) 동안 불필요한 동작들을 수행하여 쓸모없는 NV 임시 데이터를 유지하지 않는다.
일부 실시예들에서, 전자 디바이스는, 데이터가 NV 임시 데이터인지 여부에 기초하여 데이터를 저장하기 위해 메모리 위치들 및/또는 프로그래밍 기술들을 선택할 수 있다. 예를 들어, 전자 디바이스는 덜 신뢰할 수 있는 페이지들 또는 블록들(예를 들어, 많이 순환된 블록들(high cycled blocks))과 같이 보다 낮은 성능의 메모리 위치들을 선택하여 NV 임시 데이터를 저장할 수 있다. 일부 실시예들에서, 전자 디바이스는 SLC(single-level cell) 블록 등의 NV 임시 데이터를 저장하기 위한 프로그래밍 기법들 또는 고속 메모리 위치를 선택할 수 있다.
본 발명의 전술한 양태 및 그 외 양태, 그리고 이점들은 도면과 함께 이하 상세한 설명을 고려할 때에 명백할 것이며, 상기 도면에서 유사한 참조 문자들은 유사한 부분을 지칭한다.
도 1은 본 발명의 다양한 실시예에 따라 구성된 비휘발성 메모리를 갖는 예시적인 전자 디바이스의 블록도.
도 2 및 도 3은 본 발명의 다양한 실시예들에 따라, 비휘발성 임시 데이터를 저장하는 예시적인 비휘발성 메모리 위치들에 대한 그래픽 도면.
도 4는 본 발명의 다양한 실시예들에 따라, 임시 마커에 의해 비휘발성 메모리 내에 비휘발성 임시 데이터를 데코레이팅(decorating)하기 위한 예시적인 프로세스에 대한 흐름도.
도 5는 본 발명의 다양한 실시예들에 따라 전자 디바이스의 부트업시에 비휘발성 임시 데이터를 처리하기 위한 예시적인 프로세스에 대한 흐름도.
도 1은 본 발명의 다양한 실시예에 따라 구성된 비휘발성 메모리를 갖는 예시적인 전자 디바이스의 블록도.
도 2 및 도 3은 본 발명의 다양한 실시예들에 따라, 비휘발성 임시 데이터를 저장하는 예시적인 비휘발성 메모리 위치들에 대한 그래픽 도면.
도 4는 본 발명의 다양한 실시예들에 따라, 임시 마커에 의해 비휘발성 메모리 내에 비휘발성 임시 데이터를 데코레이팅(decorating)하기 위한 예시적인 프로세스에 대한 흐름도.
도 5는 본 발명의 다양한 실시예들에 따라 전자 디바이스의 부트업시에 비휘발성 임시 데이터를 처리하기 위한 예시적인 프로세스에 대한 흐름도.
도 1은 예시적인 전자 디바이스(100)의 블록도이다. 일부 실시예들에서, 전자 디바이스(100)는 휴대용 미디어 플레이어(예컨대, 캘리포니아주 쿠퍼티노의 애플사에 의해 이용가능하도록 제조된 iPodTM), 셀룰러 폰(예컨대, 애플사에 의해 이용가능하도록 제조된 iPhoneTM), 포켓 사이즈의 개인용 컴퓨터, PDA(personal digital assistance), 데스크탑 컴퓨터, 랩톱 컴퓨터, 및 그 외 임의의 적절한 다른 형태의 전자 디바이스 또는 시스템일 수 있거나 또는 이들을 포함할 수 있다.
전자 디바이스(100)는 SoC(system-on-a-chip)(110) 및 NVM(non-volatile memory)(120)을 포함할 수 있다. NVM(120)은 플로팅 게이트 또는 전하 트랩핑 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM) 또는 그들의 임의의 조합을 포함할 수 있다.
NVM(120)은 소거가능한 최소 단위인 "블록들"로 조직될 수 있으며, 또한 프로그래밍 또는 판독될 수 있는 최소 단위인 "페이지들"로 조직될 수 있다. 일부 실시예들에서, NVM(120)은 다수의 집적 회로들을 포함할 수 있는데, 여기서 각각의 집적 회로는 다수의 블록들을 가질 수 있다. 대응하는 집적 회로들로부터의 블록들(예를 들어, 동일한 위치 또는 블록 번호를 갖는 블록들)은 "수퍼 블록들"로서 지칭되는 논리 단위들(logical units)을 형성할 수 있다. NVM(120)의 각각의 메모리 위치(예를 들어, 페이지 또는 블록)는 물리 어드레스(예를 들어, 물리 페이지 어드레스 또는 물리 블록 어드레스)를 이용하여 어드레싱될 수 있다. 도 1에는 하나의 NVM만이 도시되어 있지만, 전자 디바이스(100)는 대안적으로 다수의 NVM 패키지들을 포함할 수 있다.
SoC(110)는 제어 회로(112), 메모리(114) 및 NVM 인터페이스(116)를 포함할 수 있다. 제어 회로(112)는 SoC(110)의 일반적 동작들 및 기능들을 제어하며, 전반적으로는 전자 디바이스(100)를 제어할 수 있다. 제어 회로(112)는 임의의 적절한 컴포넌트들, 회로 또는 로직, 예컨대, 하나 이상의 프로세서들을 포함할 수 있다. 제어 회로(112)는 메모리(114)에 로딩되는(loaded) 애플리케이션과 같은 프로그램, 운영 체제 또는 NVM 드라이버(예를 들어, NVM 드라이버(117))의 제어 하에서 동작할 수 있다.
메모리(114)는 임의의 적절한 유형의 휘발성 메모리, 예를 들어, RAM(random access memory)(예를 들어, SRAM,(static RAM) DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM), 캐시 메모리 또는 이들의 조합을 포함할 수 있다. 일부 실시예들에서, 메모리(114)는 제어 회로(112)의 일부로서 구현되는 임의의 프로세서들을 위한 메인 메모리로서 기능할 수 있다. 이 실시예 및 다른 실시예들에서, 메모리(114)는 NVM(120) 내에서, 한 시점 또는 다른 시점에서(즉, 동시에 또는 상이한 시각에서), NV 임시 데이터로서 저장될 수도 있는 데이터를 저장할 수 있다. 상기한 바와 같이, NV 임시 데이터는, 운영 체제의 현재 인스턴스(instance) 동안에만 필요한 NVM 내에 저장된 데이터를 포함할 수 있으며, 전자 디바이스(100)가 일단 종료(shut down) 또는 재부팅된 후부터(또는 그보다 더 이전부터)는 더 이상 유용하지 않다.
예를 들어, 메모리(114) 및/또는 NVM(120)은 NV 임시 데이터를 하드웨어 기반 최대 절전 모드 데이터의 형태로 저장할 수 있다. 하드웨어 기반 최대 절전 모드 데이터(hardware-based hibernation data)는 하드웨어 기반 최대 절전 모드 상태(예를 들어, 메모리(114)가 전력공급을 받지 못하는 감소된 전력 상태)에 진입하는 것에 응답하여 메모리(114)로부터 NVM(120)로 전달되는 데이터를 포함할 수 있다. 따라서, 하드웨어 기반 최대 절전 모드 데이터는 전자 디바이스(100)가 전-최대 절전 모드 동작 상태(pre-hibernation operational state)(예를 들어, 그것이 감소된 전력 상태에 진입하기 이전의 상태)로 복귀하는 것을 가능하게 해주는 데이터를 포함할 수 있다. 하드웨어 기반 최대 절전 모드 데이터는 디바이스의 현재 동작 상태를, 하드웨어 및 소프트웨어 양자 모두에 대해 나타낼 수 있다. 예를 들어, 디바이스 상태 데이터는 어느 프로그램들이 활발히 구동 중인지, 보다 구체적으로는, 어느 미디어 애셋(media asset)(가령, 노래)이 재생 중인지, 또는 사용자가 현재 액세스하고 있는 그래픽 사용자 인터페이스 내의 위치를 명시할 수 있다. 사용자는 전자 디바이스(100)가 그것의 전-최대 절전 모드 동작 상태로 복귀할 것으로 예상하지 못하기 때문에, 사용자가 하드웨어 최대 절전 모드 동안 전자 디바이스(100)를 종료할 경우, 그러한 하드웨어 기반 최대 절전 모드 데이터가 NV 임시 데이터의 일례가 된다.
일부 실시예들에서, 메모리(114) 및/또는 NVM(120)은 애플리케이션 생성 데이터를 NV 임시 데이터로서 저장할 수 있다. 애플리케이션 생성 데이터는, 애플리케이션과 연관된 또는 애플리케이션에 의해 생성된 임의의 일시적인 유용한 데이터, 예를 들어, 게임 애플리케이션에서 현재 게임과 관련된 데이터를 포함할 수 있다. 일부 실시예들에서, 애플리케이션은, 애플리케이션 생성 데이터의 임시적인 성질의 인디케이션을 운영 체제 및 파일 시스템에 제공할 수 있으며, 결과적으로 이 데이터가 NVM(120) 내에 NV 임시 데이터로서 저장될 수 있게 한다.
일부 시나리오들에서, 메모리(114) 및/또는 NVM(120)는 NV 임시 데이터를 애플리케이션 기반 최대 절전 모드 데이터의 형태로 저장하는데 사용될 수 있다. 애플리케이션 기반 최대 절전 모드 데이터는, 최대 절전 모드 상태로 진입하는 특정 애플리케이션 또는 프로그램에 응답하여 메모리(114)로부터 NVM(120)로 전송되는 데이터, 예를 들어, 애플리케이션 생성 데이터를 포함할 수 있다. 전자 디바이스(100)는, 공간이 작아지게 되고, 애플리케이션이 실제로 이용되지 않은 경우, 메모리(114)내의 공간을 마련하기 위해 최대 절전 모드을 위한 애플리케이션을 선택할 수 있다. 따라서, 애플리케이션 기반 최대 절전 모드 데이터는 전자 디바이스(100)가 하이버네이트된 애플리케이션을 자신의 이전-최대 절전 모드 동작 상태로 다시 복귀시킬 수 있도록 하는 데이터를 포함할 수 있다. 사용자가 하이버네이팅 애플리케이션이 그 정확한 이전 상태로 복귀할 것으로 예상하지 않기 때문에, 전자 디바이스(100)가 재부팅되어도, 애플리케이션 기반 최대 절전 모드 데이터는 NV 임시 데이터의 다른 예이다.
이러한 여러 시나리오에서, 메모리((114) 및/또는 NVM(120)는 가상 메모리 구성과 관련하여 NV 임시 데이터를 저장하는데 이용될 수 있다. 예컨대, 하나 이상의 애플리케이션들에서 의해 이용되는 애플리케이션 발생 데이터, 애플리케이션 기반 최대 절전 모드 데이터, 또는 임의의 다른 데이터는 메모리(114)로부터 NVM(120)내의 "스왑 파일" 또는 "페이지 파일"로 전송될 수 있다. 여기서, 데이터는 메모리(114)로부터 NVM(120)내에 저장된 파일로 페이징될 수 있고, 이에 따라 공간이 필요할 때 메모리(114)내에 공간을 마련한다. 메모리(114)와 NVM(120)간의 NV 임시 데이터를 전달하기 위한 가상 메모리 기법에서 이용되는 다른 파일 타입들도 또한 고려될 수 있다. 가상 메모리 기법에서 사용되는 데이터는 일반적으로 일단 전자 디바이스(100)가 셧다운되면 필요하지 않기 때문에, 스왑 파일은 NV 임시 데이터의 다른 예이다.
메모리(114) 및/또는 NVM(120)는, 유닉스 기반 시스템상의 "템프 파일"내에 전형적으로 저장되는 임의의 데이터와 같은, 임의의 다른 적절한 타입의 NV 임시 데이터를 저장할 수 있다. 예컨대, NV 임시 데이터는 NVM(120)상의 임시 파일들내에 저장된 데이터를 포함할 수 있고, 하나의 프로그램 또는 애플리케이션이 데이터를 다른 프로그램 또는 애플리케이션으로 전달하도록 한다. 다른 예로서, NV 임시 데이터는 NVM(120)상의 임시 파일내에 저장된 단기(short-term) 데이터를 포함할 수 있고, 이것은 메모리(114)에 맞도록 하기에는 너무 크거나, 또는 메모리(114)내의 미리 정해진 양의 공간보다 더 큰 공간을 차지하게 된다.
SoC(110)의 콤포넌트들(메모리(114) 등)이 정보를 NVM(120)으로 및 NVM(120)으로부터 전달할 수 있도록 하기 위해, SoC(110)은 NVM 인터페이스(116)를 포함할 수 있다. NVM 인터페이스(116)는, NVM(120)과 SoC(110)의 비-NVM-특정 콤포넌트들간의 인터페이스 또는 드라이버로서 작동하도록 구성된 하드웨어, 소프트웨어, 및 펌웨어의 임의의 적절한 조합을 포함할 수 있다. 예컨대, NVM 인터페이스(116)는, 운영 시스템 및 파일 시스템에 대해 NVM(120)으로의 간접 액세스를 제공하고, 이에 따라 운영 시스템 및 파일 시스템이 기입 또는 판독 요청을 발행하고 NVM(120)내의 또는 NVM(120)으로부터 NV 임시 데이터를 저장 또는 검색하도록 하는 소프트웨어/펌웨어 인터페이스를 제공하는 NVM 드라이버(117)를 포함할 수 있다. NVM 인터페이스(116)는 버스 제어기(118)를 더 포함할 수 있고, 이것은 NVM 드라이버(117)가 NVM(120)의 버스 상세(예컨대, 데이터 레이트)를 이용하여 NVM(120)에 액세스할 수 있도록 하는 임의의 적절한 하드웨어 콤포넌트를 포함할 수 있다.
NVM 인터페이스(116)는, 가비지 수집, 웨어 레벨링, 및 불량 블럭 관리와 같은 NVM(120)의 메모리 위치들을 관리하는 다양한 작업들을 수행할 수 있다. NVM 드라이버(117)는 "메타데이터"를 유지 또는 생성하도록 구성될 수 있고, 이 메타데이터는, NVM(120) 및 그 안의 메모리 위치를 관리하기 위해 NVM 드라이버(117)에 의해 이용되는 임의의 메모리 관리 데이터가 될 수 있다. NVM 드라이버(117)는, 파일 시스템에 의해 발행된 어느 논리 어드레스들(예컨대, 논리 블록 어드레스들("LBAs"))이 현재 NVM(120)의 논리 어드레스와 물리 어드레스간의 이용 및/또는 맵핑을 위해 할당되었는지를 나타내는 테이블과 같은, 메타데이터 테이블 또는 맵핑들을 유지하도록 구성될 수 있다. 논리 어드레스들은 판독 또는 기입 요청시에 파일 시스템에 의해 발행되고, 이는 NVM 드라이버(170)가 NVM(120)의 물리 메모리 위치에 실제로 대응하는 상이한 물리 어드레스로 맵핑할 수 있는 것이다. NVM 드라이버(117)는 이에 따라 파일 시스템으로부터의 판독 및 기입 요청들을 적절하게 처리하기 위해 메타데이터 테이블을 유지할 수 있다.
NVM 인터페이스(116)는 SoC(110)상에 완전하게 구현되는 것으로 도 1에 도시된다. 몇몇 실시예에서, NVM 인터페이스(116)의 콤포넌트들의 몇몇 및 NVM 드라이버(117)의 기능의 몇몇은 예컨대, NVM(120)내에 포함된 별개의 메모리 제어기(예컨대, 플래시 제어기)에 의해 구현 및 수행될 수 있다. 따라서, NVM 인터페이스(116) 또는 NVM 관련 기능의 임의의 설명은 SoC(110)상에서 수행되는 콤포넌트들 또는 동작들로 제한되지 않는다는 것을 알아야 한다.
NVM 인터페이스(116)는 임의의 다양한 타입의 데이터를 저장하기 위해 파일 시스템으로부터 기입 요청을 수신할 수 있다. 예컨대, 파일 시스템은 NVM 인터페이스(116)에게 정해지지 않은 시간 동안 노래 및 비디오와 같은 미디어 애셋들을 저장하도록 명령할 수 있다. 다른 시나리오에서, 파일 시스템은 NVM 인터페이스(116)에게 NVM(120)내에, 하드웨어 기반 최대 절전 모드 데이터, 애플리케이션 생성 데이터, 애플리케이션 기반 최대 절전 모드 데이터, 스왑 파일들, 또는 다른 임시 파일들과 같은 NV 임시 데이터를 저장하도록 명령할 수 있다. NV 임시 데이터가 다른 데이터의 형태(즉, 전자 디바이스(100)의 둘 이상의 부팅 싸이클)보다 상이한 예상 수명(즉, 전자 디바이스(100)의 하나의 부팅 싸이클)을 갖기 때문에, NVM 인터페이스(116)는 NVM(120)내에서의 메모리 사용의 능률 및 효율성을 증가시킬 수 있는 상이한 방식으로 NV 임시 데이터를 처리하도록 구성될 수 있다.
몇몇 실시예에서, NVM 인터페이스(116)는, 데이터가 임시 데이터인지 여부에 기초하여 데이터를 저장하는 메모리 위치들(즉, 페이지, 블럭, 또는 수퍼 블럭)을 선택할 수 있다. 예컨대, NVM 인터페이스(116)는 NV 임시 데이터를 저장하기 위해 더 낮은 성능의 메모리 위치를 선택할 수 있다. 더 낮은 성능의 메모리 위치는 높은 싸이클의 블럭(즉, 더 많은 소거 싸이클을 지나 왔고, 이에 따라 더 많은 열화를 겪은 블럭)과 같은 덜 신뢰할만한 페이지 또는 블럭이 될 수 있다. NVM 인터페이스(116)는 비-임시 데이터를 저장하기 위한 더 높은 성능의 메모리 위치를 선택할 수 있는데, 그 이유는 비-임시 데이터는 더 긴 시간동안 NVM(120)내에 유지되는 것으로 예상되기 때문이다.
몇몇 실시예에서, NVM 인터페이스(116)는 NV 임시 데이터를 저장하기 위해 더 고속의 메모리 위치들 또는 프로그래밍 기술을 선택할 수 있다. 이 방식에서, 메모리(114)와 NVM(120) 사이의 데이터 전달간의 지연이 감소되고, 이것은, 감소된 전력의 최대 절전 모드 모드로 들어가거나, 또는 다양한 다른 상황에 있는 경우 가상 메모리 기술에서 유용할 수 있다. 속도를 개선하기 위해, NVM 인터페이스(116)는 단일 레벨 셀("SLC") 블럭들을 선택할 수 있고, 또는 블럭을 NV 임시 데이터로 프로그래밍하는 경우 튜닝 해상도를 감소시킬 수 있다. NVM 인터페이스(116)는 SLC 블럭들을 선택할 수 있어서 신뢰성을 향상시키면서 프로그래밍 속도를 증가시킬 수 있다.
몇몇 실시예에서, NVM 인터페이스(116)는, NV 임시 데이터를 NVM(120)에 저장할 때 NV 임시 데이터를 "임시 마커"로 데코레이팅함으로써 다른 데이터와는 상이하게 NV 임시 데이터를 처리할 수 있다. 이 방식에서, 데이터가 NVM(120)으로부터 다시 판독되는 경우, NVM 인터페이스(116)는 NV 임시 데이터를 더 긴 시간 동안 저장되도록 의도되는 다른 정보로 신속하고 효율적으로 차별화할 수 있다.
도 2는 NVM 인터페이스(116)가 NV 임시 데이터를 임시 마커로 데코레이팅할 수 있는 한 방식을 도시한다. 도 2는 도 1의 NVM(120)과 같은, 비휘발성 메모리의 블럭 내의 페이지의 그래픽 표현이다. 도시된 바와 같이, 블럭의 각각의 페이지는 데이터 필드 및 관련된 메타데이터 필드를 저장하는데 이용될 수 있다. 각각의 데이터 필드는 NV 임시 데이터 또는 파일 시스템이 저장하도록 요청하는 데이터(예컨대 미디어 애셋)와 같은 임의의 적절한 타입의 데이터를 저장할 수 있다. 동일한 페이지의 메타데이터 필드는, 에러 정정 코드("ECC") 데이터를 포함하는, NVM 드라이버(117)에 의해 수신 또는 생성되는 임의의 메모리 관리 데이터, 논리 및 물리 어드레스(예컨대, LBA)간의 맵핑을 관리하는데 이용되는 임의의 정보등과 같은, 데이터와 관련된 메타데이터를 데이터 필드내에 저장할 수 있다.
메타데이터 필드는 그 데이터 필드에서의 데이터가 NV 임시 데이터인지 여부를 표시하는 마커를 저장하기 위한 공간을 포함할 수 있다. 예컨대, 도 2에서의 페이지들 1 및 2의 메타데이터 필드들에서의 "T"(또는 "임시") 마커들은 연관된 데이터 필드들이 NV 임시 데이터를 포함한다는 것을 표시하며, 그 블록의 페이지 0 및 마지막 페이지의 메타데이터 필드에서의 "P"(또는 "지속") 마커들은 연관된 데이터 필드들에서의 데이터가 지속적이고 장기간 저장용의 데이터를 포함한다는 것을 표시한다. "T" 임시 마커 및 "P" 지속 마커는 임의의 적합한 방안을 이용하여 구현될 수 있다. 즉, 이러한 마커들은 임의의 적합한 수의 비트들(예를 들면, 하나 이상의 비트)을 포함할 수 있으며, "T" 및 "P" 마커들의 실제 비트 또는 워드 값들은 임의의 적합하게 미리 정해진 비트 패턴을 각각 취할 수 있다.
몇몇 실시예들에서, NVM 인터페이스(116)는 특정한 "P" 마커를 이용하지 않을 수 있으며, 그 대신에 "T" 임시 마커들만을 이용하여 NV 임시 데이터가 NVM(120)에 저장되는 위치를 표시할 수 있다. 이러한 실시예들에서, 페이지를 다시 판독할 시에, NVM 인터페이스(116)는 그 페이지의 데이터 필드가 메타데이터 필드에서의 임시 마커의 부족으로 인해 NV 임시 데이터를 포함하지 않는다는 것을 결정할 수 있다.
도 2는 동일한 블록이 지속 데이터뿐만 아니라 NV 임시 데이터 둘 다를 포함할 수 있는 예를 제공한다. 다른 실시예들에서는, 도 3에 도시된 실시예와 같이, 전체 블록 또는 수퍼블록이 NV 임시 데이터 또는 지속 데이터 중 어느 하나를 저장하는데 이용될 수 있다.
도 3은 도 1의 NVM(120)과 같은 비휘발성 메모리의 여러 집적 회로들에 걸친 다중 블록들의 그래픽 표현이다. 각각의 열은 상이한 집적 회로를 나타내고, 각각의 행은 상이한 수퍼블록을 나타낸다. 따라서, 제1 집적 회로("IC 0")에 도시된 바와 같이, 전체 블록(즉, 블록 2)은 NV 임시 데이터를 저장하는데 이용될 수 있다. 몇몇 실시예들에서, NVM 인터페이스(116)는 그 블록의 모든 이용된 페이지에 임시 마커를 제공할 수 있으며, 이것은 NVM 인터페이스(116)가 NV 임시 데이터를 저장함에 따라 이 블록을 정확히 해석할 수 있는 추가 보장을 제공할 수 있다. 다른 실시예들에서, NVM 인터페이스(116)는 블록에서의 페이지들의 서브세트에 임시 마커들을 저장할 수 있다. 예컨대, NVM 인터페이스(116)가 제1 페이지로부터 마지막 페이지까지 블록을 판독할 때 그 블록이 NV 임시 데이터를 포함하는지 여부를 나중에 결정할 수 있도록, NVM 인터페이스(116)는 블록의 제1 페이지에만 임시 마커를 저장할 수 있다. 대안으로, NVM 인터페이스(116)는 (NVM 인터페이스(116)가 마지막 페이지로부터 제1 페이지까지 블록을 나중에 판독할 수 있도록) 마지막 페이지에만 임시 마커를 저장할 수 있거나, 또는 NVM 인터페이스(116)는 블록의 제1 페이지와 마지막 페이지 모두에 임시 마커들을 저장할 수 있다.
몇몇 실시예들에서, NVM 인터페이스(116)는 NV 임시 데이터 저장시 이용하기 위해 전체 수퍼블록을 선택할 수 있다. 이것은 도 3에서 다섯 번째 수퍼블록("수퍼블록 4")에 도시되어 있는데, 그 수퍼블록에서의 블록들 모두가 NV 임시 데이터를 저장하는데 이용될 수 있다. 단일-블록 경우에 있어서, NVM 인터페이스(116)는 수퍼블록의 이용된 페이지들 모두에 임시 마커들을 저장하거나 또는 저장하지 않을 수 있다. 대신에, NVM 인터페이스(116)는 수퍼블록에서의 각각의 블록의 제1 페이지에만 임시 마커들을 저장하거나, 수퍼블록에서의 각각의 블록의 마지막 페이지에만 임시 마커들을 저장하거나, 각각의 블록의 제1 페이지와 마지막 페이지 모두에 임시 마커들을 저장하거나, 또는 수퍼블록에서의 블록들의 서브세트의 하나 이상의 페이지에 임시 마커들을 저장할 수 있다.
명료성을 담보하기 위해 도면에 도시하지는 않았지만, "T" 임시 마커들을 포함하지 않는 블록들은 페이지들의 일부 또는 모두에서 "P" 지속 마커들을 포함할 수 있다(또는 포함하지 않을 수 있다). 또한, 5개의 집적 회로 및 6개의 수퍼블록(총 30 블록)이 도시되어 있지만, NVM(120)은 임의의 다른 적합한 수의 집적 회로들 및 수퍼블록들을 포함할 수 있다는 것을 이해해야 한다.
NVM 인터페이스(116)는 NV 임시 데이터를 데코레이팅하는 임시 마커들을 이용하여 다른 타입들의 데이터와는 상이하게 NV 임시 데이터를 처리할 수 있다. 예컨대, 임시 마커들은 전자 디바이스(100)의 부트업 처리에 영향을 줄 수 있다. 전자 디바이스(100)의 부트업시에, NVM 드라이버(117)는 NVM(120)의 현재 상태를 적절히 결정할 수 있도록, NVM 드라이버(117)가 일련의 초기화 절차를 수행할 수 있다. 어떤 논리 어드레스들이 이용되는지를 표시하는 테이블 및 논리-물리 어드레스 맵핑과 같은 하나 이상의 메타데이터 테이블들 또는 맵들의 복원이 초기화 절차에 포함될 수 있다.
테이블들을 복원하기 위해, NVM 드라이버(117)는 NVM(120)의 각각의 페이지를 판독할 수 있으며, 각각의 페이지에 대해 그 페이지를 테이블들에 포함시킬지 여부를 결정할 수 있다. 페이지가 임시 마커로 지정되어 있다는(또는 임시 마커들로 현재 지정된 블록 또는 수퍼블록에 있다는) 것을 NVM 드라이버(117)가 결정하면, NVM 드라이버(117)는 페이지를 테이블들 밖에 둘 수 있다. 이것은 전자 디바이스(100)의 이전 부팅 동안에만 유효하였던 NV 임시 데이터를 저장하는데 페이지가 이용되었기 때문이다. 따라서, NVM 드라이버(117)는 몇몇 적합한 시간에 페이지가 (예를 들어, 가비지 수집 또는 웨어 레벨링 동안에) 자유롭게 되어 다른 정보를 저장하는데 이용될 수 있도록 그 페이지를 무효로 마킹할 수 있다. NVM 드라이버(117)가 페이지를 무효화하고 부트업시에 즉시 테이블들로부터 페이지를 제외시키기 때문에, NVM(120)의 메모리 이용은 즉시 효율적으로 될 수 있다. 즉, NVM 드라이버(117)는, 현재의 부팅 주기 동안의 어떠한 시점에서도, 가비지 수집 또는 웨어 레벨링 동안에 불필요한 동작들을 수행하여 NV 임시 데이터가 더 이상 쓸모가 없게 유지하지는 않을 것이다.
이제 도 4 및 도 5를 참조하면, 본 발명의 다양한 실시예들에 따른 예시적인 프로세스들의 순서도가 도시되어 있다. 이러한 예시적인 프로세스들의 단계들은 NVM 드라이버(117)(도 1)의 제어하에 동작하는 제어 회로(112)(도 1)에 의한 것과 같이 전자 디바이스에서의 임의의 적합한 컴포넌트 또는 컴포넌트들의 임의의 적합한 조합에 의해 수행될 수 있다.
먼저, 도 4를 보면, NVM(120)(도 1)과 같은 NVM에 NV 임시 데이터를 저장할 때 임시 마커로 NV 임시 데이터를 데코레이팅하는 프로세스(400)가 도시되어 있다. 프로세스(400)는 단계(402)에서 시작할 수 있는데, 이 단계에서는 파일 시스템이 NVM에 데이터를 저장할지를 결정할 수 있다. NV 임시 데이터에 있어서, 이것은 예를 들어 휘발성 메모리의 공간이 다 떨어질 때 또는 휘발성 메모리가 줄어든 전력 상태(즉, 최대 절전 모드 상태)에서 전원을 차단할 필요가 있을 때 발생할 수 있다.
단계(404)에서, 데이터는 NVM에의 저장을 위해 파일 시스템으로부터 NVM 인터페이스(예를 들면, NVM 드라이버)에 제공될 수 있다. 그리고 나서, 단계(406)에서, NVM 인터페이스는 이 데이터가 NV 임시 데이터로서 저장될 임시 데이터인지 여부를 결정할 수 있다. 몇몇 실시예들에서, NVM 인터페이스는 데이터가 파일 시스템으로부터 수신된 기입 요청에 기반한 임시 데이터인지 여부를 해석할 수 있다. 파일 시스템은 애플리케이션으로부터의 표시에 응답하여 데이터가 임시 데이터인 것을 시그널링하는 기입 요청을 발행하였을 수 있다.
만일, 단계(406)에서, 데이터가 NV 임시 데이터라고 NVM 인터페이스가 결정하면, NVM 인터페이스는 단계(408)에서 데이터에 대한 메타데이터를 제공할 수 있는데, 메타데이터는 임시 마커를 포함한다. 단계(408)(또는, 후술하는 단계(412))에서 메타데이터를 제공하는 것은 (기입 요청에 의해 수신되는) 논리 어드레스로부터 NVM과 연관된 물리 어드레스로의 맵핑을 결정 및 유지하는 것을 포함할 수 있다. NVM 인터페이스는 단계(410)에서 저성능 및/또는 고속 메모리 위치들(즉, 페이지들, 블록들 또는 수퍼블록들) 또는 데이터를 저장하기 위한 프로그래밍 기법들을 또한 선택할 수 있는데, 이는 데이터가 비휘발성 메모리에서 단기 수명을 가질 것으로 예상되기 때문이다. 예컨대, NVM 인터페이스는 데이터가 저장될 신뢰성이 적은 블록들(예를 들면, 고 사이클 블록들) 또는 SLC 블록들을 선택할 수 있다.
다른 경우에, NVM 인터페이스가 단계 406에서, 데이터가 NV 임시 데이터가 아니라는 것을 판정하면, 단계 412에서 NVM 인터페이스는 임시 마커를 포함하지 않는 (그리고 지속 마커를 대신 포함할 수 있는) 메타데이터를 준비할 수 있다. 이 경우에, 데이터가 비휘발성 메모리에 장시간 저장될 수 있기 때문에, 단계 414에서, NVM 인터페이스는 더 높은 성능 및/또는 더 낮은 스피드 메모리 위치들 또는 데이터를 저장하기 위한 프로그래밍 기술들을 선택할 수 있다. 예를 들어, NVM 인터페이스는 데이터를 저장하는 더 신뢰성이 높은 블록들 또는 MLC 블록들을 선택할 수 있다.
단계 410 또는 단계 414에서, 프로세스(400)는 단계 416으로 계속될 수 있는데, 여기서 NVM 인터페이스는 (NV 임시 데이터 또는 다른 데이터인) 데이터 및 NVM의 선택된 하나 이상의 페이지에서의 그 데이터의 연관된 메타데이터의 적어도 일부를 저장할 수 있다. 프로세스(400)는 그 후 단계 418에서 종료된다.
도 5를 참조하면, 전자 디바이스의 부트업 시에 NV 임시 데이터를 프로세싱하기 위한 프로세스(500)가 도시된다. 프로세스(500)는 단계 502에서 전자 디바이스의 부트업 시에 시작할 수 있다. 단계 504에서, NVM 인터페이스는 NVM 인터페이스가 NVM의 초기 상태와 그 메모리 위치들을 결정할 수 있도록 여러 부트업 절차를 수행할 수 있다. 따라서, 초기 부트업 절차들은, 어떤 논리 어드레스들이 이용을 위해 할당되는지 나타내는 테이블, 및/또는 유효 데이터를 포함하는 NVM의 각각의 페이지에 대한 논리-물리 어드레스들의 맵핑과 같은 메타데이터 테이블들을 구성하는 것을 포함할 수 있다.
단계 504에서, NVM 인터페이스는 NVM의 각각의 페이지를 스캐닝하고 프로세싱함으로써 테이블들을 준비할 수 있다. 특히, 단계 506에서, NVM 인터페이스는 NVM으로부터 제1 페이지를 판독할 수 있고, 단계 508에서 NVM 인터페이스는 이 제1 페이지가 이 페이지의 메타데이터 필드 내에 임시 마커를 포함하는지를 판정할 수 있다. 포함하지 않는다면, 제1 페이지는 NV 임시 데이터를 포함하지 않고, 따라서 단계 510에서 NVM 인터페이스는 이 페이지를 테이블들에 추가할 수 있다. 예를 들어, NVM 인터페이스는 (예를 들어, 메타데이터 필드로부터) 이 페이지와 연관된 논리 어드레스를 결정할 수 있고 또한 이 페이지의 논리-물리 어드레스 맵핑을 적절한 테이블에 추가할 수 있고, 또는 NVM 인터페이스는 논리 어드레스가 파일 시스템에 의해 현재 할당된다는 것을 테이블 내에서 나타낼 수 있다.
단계 508에서, NVM 인터페이스가, 페이지가 페이지의 메타데이터 필드 내에 임시 마커를 포함하는가를 대신 판정한다면, 프로세스(500)는 단계 512로 계속될 수 있다. 전자 디바이스가 재부팅되었기 때문에 더 이상 유효하지 않은 NV 임시 데이터를 페이지가 저장한다는 것을 임시 마커가 나타내기 때문에, 프로세스(500)는 단계 512로 진행할 수 있다. 단계 512에서, NVM 인터페이스는 메타데이터 테이블 재구성의 목적을 위해 페이지 내의 메타데이터를 무시할 수 있다. 예를 들어, 페이지에 저장된 논리 어드레스가, 이 논리 어드레스는 파일 시스템에 이용된다는 것을 나타낼 수 있지만, NVM 인터페이스는 페이지 내의 논리 어드레스의 존재를 무시할 수 있다. 그 후, 단계 514에서, NVM 인터페이스는 페이지를 무효 데이터를 포함하는 것으로서 마킹할 수 있다. 이는 적절한 시각에 NVM 인터페이스가 페이지상에서 가비지 모음(garbage collection)을 수행하여 다른 정보들을 저장하기 위한 공간을 자유롭게 하는 것(free up)을 허용할 수 있다.
단계 510 또는 단계 514에서, 프로세스(500)는 단계 516으로 계속될 수 있는데, 여기서 NVM 인터페이스는 메타데이터 테이블들이 구성되는 것이 완료되었는지를 판정할 수 있다. 이 판정은 아직 판독되거나 프로세싱되지 않은 추가의 페이지들이 있는지를 판정하는 것을 수반할 수 있다. 메타데이터 테이블들에의 포함에 대해 고려될 필요가 있는 추가의 페이지들이 있다면, 프로세스(500)는 단계 506으로 돌와와서 NVM 인터페이스가 NVM의 또 다른 페이지를 판독할 수 있도록 할 수 있다. 그 외에, 어떤 추가의 페이지도 없는 경우에, 프로세스(500)는 단계 518에서 종료될 수 있다.
도 4 및 5 각각의 프로세스들(400 및 500)의 단계들은 단지 설명적이라는 것을 알아야 한다. 본 발명의 범위를 벗어나지 않고도 임의의 단계가 수정되거나 제거되거나 조합될 수 있고, 추가의 단계들이 포함될 수 있다.
본 발명의 기술된 실시예들은 제한이 아닌 설명의 목적을 위해 제시된다.
Claims (20)
- 전자 디바이스로서,
전-최대 절전 모드 상태(pre-hibernation state)에서 동작하는 적어도 하나의 애플리케이션과 연관된 애플리케이션 생성 데이터(application-generated data)를 저장하기 위한 휘발성 메모리;
복수의 페이지들을 포함하는 비휘발성 메모리(NVM; non-volatile memory); 및
상기 전-최대 절전 모드 상태에서 동작하는 애플리케이션이 최대 절전 모드 상태(hibernation state)로 진입한다는 인디케이션(indication)을 수신하고 상기 최대 절전 모드 상태로 진입하는 상기 애플리케이션과 연관된 상기 애플리케이션 생성 데이터를 상기 비휘발성 메모리에 임시 데이터로서 저장하도록 동작하는 제어 회로
를 포함하고,
상기 제어 회로는, 상기 임시 데이터가 저장되는 페이지들 중 적어도 하나의 페이지에 임시 마커(temporary marker)를 저장하며,
상기 임시 데이터는 상기 전자 디바이스의 단 한번의 부팅 사이클을 위해 요구되는 데이터를 포함하고,
상기 애플리케이션 생성 데이터는 상기 최대 절전 모드 상태에서 동작하는 상기 애플리케이션으로 하여금 상기 전-최대 절전 모드 상태로 되돌아가게 할 수 있는 데이터를 포함하는, 전자 디바이스. - 제1항에 있어서,
상기 전자 디바이스는,
상기 임시 데이터에 대한 메타데이터를 준비하고,
상기 임시 데이터가 저장되는 페이지들 중 적어도 하나의 페이지의 메타데이터 필드에, 상기 메타데이터 및 상기 임시 마커를 저장하도록
더 동작하는, 전자 디바이스. - 제1항에 있어서,
상기 임시 마커는 미리 정해진 비트 패턴을 포함하는, 전자 디바이스. - 제1항에 있어서,
상기 복수의 페이지들은 블록들로 조직되고,
상기 제어 회로는,
상기 임시 데이터를 저장하기 위해 상기 블록들 중 하나의 블록을 선택하고,
상기 선택된 블록의 적어도 하나의 페이지에 임시 마커를 저장하도록
더 동작하는, 전자 디바이스. - 제4항에 있어서,
상기 제어 회로는, 상기 선택된 블록의 모든 페이지들에 임시 마커를 저장하도록 더 동작하는, 전자 디바이스. - 제1항에 있어서,
상기 제어 회로는,
상기 휘발성 메모리가 로우 메모리 상태(low memory state)에 있음을 식별하고,
상기 로우 메모리 상태를 식별하는 것에 응답하여, 상기 비휘발성 메모리에 상기 임시 데이터를 저장하도록 더 동작하는, 전자 디바이스. - 제1항에 있어서,
상기 제어 회로는, 상기 임시 데이터를 저장하기 위한 저성능 페이지들(lower-performance pages)을 선택하도록 더 동작하는, 전자 디바이스. - 제1항에 있어서,
상기 제어 회로는, 상기 임시 데이터를 저장하기 위한 고속 프로그래밍 기법(higher-speed programming technique)을 선택하도록 더 동작하는, 전자 디바이스. - 비휘발성 메모리에 데이터를 저장하는 방법으로서 - 상기 비휘발성 메모리는 복수의 페이지들을 포함함 - ,
상기 데이터를 전-최대 절전 모드 상태에서 동작하는 적어도 하나의 애플리케이션과 연관된 애플리케이션 생성 데이터로서 식별하는 단계;
상기 전-최대 절전 모드 상태에서 동작하는 애플리케이션이 최대 절전 모드 상태로 진입한다는 인디케이션을 수신하는 단계;
상기 데이터에 대한 메타데이터를 준비하는 단계 - 상기 메타데이터는 임시 마커를 포함함 - ; 및
상기 비휘발성 메모리의 적어도 하나의 페이지에 상기 최대 절전 모드 상태로 진입하는 상기 애플리케이션과 연관된 상기 애플리케이션 생성 데이터 및 상기 메타데이터를 임시 데이터로서 저장하는 단계
를 포함하며,
상기 임시 데이터는 전자 디바이스의 단 한번의 부팅 사이클을 위해 요구되는 데이터를 포함하고,
상기 애플리케이션 생성 데이터는 상기 최대 절전 모드 상태에서 동작하는 상기 애플리케이션으로 하여금 상기 전-최대 절전 모드 상태로 되돌아가게 할 수 있는 데이터를 포함하는, 데이터 저장 방법. - 제9항에 있어서,
기입 요청(write request)에 따라, 파일 시스템으로부터 비휘발성 메모리 인터페이스에 상기 데이터를 제공하는 단계를 더 포함하고,
상기 식별하는 단계는, 상기 기입 요청에 응답하여 상기 비휘발성 메모리 인터페이스에 의해 수행되는, 데이터 저장 방법. - 제9항에 있어서,
상기 임시 마커는 적어도 한 비트의 미리 정해진 값을 포함하는, 데이터 저장 방법. - 제9항에 있어서,
상기 준비하는 단계는, 상기 데이터에 대한 논리 어드레스-물리 어드레스 맵핑(logical-to-physical address mapping)을 결정하는 단계를 더 포함하는, 데이터 저장 방법. - 제9항에 있어서,
상기 식별하는 단계에 기초하여, 상기 비휘발성 메모리의 적어도 하나의 페이지를 선택하는 단계를 더 포함하는, 데이터 저장 방법. - 제9항에 있어서,
상기 비휘발성 메모리에 저장하기 위한 추가 데이터를 식별하는 단계 - 상기 추가 데이터는 임시 데이터가 아닌 것으로 식별됨 - ;
상기 추가 데이터에 대한 추가 메타데이터를 준비하는 단계 - 상기 추가 메타데이터는 임시 마커를 포함하지 않음 - ; 및
상기 비휘발성 메모리의 적어도 하나의 다른 페이지에 상기 추가 데이터 및 상기 추가 메타데이터를 저장하는 단계
를 더 포함하는, 데이터 저장 방법. - 제9항에 있어서,
상기 식별하는 단계는, 상기 데이터가 하드웨어 기반의 최대 절전 모드 데이터, 애플리케이션 생성 데이터, 애플리케이션 기반의 최대 절전 모드 데이터, 및 가상 메모리 구성에 대한 데이터 중 적어도 하나의 데이터를 포함하는 것을 식별하는 단계를 포함하는, 데이터 저장 방법. - 전자 디바이스로서,
비휘발성 메모리; 및
상기 전자 디바이스의 부트업(bootup) 시에 상기 비휘발성 메모리에 대한 메타데이터 테이블을 생성하도록 동작하는 제어 회로
를 포함하고,
상기 메타데이터 테이블을 생성하는 것은,
상기 비휘발성 메모리의 복수의 페이지들을 판독하는 것 - 상기 페이지들 중 적어도 하나의 페이지는 상기 페이지와 연관된 데이터가 상기 부트업 전에 구동 중이던 프로그램에 더 이상 요구되지 않는 최대 절전 모드 데이터임을 나타내는 임시 마커를 포함함 - ; 및
상기 메타데이터 테이블로부터 상기 임시 마커를 포함하는 상기 적어도 하나의 페이지를 제외하는 것
을 포함하는, 전자 디바이스. - 제16항에 있어서,
상기 제어 회로는, 상기 적어도 하나의 페이지를 무효로 마킹하여, 상기 메타데이터 테이블을 생성하도록 더 동작하는, 전자 디바이스. - 제16항에 있어서,
상기 제어 회로는, 임시 마커를 포함하지 않는 비휘발성 메모리의 유효 페이지들을 상기 메타데이터 테이블에 추가하여, 상기 메타데이터 테이블을 생성하도록 더 동작하는, 전자 디바이스. - 제16항에 있어서,
상기 메타데이터 테이블은, 파일 시스템에 의한 사용을 위해 현재 어느 논리 어드레스들이 할당되어 있는지를 나타내는 테이블을 포함하는, 전자 디바이스. - 제16항에 있어서,
상기 메타데이터 테이블은 논리 어드레스-물리 어드레스 맵핑을 포함하는, 전자 디바이스.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/184,647 | 2011-07-18 | ||
US13/184,647 US8949508B2 (en) | 2011-07-18 | 2011-07-18 | Non-volatile temporary data handling |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120095776A Division KR101818599B1 (ko) | 2011-07-18 | 2012-08-30 | 비휘발성 임시 데이터 핸들링 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130010447A KR20130010447A (ko) | 2013-01-28 |
KR101385789B1 true KR101385789B1 (ko) | 2014-04-16 |
Family
ID=46548260
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120078463A KR101385789B1 (ko) | 2011-07-18 | 2012-07-18 | 비휘발성 임시 데이터 핸들링 |
KR1020120095776A KR101818599B1 (ko) | 2011-07-18 | 2012-08-30 | 비휘발성 임시 데이터 핸들링 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120095776A KR101818599B1 (ko) | 2011-07-18 | 2012-08-30 | 비휘발성 임시 데이터 핸들링 |
Country Status (9)
Country | Link |
---|---|
US (1) | US8949508B2 (ko) |
EP (1) | EP2549385B1 (ko) |
JP (1) | JP5683023B2 (ko) |
KR (2) | KR101385789B1 (ko) |
CN (1) | CN102890620B (ko) |
AU (1) | AU2012205187B2 (ko) |
BR (1) | BR102012017717B1 (ko) |
TW (2) | TWI573019B (ko) |
WO (1) | WO2013012632A1 (ko) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949508B2 (en) | 2011-07-18 | 2015-02-03 | Apple Inc. | Non-volatile temporary data handling |
EP2745203B1 (en) * | 2011-08-19 | 2016-09-21 | Kabushiki Kaisha Toshiba | Information processing apparatus |
US20130124778A1 (en) * | 2011-11-10 | 2013-05-16 | Greenliant Llc | Method of storing host data and meta data in a nand memory, a memory controller and a memory system |
CN104995342B (zh) | 2013-02-22 | 2018-05-18 | 株式会社可乐丽 | 纤维、布和无纺布 |
US10528116B2 (en) | 2013-03-14 | 2020-01-07 | Seagate Technology Llc | Fast resume from hibernate |
CN107391389B (zh) | 2013-08-05 | 2020-11-24 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN107741913B (zh) | 2013-08-05 | 2021-09-07 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法、记忆装置与控制器 |
US10140477B2 (en) * | 2013-12-09 | 2018-11-27 | Thales E-Security, Inc. | Obfuscating in memory encryption keys |
FR3046266A1 (fr) * | 2015-12-28 | 2017-06-30 | Proton World Int Nv | Stockage dans une memoire flash |
US9990023B2 (en) * | 2016-03-28 | 2018-06-05 | Apple Inc. | Systems and methods for handling sudden power failures in solid state drives |
CN106569744B (zh) * | 2016-10-31 | 2020-07-14 | 华为数字技术(成都)有限公司 | 一种存储临时数据的方法及存储设备 |
CN108536611B (zh) * | 2017-03-03 | 2022-05-13 | 西部数据技术公司 | 用于损耗均衡的系统和方法 |
US10956052B1 (en) * | 2017-07-21 | 2021-03-23 | EMC IP Holding Company LLC | Online address to hash (A2H) metadata scanner |
US10705918B1 (en) | 2017-07-21 | 2020-07-07 | EMC IP Holding Company LLC | Online metadata backup consistency check |
US10515701B1 (en) * | 2017-10-31 | 2019-12-24 | Pure Storage, Inc. | Overlapping raid groups |
CN108304280A (zh) * | 2018-01-30 | 2018-07-20 | 郑州云海信息技术有限公司 | 控制异构混合内存系统异常恢复的方法、bmc及装置 |
US10446254B1 (en) * | 2018-05-03 | 2019-10-15 | Western Digital Technologies, Inc. | Method for maximizing power efficiency in memory interface block |
US10936456B1 (en) | 2019-02-20 | 2021-03-02 | Apple Inc. | Handling malfunction in a memory system comprising a nonvolatile memory by monitoring bad-block patterns |
US11216388B2 (en) | 2019-04-30 | 2022-01-04 | EMC IP Holding Company LLC | Tiering between storage media in a content aware storage system |
JP6874814B2 (ja) * | 2019-10-30 | 2021-05-19 | 株式会社安川電機 | 産業機器の制御装置、産業機器の制御装置の設定システム、産業機器の制御装置の設定方法、及びプログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050117418A1 (en) * | 2003-08-28 | 2005-06-02 | International Business Machines Corp. | Data storage systems |
US20080104308A1 (en) * | 2006-10-25 | 2008-05-01 | Yeon-Jin Mo | System with flash memory device and data recovery method thereof |
US20090240678A1 (en) | 2008-03-19 | 2009-09-24 | Microsoft Corporation | Purposing persistent data through hardware metadata tagging |
US20100325351A1 (en) * | 2009-06-12 | 2010-12-23 | Bennett Jon C R | Memory system having persistent garbage collection |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9024A (en) * | 1852-06-15 | Motion of the lay in looms | ||
US8010A (en) * | 1851-04-01 | Peter mckinlay | ||
JP3106401B2 (ja) * | 1993-07-26 | 2000-11-06 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 情報処理システム |
JPH11242631A (ja) | 1998-02-26 | 1999-09-07 | Toshiba Corp | コンピュータシステムおよび同システムにおけるデータ保存/復元方法 |
US6209088B1 (en) | 1998-09-21 | 2001-03-27 | Microsoft Corporation | Computer hibernation implemented by a computer operating system |
US6574717B1 (en) * | 2001-05-31 | 2003-06-03 | Oracle Corporation | Techniques for time-based retention of a reusable resource |
US7467274B2 (en) * | 2001-12-31 | 2008-12-16 | Hewlett-Packard Development Company, L.P. | Method to increase the life span of limited cycle read/write media |
US7082495B2 (en) * | 2002-06-27 | 2006-07-25 | Microsoft Corporation | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory |
JP3994071B2 (ja) | 2003-06-12 | 2007-10-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ装置、システムの稼働状態の切り換え制御方法、およびプログラム |
US7093089B2 (en) | 2003-08-18 | 2006-08-15 | Hewlett-Packard Development Company, Lp. | Systems and methods for storing data on computer systems |
JP4688584B2 (ja) * | 2005-06-21 | 2011-05-25 | 株式会社日立製作所 | ストレージ装置 |
US20070234028A1 (en) | 2005-09-15 | 2007-10-04 | Rothman Michael A | Method and apparatus for quickly changing the power state of a data processing system |
US8719501B2 (en) | 2009-09-08 | 2014-05-06 | Fusion-Io | Apparatus, system, and method for caching data on a solid-state storage device |
US20100049775A1 (en) * | 2007-04-26 | 2010-02-25 | Hewlett-Packard Development Company, L.P. | Method and System for Allocating Memory in a Computing Environment |
US8239639B2 (en) * | 2007-06-08 | 2012-08-07 | Sandisk Technologies Inc. | Method and apparatus for providing data type and host file information to a mass storage system |
DE102008062934A1 (de) | 2008-12-23 | 2010-06-24 | Kuka Roboter Gmbh | Vernetzte Industriesteuerung und Verfahren zum Wechsel des Betriebsmodus einer solchen Industriesteuerung |
US20100169540A1 (en) * | 2008-12-30 | 2010-07-01 | Sinclair Alan W | Method and apparatus for relocating selected data between flash partitions in a memory device |
US9098396B2 (en) * | 2009-02-13 | 2015-08-04 | Sandisk Il Ltd. | Enhancement of efficiency in power failure handling in flash memory |
US8380676B1 (en) * | 2009-05-27 | 2013-02-19 | Google Inc. | Automatic deletion of temporary files |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US9063886B2 (en) | 2009-09-18 | 2015-06-23 | Apple Inc. | Metadata redundancy schemes for non-volatile memories |
US8296506B2 (en) | 2009-11-09 | 2012-10-23 | Lite-On It Corporation | Method for managing a non-violate memory and computer readable medium thereof |
US8694814B1 (en) * | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
KR101678911B1 (ko) * | 2010-03-12 | 2016-11-23 | 삼성전자주식회사 | 데이터 저장 장치 및 그것을 포함하는 컴퓨팅 시스템 |
US8949508B2 (en) | 2011-07-18 | 2015-02-03 | Apple Inc. | Non-volatile temporary data handling |
-
2011
- 2011-07-18 US US13/184,647 patent/US8949508B2/en not_active Expired - Fee Related
-
2012
- 2012-07-11 WO PCT/US2012/046236 patent/WO2013012632A1/en active Application Filing
- 2012-07-17 AU AU2012205187A patent/AU2012205187B2/en not_active Ceased
- 2012-07-17 EP EP12176705.7A patent/EP2549385B1/en not_active Not-in-force
- 2012-07-18 BR BR102012017717-0A patent/BR102012017717B1/pt not_active IP Right Cessation
- 2012-07-18 TW TW102107952A patent/TWI573019B/zh not_active IP Right Cessation
- 2012-07-18 KR KR1020120078463A patent/KR101385789B1/ko active IP Right Grant
- 2012-07-18 TW TW101125916A patent/TWI519952B/zh not_active IP Right Cessation
- 2012-07-18 CN CN201210248924.4A patent/CN102890620B/zh not_active Expired - Fee Related
- 2012-07-18 JP JP2012173367A patent/JP5683023B2/ja not_active Expired - Fee Related
- 2012-08-30 KR KR1020120095776A patent/KR101818599B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050117418A1 (en) * | 2003-08-28 | 2005-06-02 | International Business Machines Corp. | Data storage systems |
US20080104308A1 (en) * | 2006-10-25 | 2008-05-01 | Yeon-Jin Mo | System with flash memory device and data recovery method thereof |
US20090240678A1 (en) | 2008-03-19 | 2009-09-24 | Microsoft Corporation | Purposing persistent data through hardware metadata tagging |
US20100325351A1 (en) * | 2009-06-12 | 2010-12-23 | Bennett Jon C R | Memory system having persistent garbage collection |
Also Published As
Publication number | Publication date |
---|---|
TWI573019B (zh) | 2017-03-01 |
AU2012205187A1 (en) | 2013-01-31 |
TWI519952B (zh) | 2016-02-01 |
CN102890620A (zh) | 2013-01-23 |
JP2013033482A (ja) | 2013-02-14 |
AU2012205187B2 (en) | 2014-10-16 |
BR102012017717A2 (pt) | 2013-07-30 |
TW201324146A (zh) | 2013-06-16 |
EP2549385B1 (en) | 2015-06-10 |
KR20130010449A (ko) | 2013-01-28 |
BR102012017717B1 (pt) | 2020-09-15 |
CN102890620B (zh) | 2016-05-18 |
KR20130010447A (ko) | 2013-01-28 |
US20130024600A1 (en) | 2013-01-24 |
JP5683023B2 (ja) | 2015-03-11 |
KR101818599B1 (ko) | 2018-01-15 |
WO2013012632A1 (en) | 2013-01-24 |
EP2549385A1 (en) | 2013-01-23 |
TW201329713A (zh) | 2013-07-16 |
US8949508B2 (en) | 2015-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101385789B1 (ko) | 비휘발성 임시 데이터 핸들링 | |
US11048589B2 (en) | Preserving data upon a power shutdown | |
US9645895B2 (en) | Data storage device and flash memory control method | |
US8478796B2 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US8812816B2 (en) | Garbage collection schemes for index block | |
KR101892302B1 (ko) | 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터 | |
US9063728B2 (en) | Systems and methods for handling hibernation data | |
CN108369818B (zh) | 一种闪存设备的刷新方法和装置 | |
CN110347332B (zh) | 用于存储器系统的垃圾收集策略及执行该垃圾收集的方法 | |
US8949512B2 (en) | Trim token journaling | |
US8949506B2 (en) | Initiating wear leveling for a non-volatile memory | |
US9367451B2 (en) | Storage device management device and method for managing storage device | |
US8954647B2 (en) | Systems and methods for redundantly storing metadata for non-volatile memory | |
KR101900760B1 (ko) | 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링 | |
WO2011035245A1 (en) | Metadata redundancy schemes for non-volatile memories | |
US10732877B1 (en) | Smart mapping table update post background operations | |
CN113031856A (zh) | 存储器子系统中的断电数据保护 | |
US10339045B2 (en) | Valid data management method and storage controller | |
CN114077404A (zh) | 使存储器单元与主机系统解除关联 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170317 Year of fee payment: 4 |