KR20160039262A - 메모리 관리 - Google Patents

메모리 관리 Download PDF

Info

Publication number
KR20160039262A
KR20160039262A KR1020167005237A KR20167005237A KR20160039262A KR 20160039262 A KR20160039262 A KR 20160039262A KR 1020167005237 A KR1020167005237 A KR 1020167005237A KR 20167005237 A KR20167005237 A KR 20167005237A KR 20160039262 A KR20160039262 A KR 20160039262A
Authority
KR
South Korea
Prior art keywords
sequence number
logical block
block address
memory
global sequence
Prior art date
Application number
KR1020167005237A
Other languages
English (en)
Other versions
KR101743409B1 (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 KR20160039262A publication Critical patent/KR20160039262A/ko
Application granted granted Critical
Publication of KR101743409B1 publication Critical patent/KR101743409B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 동작들을 다루기 위한 장치, 시스템들, 및 방법들이 기술된다. 일 실시예에서, 전자 디바이스는 프로세서, 및 메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고, 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고, 메모리 디바이스에서의 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고, 및 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 메모리 제어 로직을 포함한다. 기타 실시예들이 또한 개시되고 청구된다.

Description

메모리 관리{MEMORY MANAGEMENT}
본 개시 내용은 일반적으로 전자 장치 분야에 관한 것이다. 보다 상세하게는, 본 발명의 몇몇 실시예들은 일반적으로 전자 장치 디바이스들에의 메모리 관리에 관한 것이다.
전자 장치 디바이스들은 빈번히 휘발성 메모리, 예를 들어 동적 DRAM(Dynamic Random Access Memory) 또는 그와 유사한 것으로서 구체화되는 로컬 고속 접근 메모리를 이용하여 구현될 수 있는 메모리 시스템들을 포함한다. 전력이 전자 장치 디바이스에서 리셋될 때, 이는 디바이스에서의 휘발성 메모리가 전형적으로 제로에 리셋되도록 야기한다. 그러므로, 디바이스 작동 시스템들은 로컬 고속 접근 메모리가 전력 리셋 동작 동안 제로에 리셋될 것이라는 가정 하에 흔히 작성된다.
상세한 설명은 첨부 도면들을 참조하여 제공된다. 상이한 도면들에서의 동일한 참조 번호들의 이용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 관리를 구현하기 위한 장치의 컴포넌트들의 도식적 블록도 도해이다.
도 2 및 4는 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리를 관리하기 위한 방법에서의 동작들을 예시하는 흐름도들이다.
도 3은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 관리를 구현하는데 사용될 수 있는 메타데이터 테이블의 구성도이다.
도 5a 및 도 5b는 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 대기 시간 관리를 구현하는 방법에서의 동작들에 사용될 수 있는 시퀀스 번호의 구성도들이다.
도 6-10은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 대기 시간 관리를 구현하기 위해 구성될 수 있는 전자 장치 디바이스들의 도식적 블록도 도해들이다.
다음의 설명에서, 다양한 실시예들의 철저한 이해를 제공하기 위해서 수많은 특정 상세 사항들이 제시된다. 그러나, 본 발명의 다양한 실시예들은 특정 상세 사항들 없이도 실시될 수 있다. 다른 경우들에서, 본 발명의 특정 실시예들을 모호하게 하지 않도록 잘 알려진 방법들, 절차들, 컴포넌트들, 및 회로들은 상세하게 설명되지 않았다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예컨대 집적 반도체 회로들("하드웨어"), 하나 이상의 프로그램들로 조직되는 컴퓨터 판독가능 명령어들("소프트웨어"), 또는 하드웨어와 소프트웨어의 몇몇 조합을 이용하여 실행될 수 있다. 본 개시의 목적을 위해 "로직"이라고 하는 표현은 하드웨어, 소프트웨어, 또는 이들의 몇몇 조합을 의미한다.
비휘발성 메모리 시스템들은 로컬 접근 휘발성 메모리 시스템들로서 이용되기에 충분히 빠른 속도들로 동작하도록 개발되고 있다. 휘발성 메모리와는 달리, 비휘발성 메모리는 전력 리셋 동안 자동적으로 제로에 리셋되지 않는다. 따라서, 로컬 접근 휘발성 메모리를 관리하기 위한 기법은, 예를 들어 전자 장치 디바이스들을 위한 메모리 시스템들에서의 고속 제로화(fast zeroing) 방법에서 유용성을 찾을 수 있다.
도 1은 본 명세서에서 논의되는 다양한 실시예들에 따라서 메모리 관리를 구현하기 위한 장치의 컴포넌트들의 도식적 블록도 도해이다. 도 1을 참조하면, 몇몇 실시예들에서, 중앙 처리 장치(CPU) 패키지(100)는 제어 허브(120)에 결합되는 하나 이상의 CPU들(110), 및 로컬 메모리(130)를 포함할 수 있다. 제어 허브(120)는 메모리 컨트롤러(122) 및 메모리 인터페이스(124)를 포함한다.
메모리 인터페이스(124)는 통신 버스(160)에 의해 하나 이상의 원격 메모리디바이스들(140)에 결합된다. 메모리 디바이스(140)는 컨트롤러(142) 및 하나 이상의 메모리 뱅크들(150)을 포함할 수 있다. 다양한 실시예들에서, 메모리 뱅크들(150) 중 적어도 일부는, 예를 들어 상 변화 메모리, NAND(플래시) 메모리, FeTRAM(ferroelectric random-access memory), 나노 와이어 기반 비휘발성 메모리, 멤리스터 기술을 수용한 메모리와 같은 비휘발성 메모리, SRAM(static random access memory), PCM(phase change memory)과 같은 3차원(3D) 크로스포인트 메모리, STT-RAM(spin-transfer torque memory) 또는 NAND 메모리를 이용하여 구현될 수 있다. 예를 들어, 몇몇 실시예들에서, 메모리 디바이스(들)(140)는 통신 링크를 컨트롤러(142)에게 제공하는 메모리 채널(144)에 결합되는 하나 이상의 DIMM(direct in-line memory module)들을 포함할 수 있다. 메모리 디바이스(들)(140)의 메모리 뱅크(들)(150)에서의 특정 구성이 결정적인 것은 아니다.
앞서 논의한 바와 같이, 몇몇 실시예들에서, 메모리 컨트롤러(122)의 로직은 메모리 디바이스(들)(140)의 메모리를 관리한다. 보다 상세하게는, 몇몇 실시예들에서, 메모리 컨트롤러(122)는, 적어도 메모리 디바이스들(140)의 비휘발성 메모리에 대한 판독 동작들이 전력 리셋 동작에 이어서 제로들을 반환할 것이라는 점에서, 메모리 디바이스들(150)의 비휘발성 메모리가 휘발성 메모리를 에뮬레이팅할 수 있게 하는 동작들을 구현한다. 요컨대, 메모리 컨트롤러(122)는 판독 동작의 대상이 되는 논리 블록에서의 데이터가 가장 최근의 전력 리셋 동작 전에 기입되었는지를 결정함으로써 이것을 성취한다. 논리 블록에서의 데이터가 가장 최근의 전력 리셋 동작 전에 기입되었다면, 메모리 컨트롤러는 논리 블록에 상주하는 데이터 대신에 제로들을 포함하는 판독 동작에 대한 응답을 반환한다. 대조적으로, 논리 블록에서의 데이터가 가장 최근의 전력 리셋 동작 후에 기입되었다면, 메모리 컨트롤러는 논리 블록에 상주하는 데이터를 포함하는 판독 동작에 대한 응답을 반환한다. 그러므로, 메모리 컨트롤러(122)는 비휘발성 메모리가 휘발성 메모리의 전력 리셋 속성들을 에뮬레이팅하도록 허용한다.
몇몇 실시예들에서, 메모리 컨트롤러(122)는 메모리 테이블(146)에서 하기 파라미터들을 유지한다:
전역적 시퀀스 번호(Global Sequence Number)(GSN): 이것은 시스템이 전력 리셋 동작을 겪을 때마다 증분되는 수치 파라미터이다. 메모리 컨트롤러는 메모리 테이블(146)에 GSN을 저장한다. 몇몇 실시예들에서, GSN은 8 비트 2진수로서 구현되어 GSN이 자신이 제로로 랩 백(wrap back)하기 전에 256회 증분을 거치며 사이클링할 수 있도록 된다.
전역적 시퀀스 번호 시리즈 번호(Global Sequence Number Series Number)(GSN. S). 몇몇 실시예들에서, GSN은 복수의 시리즈 중 하나에 속할 수 있다. 전역적 시퀀스 번호 시리즈 번호는 GSN이 속하는 시리즈를 표시한다. 몇몇 실시예들에서, GSN.S는 전역적 시퀀스 번호의 최상위 비트(upper most bit)로서 구현될 수 있다.
미디어 시퀀스 번호(Media Sequence Number)(MSN): 기입 동작이 메모리 디바이스(들)(140)에 관계되는 것일 때는 언제든지, 현재 GSN이 기입 동작이 관계되는 미디어의 섹션에 대한 미디어 메타데이터에 기입되고 또한 미디어의 해당 섹션에 대한 MSN이 된다.
미디어 시퀀스 번호 시리즈 번호(Media Sequence Number Series Number)(MSN.S) - 몇몇 실시예들에서, MSN은 복수의 시리즈 중 하나에 속할 수 있다. 미디어 시퀀스 번호 시리즈 번호는 MSN이 속하는 시리즈를 표시한다. 몇몇 실시예들에서, MSN.S는, 미디어의 섹션이 기입될 때 GSN.S로부터 복사되는, MSN의 최상위 비트로서 구현될 수 있다.
시리즈 내에 완료된 리프레시 플래그(Refresh Completed Within Series Flag): 이것은 완전 리프레시(예를 들어, 메모리 디바이스에서의 모든 어드레스들을 판독하고 기입하는 백그라운드 프로세스)가 시작되었고 시리즈 내에 완료되었는지를 표시하는 플래그이다. 이것은 메모리 디바이스(들)(140)상에 저장될 수 있다.
메모리 컨트롤러(122)에 의해 구현되는 동작들이 도 2 및 4와 관련하여 기술될 것이다. 먼저 도 2를 참조하면, 도 1에 묘사된 메모리 시스템을 수용하는 전자 디바이스가 전력 리셋 동작의 대상이 될 때, 메모리 컨트롤러(122)는 동작 210에서, 현재 전역적 시퀀스 번호(GSN)를 메모리 테이블(146)로부터 검색한다.
동작 215에서, 메모리 컨트롤러(122)는 도 1에 묘사된 메모리 시스템을 수용하는 전자 디바이스로부터 메모리 요청을 수신한다. 동작 220에서, 컨트롤러(122)가 기입 요청을 수신하면, 제어는 동작 225에게 넘겨지고 컨트롤러(122)는 요청된 논리 블록과 연관되는 메타데이터에 전역적 시퀀스 번호를 해당 논리 블록 어드레스에 대한 미디어 시퀀스 번호로서 저장한다. 도 3을 참조하면, 몇몇 실시예들에서, MSA는 논리 블록 어드레스와 연관되어 메모리 테이블에 저장될 수 있다.
도 2를 다시 참조할 때, 동작 220에서 컨트롤러(122)가 메모리 디바이스(들)(140)의 메모리에 제로들을 기입하라는 요청을 수신하면, 제어는 동작 230에게 넘겨지고 컨트롤러(122)는 전역적 시퀀스 번호를 증분하고 동작 235에서 컨트롤러(122)는 전역적 시퀀스 번호를 메모리 디바이스(들)(140)에 저장한다. 별개로, 컨트롤러(122)는 메모리 디바이스(들)(140)의 메모리에 모두 제로들을 기입하기 위한 백그라운드 프로세스를 구현할 수 있다.
대조적으로, 동작 220에서 컨트롤러(122)가 메모리 디바이스(들)(140)로부터 데이터를 판독하라는 요청을 수신하면, 제어는 동작 240에게 넘겨지고 컨트롤러(122)는 도 3에 묘사된 테이블로부터 판독 동작에서 식별되는 논리 블록 어드레스와 연관되는 미디어 시퀀스 번호를 판독한다.
동작 245에서 컨트롤러(122)는 판독 동작에서 식별되는 논리 블록 어드레스와 연관되는 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었는지를 결정한다. 대부분의 경우에 이 결정은 미디어 시퀀스 번호를 전역적 시퀀스 번호와 비교함으로써 이뤄질 수 있다. 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작다면, 미디어 시퀀스 번호는 전역적 시퀀스 번호보다 오래된 것이다.
동작 245에서 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되지 않았다면, 제어는 동작 250에게 넘겨지고 컨트롤러(250)는 판독 동작에서 식별되는 논리 블록 어드레스에 저장된 데이터를 반환한다. 대조적으로, 동작 245에서 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었다면, 제어는 동작 255에게 넘겨지고 컨트롤러(122)는 판독 요청에서 식별되는 논리 블록 어드레스에 저장된 데이터 대신에 널 응답(null response)을 반환한다. 예를 들어, 널 응답은 모두 제로들 또는 미리 정해진 비트들의 패턴을 포함할 수 있다. 제어는 이후 동작 210에게 되돌려 넘겨지고 컨트롤러(122)는 전자 디바이스로부터의 다음 메모리 요청을 대기한다.
그러므로, 도 2에 묘사된 동작들은, 적어도 가장 최근의 전력 리셋 이후로 기입되지 않은 메모리에 관계되는 판독 동작들이 논리 블록 어드레스에 상주하는 실제 데이터가 아니라 제로들을 반환할 것이라는 점에서, 컨트롤러로 하여금 휘발성 메모리의 동작을 에뮬레이팅하는 메모리 디바이스(들)(140)의 비휘발성 메모리를 가질 수 있게 한다.
메모리 제한들은 전역적 시퀀스 번호가 사이즈에서 유한 한계를 갖도록 좌우한다. 몇몇 실시예들에서, 전역적 시퀀스 번호가 유한 한계에 도달할 때 이것은 제로로 랩 백(wrap back)한다. 이 랩(wrap)은, 논리 블록 어드레스가 가장 최근의 전력 리셋 동작 이후로 기입 동작을 수신하지 않았을지라도 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 더 클 수 있는 상황을 초래할 수 있다. 동작 245에서 이뤄지는 결정은 전역적 시퀀스 번호가 제로로 랩 백하는 상황을 감당해야만 한다. 예를 들어, 시퀀스 번호 랩을 검출할 시에, 미디어 컨트롤러는 수동으로 모두 제로들을 기입할 수 있다.
몇몇 실시예들에서, 컨트롤러는 전역적 시퀀스 번호가 랩하는 상황을 감당하기 위해 전역적 시퀀스 번호 시리즈 번호 및 미디어 시퀀스 번호 시리즈 번호를 사용한다. 이 상황을 관리하기 위한 로직이 도 4에 제시된다. 도 4를 참조하면, 동작 410에서 컨트롤러(122)는 전역적 시퀀스 번호를 증분하라는 요청을 수신한다.
동작 410에서, 증분이 전역적 시퀀스 번호가 제로로 랩 백하는 것을 야기하지 않으면, 제어는 동작 420에게 넘겨지고, 전역적 시퀀스 번호는 정상 방식으로 증분된다. 대조적으로, 동작 415에서 전역적 시퀀스 번호 증분이 전역적 시퀀스 번호가 랩하도록 야기하면, 제어는 동작 425에게 넘겨지고, 여기서 시리즈 내에 완료된 리프레시 플래그의 상태가 시리즈 내에 완료된 리프레시 플래그가 설정되었는지를 결정하기 위해 체크된다.
몇몇 실시예들에서, 컨트롤러(122)는 메모리 디바이스(들)(140)에 대한 기입 동작들을 모니터링하는 별개의 프로세스를 구현하고 또한 메모리 디바이스(들)(140)에서의 모든 논리 블록 어드레스들이 가장 최근의 전력 리셋 동작 이후로 데이터로 기입되었을 때 리프레시 플래그를 설정한다. 그러므로, 설정된 리스레시 플래그는 메모리 디바이스(들)(140)의 모든 논리 블록 어드레스들이 가장 최근의 전력 리셋 동작 이후로 새로운 데이터로 기입되었다는 것을 표시한다.
동작 425에서, 리프레시 플래그가 설정되지 않았다면, 메모리 디바이스(들)(140)의 데이터의 일부가 가장 최근의 전력 리셋 동작 이후로 재기입되지 않은 것이다. 이 경우에, 제어는 동작 430에게 넘겨지고 컨트롤러(122)는 메모리 디바이스(들)(140)의 논리 어드레스 공간에서의 모든 어드레스들에 제로들을 기입하여, 본질적으로 메모리 디바이스(들)(140)의 비휘발성 메모리가 전력 리셋에 응답하여 휘발성 메모리의 제로화 기능을 에뮬레이팅하도록 강제한다. 이것은 도 5a에 예시된다.
제어는 이후 동작 435에게 넘겨지고 리프레시 플래그는 클리어링된다. 동작 440에서 전역적 시퀀스 번호는 제로로 랩 백되고, 동작 445에서 시리즈 비트는 반전된다.
대조적으로, 동작 425에서 리프레시 플래그가 설정된다면, 메모리 디바이스(들)(140)의 비휘발성 메모리에게 제로들을 기입할 어떤 필요도 없으며 제어는 동작들 435-445에게 직접적으로 넘겨질 수 있다. 이것은 도 5b에 예시된다.
그러므로, 도 4에 묘사된 동작들은 제로로 랩 백하는 전역적 시퀀스 번호가 전역적 시퀀스 번호보다 큰 미디어 시퀀스 번호들을 갖는 메모리 디바이스(들)(140)의 논리 블록 어드레스들로부터의 데이터의 오 판독을 초래하지 않는다는 것을 보장한다.
앞서 논의한 바와 같이, 몇몇 실시예들에서, 전자 디바이스는 컴퓨터 시스템으로서 구체화될 수 있다. 도 6은 본 발명의 실시예에 따른 컴퓨팅 시스템(600)의 블록도를 예시한다. 컴퓨팅 시스템(600)은 상호접속 네트워크(또는 버스)(604)를 경유해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPU들)(602) 또는 프로세서들을 포함할 수 있다. 프로세서들(602)은 범용 프로세서, 네트워크 프로세서(컴퓨터 네트워크(603)를 통해 통신되는 데이터를 처리함), 또는 기타 유형들의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 게다가, 프로세서들(602)은 단일 또는 다중 코어 설계를 가질 수 있다. 다중 코어 설계를 가지는 프로세서들(602)은 동일한 집적 회로(IC) 다이상에 서로 다른 유형들의 프로세서 코어들을 통합할 수 있다. 또한, 다중 코어 설계를 가지는 프로세서들(602)은 대칭 또는 비대칭 멀티프로세서들로서 구현될 수 있다. 실시예에서, 프로세서들(602) 중 하나 이상은 도 1의 프로세서들(102)과 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(602) 중 하나 이상은 도 1-3을 참조하여 논의된 제어 유닛(120)을 포함할 수 있다. 또한, 도 3-5를 참조하여 논의된 동작들은 시스템(600)의 하나 이상의 컴포넌트들에 의해 실행될 수 있다.
칩셋(606)은 또한 상호접속 네트워크(604)로 통신할 수 있다. 칩셋(606)은 MCH(memory control hub)(608)를 포함할 수 있다. MCH(608)는 메모리(612)(도 1의 메모리(130)와 동일하거나 유사할 수 있음)와 통신하는 메모리 컨트롤러(610)를 포함할 수 있다. 메모리(412)는 CPU(602), 또는 컴퓨팅 시스템(600)에 포함되는 임의의 다른 디바이스에 의해 실행될 수 있는 명령어들의 시퀀스들을 포함하는 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(612)는 RAM(random access memory), 동적 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM)과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들, 또는 기타 유형의 스토리지 디바이스들을 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리도 또한 활용될 수 있다. 다중 CPU 및/또는 다중 시스템 메모리와 같은 추가 디바이스들이 상호접속 네트워크(604)를 통해 통신할 수 있다.
MCH(608)는 또한 디스플레이 디바이스(616)와 통신하는 그래픽 인터페이스(614)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(614)는 AGP(accelerated graphics port)를 통해 디스플레이 디바이스(616)와 통신할 수 있다. 본 발명의 실시예에서, (평판 디스플레이와 같은) 디스플레이(616)는, 예를 들어 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장되는 이미지의 디지털 표현을 디스플레이(616)에 의해 해석되고 표시되는 디지털 신호들로 번역하는 신호 변환기를 통해 그래픽 인터페이스(614)와 통신할 수 있다. 디스플레이 디바이스에 의해 발생되는 디스플레이 신호들은 디스플레이(616)에 의해 해석되고 후속하여 그 상에 표시되기 전에 다양한 제어 디바이스들을 거칠 수 있다.
허브 인터페이스(618)는 MCH(608) 및 ICH(input/output control hub)(620)가 통신하도록 허용한다. ICH(620)는 컴퓨팅 시스템(600)과 통신하는 I/O 디바이스(들)에게 인터페이스를 제공할 수 있다. ICH(620)는, PCI(peripheral component interconnect) 브리지, USB(universal serial bus) 컨트롤러, 또는 다른 유형들의 주변 기기 브리지들(peripheral bridges) 또는 컨트롤러들과 같은 주변 기기 브리지(또는 컨트롤러)(624)를 통해 버스(622)와 통신할 수 있다. 브리지(624)는 CPU(602)와 주변 기기들 간의 데이터 경로를 제공할 수 있다. 다른 유형의 토폴로지들이 활용될 수 있다. 또한, 다중 버스가, 예를 들어 다중 브리지 또는 컨트롤러를 통해 ICH(620)와 통신할 수 있다. 더욱이, ICH(620)와 통신 상태에 있는 다른 주변 기기들은, 본 발명의 다양한 실시예들에서, IDE(integrated drive electronics) 또는 SCSI(small computer system interface) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(예를 들어, DVI(digital video interface)), 또는 기타 디바이스들을 포함할 수 있다.
버스(622)는 오디오 디바이스(626), 하나 이상의 디스크 드라이브(들)(628), 및 (컴퓨터 네트워크(603)와 통신 상태에 있는) 네트워크 인터페이스 디바이스(630)와 통신할 수 있다. 다른 디바이스들은 버스(622)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(630)와 같은) 다양한 컴포넌트들은 본 발명의 몇몇 실시예들에서 MCH(608)와 통신할 수 있다. 또한, 프로세서(602) 및 본 명세서에서 논의되는 하나 이상의 다른 컴포넌트들은 단일 칩을 형성하기 위해(예를 들어, SOC(System on Chip)를 제공하기 위해) 조합될 수 있다. 더욱이, 그래픽 가속기(616)는 본 발명의 기타 실시예들에서 MCH(608) 내에 포함될 수 있다.
더욱이, 컴퓨팅 시스템(600)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중 하나 이상을 포함할 수 있다: ROM(read-only memory), PROM(programmable ROM), EPROM(erasable PROM), EEPROM(electrically EPROM), 디스크 드라이브(예를 들어, 628), 플로피 디스크, CD-ROM(compact disk ROM), DVD(digital versatile disk), 플래시 메모리, 광자기 디스크, 또는 (예로, 명령어들을 포함하는) 전자적 데이터를 저장할 수 있는 그 밖의 유형들의 비휘발성 머신 판독가능 매체.
도 7은 본 발명의 실시예에 따른 컴퓨팅 시스템(700)의 블록도를 예시한다. 시스템(700)은 하나 이상의 프로세서들(702-1 내지 702-N)(일반적으로 "프로세서들(702)" 또는 "프로세서(702)"로서 본 명세서에서 지칭됨)을 포함할 수 있다. 프로세서들(702)은 상호접속 네트워크 또는 버스(704)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함할 수 있는데, 그 중 일부가 명확성을 위해 프로세서(702-1)를 참조하여서만 논의된다. 따라서, 나머지 프로세서들(702-2 내지 702-N)의 각각은 프로세서(702-1)를 참조하여 논의되는 것과 동일한 또는 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(702-1)는 하나 이상의 프로세서 코어들(706-1 내지 706-M)("코어들(706)"로서 또는 보다 일반적으로 "코어(706)"로서 본 명세서에서 지칭됨), 공유 캐시(708), 라우터(710), 및/또는 프로세서 제어 로직 또는 유닛(720)을 포함할 수 있다. 프로세서 코어들(706)은 단일 집적 회로(IC) 칩상에 구현될 수 있다. 게다가, 칩은 하나 이상의 공유 및/또는 사유 캐시들(이를테면, 캐시(708)), 버스들 또는 상호접속들(이를테면, 버스 또는 상호접속 네트워크(712)), 메모리 컨트롤러들, 또는 기타 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(710)는 프로세서(702-1) 및/또는 시스템(700)의 다양한 컴포넌트들 간에서 통신하기 위해 이용될 수 있다. 더욱이, 프로세서(702-1)는 둘 이상의 라우터(710)를 포함할 수 있다. 게다가, 다수의 라우터(710)는 프로세서(702-1)의 내부 또는 외부의 다양한 컴포넌트들 간의 데이터 라우팅을 가능하게 하기 위해 통신 상태에 있을 수 있다.
공유 캐시(708)는 코어들(706)과 같은 프로세서(702-1)의 하나 이상의 컴포넌트들에 의해 활용되는 (예를 들어, 명령어들을 포함하는) 데이터를 저장할 수 있다. 예를 들면, 공유 캐시(708)는 프로세서(702)의 컴포넌트들에 의한 보다 빠른 접근을 위해 메모리(714) 내에 저장되는 데이터를 국지적으로 캐시할 수 있다. 실시예에서, 캐시(708)는 중간 레벨 캐시(예컨대, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 기타 레벨들의 캐시), LLC(last level cache), 및/또는 이들의 조합들을 포함할 수 있다. 더욱이, 프로세서(702-1)의 다양한 컴포넌트들은 버스[예를 들어, 버스(712)], 및/또는 메모리 컨트롤러 또는 허브를 통해 공유 캐시(708)와 직접적으로 통신할 수 있다. 도 7에 도시된 바와 같이, 몇몇 실시예들에서, 코어들(706) 중 하나 이상은 레벨 1(L1) 캐시(716-1)(일반적으로 "L1 캐시(716)"로서 본 명세서에서 지칭됨)를 포함할 수 있다. 일 실시예에서, 제어 유닛(720)은 도 2에서 메모리 컨트롤러(122)와 관련하여 위에서 기술된 동작들을 구현하기 위한 로직을 포함할 수 있다.
도 8은 본 발명의 실시예에 따라, 프로세서 코어(706)의 부분들과 컴퓨팅 시스템의 기타 컴포넌트들의 블록도를 예시한다. 일 실시예에서, 도 8에 도시된 화살표들은 코어(706)를 통한 명령어들의 흐름 방향을 예시한다. 하나 이상의 프로세서 코어들(프로세서 코어(706)와 같은 것)이 도 7을 참조하여 논의된 것과 같은 단일 집적 회로 칩(또는 다이)상에 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 사유 캐시(예컨대, 도 7의 캐시(708)), 상호접속들(예컨대, 도 7의 상호접속들(704 및/또는 112)), 제어 유닛들, 메모리 컨트롤러들, 또는 기타 컴포넌트들을 포함할 수 있다.
도 8에 도해된 바와 같이, 프로세서 코어(706)는 코어(706)에 의한 실행을 위한 명령어들(조건부 분기들을 가진 명령어들을 포함함)을 페치하기 위한 페치 유닛(fetch unit)(802)을 포함할 수 있다. 명령어들은 메모리(714)와 같은 임의의 스토리지 디바이스들로부터 페치될 수 있다. 코어(706)는 또한 페치된 명령어를 디코딩하기 위한 디코드 유닛(804)을 포함할 수 있다. 예를 들어, 디코드 유닛(804)은 페치된 명령어를 복수의 uop(micro-operations)로 디코드할 수 있다.
또한, 코어(706)는 스케줄 유닛(806)을 포함할 수 있다. 스케줄 유닛(806)은, 명령어들이 디스패치(dispatch)를 위해 준비될 때까지, 예컨대 디코딩된 명령어의 모든 소스 값들이 이용 가능하게 될 때까지, 디코딩된 명령어들(예컨대, 디코드 유닛(804)으로부터 수신됨)을 저장하는 것과 연관되는 다양한 동작들을 실행할 수 있다. 일 실시예에서, 스케줄 유닛(806)은 실행을 위해 실행 유닛(808)에게 디코딩된 명령어들을 스케줄링하고/또는 발행(또는 디스패치)할 수 있다. 실행 유닛(808)은 디스패치된 명령어들이 (예컨대, 디코드 유닛(804)에 의해) 디코딩되고 (예컨대, 스케줄 유닛(806)에 의해) 디스패치된 후에 디스패치된 명령어들을 실행할 수 있다. 실시예에서, 실행 유닛(808)은 둘 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(808)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 연산들을 실행할 수 있고, 또한 하나 이상의 ALU(arithmetic logic unit)들을 포함할 수 있다. 실시예에서, 보조 프로세서(도시되지 않음)는 실행 유닛(808)과 연계하여 다양한 산술 연산들을 실행할 수 있다.
또한, 실행 유닛(808)은 명령어들을 비순차적(out-of-order)으로 실행할 수 있다. 따라서, 프로세서 코어(706)는 일 실시예에서 비순차적 프로세서 코어일 수 있다. 코어(706)는 또한 리타이어먼트 유닛(retirement unit)(810)을 포함할 수 있다. 리타이어먼트 유닛(810)은 실행된 명령어들이 커밋(commit)된 후에 실행된 명령어들을 리타이어할 수 있다. 실시예에서, 실행된 명령어들의 리타이어먼트는 프로세서 상태가 명령어들의 실행으로부터 커밋되는 것과, 명령어들에 의해 이용되는 물리적 레지스터들이 할당 해제(de-allocate)되는 것과, 기타 등등을 초래할 수 있다.
코어(706)는 또한 하나 이상의 버스들(예컨대, 버스들(804 및/또는 812))을 통해 프로세서 코어(706)의 컴포넌트들과 기타 컴포넌트들(이를테면, 도 8을 참조하여 논의된 컴포넌트들) 간의 통신을 가능하게 하는 버스 유닛(714)을 포함할 수 있다. 코어(706)는 또한 코어(706)의 다양한 컴포넌트들에 의해 접근되는 데이터(이를테면, 전력 소비 상태 설정들과 관계되는 값들)를 저장하기 위한 하나 이상의 레지스터들(816)을 포함할 수 있다.
게다가, 도 7이 상호접속(812)을 통해 코어(706)에 결합되는 제어 유닛(720)을 예시하지만, 다양한 실시예들에서, 제어 유닛(720)은 코어(706)의 내부와 같은 다른 곳에 자리 잡을 수 있고, 버스(704)를 통해 코어에 결합될 수 있고, 기타 등등과 같이 될 수 있다.
몇몇 실시예들에서, 본 명세서에서 논의되는 컴포넌트들 중 하나 이상은 SOC(System On Chip) 디바이스로서 구체화될 수 있다. 도 9는 실시예에 따른 SOC 패키지의 블록도를 예시한다. 도 9에 예시된 바와 같이, SOC(902)는 하나 이상의 CPU(Central Processing Unit) 코어들(920), 하나 이상의 GPU(Graphics Processor Unit) 코어들(930), 입력/출력(I/O) 인터페이스(940), 및 메모리 컨트롤러(942)를 포함한다. SOC 패키지(902)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 논의되는 것과 같은 상호접속 또는 버스에 결합될 수 있다. 또한, SOC 패키지(902)는 다른 도면들을 참조하여 본 명세서에서 논의되는 것들과 같은 컴포넌트들보다 더 많은 것을 또는 더 적은 것을 포함할 수 있다. 또한, SOC 패키지(902)의 각각의 컴포넌트는, 예컨대 본 명세서에서 다른 도면들을 참조하여 논의된 바와 같은 하나 이상의 다른 컴포넌트들을 포함할 수 있다. 일 실시예에서, SOC 패키지(902)(및 그 컴포넌트들)는, 예컨대 단일 반도체 디바이스로 패키징되는 하나 이상의 IC(Integrated Circuit) 다이상에 제공된다.
도 9에 도시된 바와 같이, SOC 패키지(902)는 메모리 컨트롤러(942)를 통해 메모리(960)(이것은 다른 도면들을 참조하여 본 명세서에서 논의된 메모리와 유사하거나 동일한 것일 수 있음)에 결합된다. 실시예에서, 메모리(960)(또는 이것의 일부)는 SOC 패키지(902)상에 통합될 수 있다.
I/O 인터페이스(940)는, 예컨대 다른 도면들을 참조하여 본 명세서에서 논의된 것과 같은 상호접속 및/또는 버스를 통해 하나 이상의 I/O 디바이스들(970)에 결합될 수 있다. I/O 디바이스(들)(970)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(이를테면, 카메라 또는 캠코더/비디오 리코더), 터치스크린, 스피커, 또는 이와 유사한 것 중 하나 이상을 포함할 수 있다.
도 10은 본 발명의 실시예에 따라 포인트 투 포인트(point-to-point)(PtP) 구성으로 배열되는 컴퓨터 시스템(1000)을 도해한다. 특히, 도 10은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트 투 포인트 인터페이스에 의해 상호 접속되는 시스템을 도시한다. 도 2를 참조하여 논의된 동작들은 시스템(1000)의 하나 이상의 컴포넌트들에 의해 실행될 수 있다.
도 10에 도시된 바와 같이, 시스템(1000)은 몇 개의 프로세서를 포함할 수 있는데, 명확성을 위해 그 중에서 두 개의 프로세서(1002 및 1004)만이 도시되었다. 프로세서들(1002 및 1004)은 각각이 메모리들(1010 및 1012)과의 통신을 가능하게 위한 로컬 MCH(memory controller hub)(1006 및 1008)를 포함할 수 있다. MCH(1006 및 1008)는 몇몇 실시예들에서 도 1의 메모리 컨트롤러(120) 및/또는 로직(125)을 포함할 수 있다.
실시예에서, 프로세서들(1002 및 1004)은 도 7을 참조하여 논의된 프로세서들(702) 중 하나일 수 있다. 프로세서들(1002 및 1004)은 제각기 PtP 인터페이스 회로들(1016 및 1018)을 사용하는 PtP 인터페이스(1014)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(1002 및 1004)은 각각이 포인트 투 포인트 인터페이스 회로들(1026, 1028, 1030, 및 1032)을 이용하는 개별 PtP 인터페이스들(1022 및 1024)을 통해 칩셋(1020)과 데이터를 교환할 수 있다. 칩셋(1020)은, 예를 들어 PtP 인터페이스 회로(1037)를 이용하는 고성능 그래픽 인터페이스(1036)를 통해 고성능 그래픽 회로(1034)와 데이터를 추가로 교환할 수 있다.
도 10에 도시된 대로, 도 1의 코어들(106) 및/또는 캐시(108) 중 하나 이상은 프로세서들(902 및 904) 내에 자리 잡을 수 있다. 하지만, 본 발명의 기타 실시예들은 도 9의 시스템(900)내의 다른 회로들, 로직 유닛들, 또는 디바이스들에 존재할 수 있다. 게다가, 본 발명의 기타 실시예들은 도 9에 예시된 몇 개의 회로들, 로직 유닛들, 또는 디바이스들의 전체에 걸쳐서 분산될 수 있다.
칩셋(920)은 PtP 인터페이스 회로(941)를 이용하여 버스(940)와 통신할 수 있다. 버스(940)는 버스 브리지(942) 및 I/O 디바이스들(943)과 같이 자신과 통신하는 하나 이상의 디바이스들을 가질 수 있다. 버스(944)를 통해, 버스 브리지(943)는 키보드/마우스(945), 통신 디바이스들(946)(모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(803)와 통신할 수 있는 기타 통신 디바이스들과 같은 것), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(948)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 스토리지 디바이스(948)(이것은 하드 디스크 드라이브 또는 NAND 플래시 기반 SSD(solid state drive)일 수 있음)는 프로세서들(902 및/또는 904)에 의해 실행될 수 있는 코드(949)를 저장할 수 있다.
하기 예들은 추가 실시예들과 관련된다.
예 1은 메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고, 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고, 메모리 디바이스에서의 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고, 및 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 포함하는 메모리 컨트롤러이다.
예 2에서, 예 1의 주제는 미디어 시퀀스가 전역적 시퀀스 번호보다 오래되지 않았을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 3에서, 예 1 또는 예 2의 주제는 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고 또한 요청된 논리 블록 어드레스와 연관되는 메타데이터에 미디어 시퀀스 번호로서 전역적 시퀀스 번호를 저장하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 4에서, 예들 1-3 중 임의의 하나의 주제는 제로 메모리 요청을 수신하고, 제로 메모리 명령에 응답하여 전역적 시퀀스 번호를 증분하고, 및 전역적 시퀀스 번호를 메모리 디바이스에 저장하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 5에서, 예들 1-4 중 임의의 하나의 주제는 전역적 시퀀스 번호가 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고 또한 미디어 시퀀스 번호가 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 6에서, 예들 1-5 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 7에서, 예들 1-6 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 8에서, 예들 1-7 중 임의의 하나의 주제는 미디어 시퀀스 시리얼 번호가 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 논리 블록 어드레스에 저장된 데이터대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 9는 프로세서 및 메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고, 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고, 메모리 디바이스에서의 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고, 및 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 메모리 제어 로직을 포함하는 전자 디바이스이다.
예 10에서, 예 9의 주제는, 디바이스로부터, 데이터에 대한 요청을 수신하고, 및 디바이스로부터의 요청에 응답하여, 원격 메모리 디바이스로부터의 데이터에 대한 요청을 발생하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 11에서, 예 9 또는 예 10의 주제는 미디어 시퀀스가 전역적 시퀀스 번호보다 오래되지 않았을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 12에서, 예들 9-11 중 임의의 하나의 주제는 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고, 및 요청된 논리 블록 어드레스와 연관되는 메타데이터에 전역적 시퀀스 번호를 미디어 시퀀스 번호로서 저장하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 13에서, 예들 9-12 중 임의의 하나의 주제는 제로 메모리 요청을 수신하고, 및 제로 메모리 명령에 응답하여, 전역적 시퀀스 번호를 증분하고, 전역적 시퀀스 번호를 메모리 디바이스에 저장하기 위한 로직을 선택 사항으로 포함한다.
예 14에서, 예들 9-12 중 임의의 하나의 주제는 전역적 시퀀스 번호가 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고 또한 미디어 시퀀스 번호가 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 15에서, 예들 9-14 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 16에서, 예들 9-15 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 17에서, 예들 9-16 중 임의의 하나의 주제는 미디어 시퀀스 시리얼 번호가 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 18은, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 포함하는 컴퓨터 프로그램 제품인데, 이 로직 명령어들은 프로세서에 의해 실행될 때, 메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고, 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고, 메모리 디바이스에서의 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고, 및 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 오래되었을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하도록 프로세서를 구성한다.
예 19에서, 예 18의 주제는 미디어 시퀀스가 전역적 시퀀스 번호보다 오래되지 않았을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 20에서 예 18 또는 예 19의 주제는 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고 또한 요청된 논리 블록 어드레스와 연관되는 메타데이터에 미디어 시퀀스 번호로서 전역적 시퀀스 번호를 저장하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 21에서, 예들 18-20 중 임의의 하나의 주제는 제로 메모리 요청을 수신하고, 제로 메모리 명령에 응답하여 전역적 시퀀스 번호를 증분하고, 및 전역적 시퀀스 번호를 메모리 디바이스에 저장하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 22에서, 예들 18-21 중 임의의 하나의 주제는 전역적 시퀀스 번호가 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고 또한 미디어 시퀀스 번호가 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는 배열을 선택 사항으로 포함할 수 있다.
예 23에서, 예들 18-22 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 24에서, 예들 18-23 중 임의의 하나의 주제는 미디어 시퀀스 시리즈 번호가 전역적 시퀀스 시리얼 번호와 동일하고 미디어 시퀀스 번호가 전역적 시퀀스 번호보다 작을 때 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
예 25에서, 예들 18-24 중 임의의 하나의 주제는 미디어 시퀀스 시리얼 번호가 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 선택 사항으로 포함할 수 있다.
본 발명의 다양한 실시예들에서, 예를 들어 도 1 내지 도 9를 참조하여 본 명세서에 기술된 동작들은, 본 명세서에서 논의되는 프로세스를 실행하도록 컴퓨터를 프로그래밍하는 데 사용되는 명령어들(또는 소프트웨어 프로시저들)을 저장한(예를 들어, 비-일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 예를 들어 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는, 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 또는 이들의 조합들로서 구현될 수 있다. 또한, "로직"이라는 용어는 예로서 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 조합을 포함할 수 있다. 머신 판독가능 매체는 본 명세서에서 논의되는 바와 같은 저장 디바이스를 포함할 수 있다.
본 명세서에서 "일 실시예(one embodiment)" 또는 "실시예(an embodiment)"에 대한 언급은, 이 실시예와 관련하여 설명된 특정 피처, 구조, 또는 특성이 적어도 일 구현에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 곳에서의 "일 실시예에서"라는 구문의 출현은 모두가 동일 실시예를 지칭할 수도 있고 그렇지 않을 수도 있다.
또한, 본 설명 및 청구항들에서, "결합된(coupled)" 및 "접속된(connected)"이라는 용어들은 그 파생어들과 함께 이용될 수 있다. 본 발명의 몇몇 실시예들에서, "접속된"은, 2개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하는 것을 나타내는데 이용될 수 있다. "결합된"은, 2개 이상의 요소들이 직접 물리적으로 또는 전기적으로 접촉하는 것을 의미할 수 있다. 그러나, "결합된"은, 2개 이상의 요소들이 서로 직접 접촉하지 않을 수 있지만 여전히 서로 상호작용하거나 협력하는 것을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들은 구조적 피처들 및/또는 방법론적 작용들에 대해 특정적인 언어로 설명되었지만, 청구 주제는 설명된 특정적 피처들 또는 작용들에만 제한되지는 않을 수 있다는 것을 이해해야 한다. 오히려, 특정 피처들 및 작용들은 청구 주제를 구현하는 예시적 형태들로서 개시되어 있다.

Claims (25)

  1. 메모리 컨트롤러로서:
    메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고;
    상기 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고;
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 오래되었을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직
    을 포함하는 메모리 컨트롤러.
  2. 제1항에 있어서,
    상기 미디어 시퀀스가 상기 전역적 시퀀스 번호보다 오래되지 않았을 때 상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  3. 제1항에 있어서,
    상기 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고; 및
    상기 요청된 논리 블록 어드레스와 연관되는 메타데이터에 상기 전역적 시퀀스 번호를 미디어 시퀀스 번호로서 저장하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  4. 제1항에 있어서,
    제로 메모리 요청을 수신하고, 및 제로 메모리 명령에 응답하여:
    상기 전역적 시퀀스 번호를 증분하고; 및
    상기 전역적 시퀀스 번호를 상기 메모리 디바이스에 저장하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  5. 제1항에 있어서,
    상기 전역적 시퀀스 번호는 상기 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고; 및
    상기 미디어 시퀀스 번호는 상기 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는
    메모리 컨트롤러.
  6. 제5항에 있어서,
    상기 미디어 시퀀스 시리즈 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  7. 제5항에 있어서,
    상기 미디어 시퀀스 시리즈 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  8. 제5항에 있어서,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직
    을 더 포함하는 메모리 컨트롤러.
  9. 전자 디바이스로서:
    프로세서; 및
    메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고;
    상기 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고;
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 오래되었을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 메모리 제어 로직
    을 포함하는 전자 디바이스.
  10. 제9항에 있어서, 상기 메모리 컨트롤러는,
    디바이스로부터, 상기 데이터에 대한 요청을 수신하고; 및
    상기 디바이스로부터의 요청에 응답하여, 원격 메모리 디바이스로부터의 데이터에 대한 요청을 발생하기 위한 로직을 더 포함하는
    전자 디바이스.
  11. 제10항에 있어서, 상기 메모리 컨트롤러는,
    상기 미디어 시퀀스가 상기 전역적 시퀀스 번호보다 오래되지 않았을 때 상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 더 포함하는
    전자 디바이스.
  12. 제9항에 있어서, 상기 메모리 컨트롤러는,
    상기 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고; 및
    상기 요청된 논리 블록 어드레스와 연관되는 메타데이터에 상기 전역적 시퀀스 번호를 미디어 시퀀스 번호로서 저장하기 위한 로직을 더 포함하는
    전자 디바이스.
  13. 제9항에 있어서, 상기 메모리 컨트롤러는,
    제로 메모리 요청을 수신하고, 및 제로 메모리 명령에 응답하여:
    상기 전역적 시퀀스 번호를 증분하고; 및
    상기 전역적 시퀀스 번호를 상기 메모리 디바이스에 저장하기 위한 로직을 더 포함하는
    전자 디바이스.
  14. 제9항에 있어서,
    상기 전역적 시퀀스 번호는 상기 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고; 및
    상기 미디어 시퀀스 번호는 상기 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는
    전자 디바이스.
  15. 제14항에 있어서, 상기 메모리 컨트롤러는,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 더 포함하는
    전자 디바이스.
  16. 제14항에 있어서, 상기 메모리 컨트롤러는,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하기 위한 로직을 더 포함하는
    전자 디바이스.
  17. 제14항에 있어서, 상기 메모리 컨트롤러는,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하기 위한 로직을 더 포함하는
    전자 디바이스.
  18. 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 포함하는 컴퓨터 프로그램 제품으로서,
    상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    메모리 디바이스로부터 전역적 시퀀스 번호를 검색하고;
    상기 메모리 디바이스에서의 논리 블록 어드레스에 저장된 데이터에 대한 판독 요청을 수신하고;
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스로부터 미디어 시퀀스 번호를 검색하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 오래되었을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  19. 제18항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    상기 미디어 시퀀스가 상기 전역적 시퀀스 번호보다 오래되지 않았을 때 상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  20. 제18항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    상기 메모리 디바이스에서의 논리 블록 어드레스에 데이터를 기입하라는 기입 요청을 수신하고; 및
    상기 요청된 논리 블록 어드레스와 연관되는 메타데이터에 상기 전역적 시퀀스 번호를 미디어 시퀀스 번호로서 저장하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  21. 제18항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    제로 메모리 요청을 수신하고, 및 제로 메모리 명령에 응답하여:
    상기 전역적 시퀀스 번호를 증분하고; 및
    상기 전역적 시퀀스 번호를 상기 메모리 디바이스에 저장하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  22. 제18항에 있어서,
    상기 전역적 시퀀스 번호는 상기 전역적 시퀀스 번호가 속하는 시리즈를 식별하는 전역적 시퀀스 시리즈 번호를 포함하고; 및
    상기 미디어 시퀀스 번호는 상기 미디어 시퀀스 번호가 속하는 시리즈를 식별하는 미디어 시퀀스 시리즈 번호를 포함하는
    컴퓨터 프로그램 제품.
  23. 제22항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  24. 제22항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하고; 및
    상기 미디어 시퀀스 번호가 상기 전역적 시퀀스 번호보다 작을 때,
    상기 메모리 디바이스에서의 상기 논리 블록 어드레스에 저장된 데이터를 포함하는 응답을 반환하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
  25. 제22항에 있어서, 비일시적 컴퓨터 판독 가능 매체에 저장된 로직 명령어들을 더 포함하고, 상기 로직 명령어들은, 프로세서에 의해 실행될 때,
    상기 미디어 시퀀스 시리얼 번호가 상기 전역적 시퀀스 시리얼 번호와 동일하지 않을 때 상기 논리 블록 어드레스에 저장된 데이터 대신에 널 응답을 반환하도록 상기 프로세서를 구성하는
    컴퓨터 프로그램 제품.
KR1020167005237A 2013-09-27 2014-09-18 메모리 관리 KR101743409B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/039,129 2013-09-27
US14/039,129 US9317421B2 (en) 2013-09-27 2013-09-27 Memory management
PCT/US2014/056218 WO2015047848A1 (en) 2013-09-27 2014-09-18 Memory management

Publications (2)

Publication Number Publication Date
KR20160039262A true KR20160039262A (ko) 2016-04-08
KR101743409B1 KR101743409B1 (ko) 2017-06-15

Family

ID=52741300

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005237A KR101743409B1 (ko) 2013-09-27 2014-09-18 메모리 관리

Country Status (7)

Country Link
US (2) US9317421B2 (ko)
KR (1) KR101743409B1 (ko)
CN (1) CN105474183B (ko)
BR (1) BR112016003873B1 (ko)
GB (1) GB2532667B (ko)
RU (1) RU2643499C2 (ko)
WO (1) WO2015047848A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014178814A2 (en) * 2013-04-29 2014-11-06 Hewlett-Packard Development Company, L.P. Non-volatile memory to store resettable data
US10222990B2 (en) * 2015-07-24 2019-03-05 Sandisk Technologies Llc Optimistic read operation
CN108228470B (zh) * 2016-12-21 2021-05-18 北京忆恒创源科技有限公司 一种处理向nvm写入数据的写命令的方法和设备
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10606513B2 (en) * 2017-12-06 2020-03-31 Western Digital Technologies, Inc. Volatility management for non-volatile memory device
US11579770B2 (en) 2018-03-15 2023-02-14 Western Digital Technologies, Inc. Volatility management for memory device
CN113050874A (zh) * 2019-12-26 2021-06-29 华为技术有限公司 一种内存设置方法以及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7100080B2 (en) * 2002-05-08 2006-08-29 Xiotech Corporation Write cache recovery after loss of power
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US8452929B2 (en) 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7647474B2 (en) * 2005-09-27 2010-01-12 Intel Corporation Saving system context in the event of power loss
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20090171650A1 (en) 2007-12-27 2009-07-02 Unity Semiconductor Corporation Non-Volatile memories in interactive entertainment systems
US20090313416A1 (en) 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9069806B2 (en) * 2012-03-27 2015-06-30 Google Inc. Virtual block devices

Also Published As

Publication number Publication date
GB201603375D0 (en) 2016-04-13
US20150095563A1 (en) 2015-04-02
WO2015047848A1 (en) 2015-04-02
CN105474183A (zh) 2016-04-06
US9317421B2 (en) 2016-04-19
BR112016003873A2 (pt) 2020-10-27
GB2532667B (en) 2020-09-23
US20170024138A1 (en) 2017-01-26
RU2016107014A (ru) 2017-08-31
GB2532667A (en) 2016-05-25
BR112016003873B1 (pt) 2022-09-13
CN105474183B (zh) 2018-10-23
KR101743409B1 (ko) 2017-06-15
RU2643499C2 (ru) 2018-02-01

Similar Documents

Publication Publication Date Title
KR101743409B1 (ko) 메모리 관리
US10572339B2 (en) Memory latency management
US9129674B2 (en) Hybrid memory device
US20160283111A1 (en) Read operations in memory devices
KR101732841B1 (ko) 내장된 ecc 어드레스 맵핑
US10055346B2 (en) Polarity based data transfer function for volatile memory
KR20170036766A (ko) 비휘발성 메모리 모듈
US20170062023A1 (en) Systems and methods to rejuvenate nonvolatile memory using timestamps
US10019354B2 (en) Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory

Legal Events

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