KR20160146991A - 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화 - Google Patents

비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화 Download PDF

Info

Publication number
KR20160146991A
KR20160146991A KR1020167033076A KR20167033076A KR20160146991A KR 20160146991 A KR20160146991 A KR 20160146991A KR 1020167033076 A KR1020167033076 A KR 1020167033076A KR 20167033076 A KR20167033076 A KR 20167033076A KR 20160146991 A KR20160146991 A KR 20160146991A
Authority
KR
South Korea
Prior art keywords
volatile memory
version number
memory
boot
stored
Prior art date
Application number
KR1020167033076A
Other languages
English (en)
Other versions
KR101862112B1 (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 KR20160146991A publication Critical patent/KR20160146991A/ko
Application granted granted Critical
Publication of KR101862112B1 publication Critical patent/KR101862112B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Landscapes

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

Abstract

비휘발성 메모리(NVM) 기술 기반 메모리의 부팅 시간 제로화를 가속화하기 위한 장치 및 방법이 설명된다. 실시예에서, 스토리지 디바이스는 비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 저장한다. 메모리 제어기 로직은 각각의 후속 부팅 이벤트에 응답하여 저장된 부팅 버전 번호가 업데이트되게 한다. 메모리 제어기 로직은 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로를 반환한다. 다른 실시예들이 또한 개시되고 청구된다.

Description

비휘발성 메모리(NVM) 기술 기반 메모리의 부팅 시간 제로화의 가속화{ACCELERATING BOOT TIME ZEROING OF MEMORY BASED ON NON-VOLATILE MEMORY (NVM) TECHNOLOGY}
본 개시 내용은 일반적으로 전자 공학 분야에 관한 것이다. 보다 구체적으로, 일부 실시예들은 일반적으로 비휘발성 메모리(NVM) 기술 기반 메모리의 부팅 시간 제로화를 가속화하는 것에 관한 것이다.
일반적으로, 컴퓨팅 시스템에서 데이터를 저장하는 데 이용되는 메모리는 (휘발성 정보를 저장하는) 휘발성 또는 (영속성 정보를 저장하는) 비휘발성일 수 있다. 일반적으로, 휘발성 메모리에 저장된 휘발성 데이터 구조들은 프로그램의 런타임 동안 프로그램의 기능성을 지원하도록 요구되는 일시 또는 중간 정보를 위해 이용된다. 한편, 비휘발성 메모리에 저장된 영속성 데이터 구조들은 프로그램의 런타임을 넘어 이용가능하며, 재사용될 수 있다. 또한, 새로운 데이터는, 사용자 또는 프로그래머가 이 데이터를 영속적인 것으로 하는 것을 결정하기 이전에, 먼저 휘발성 데이터로서 통상적으로 생성된다. 예를 들어, 프로그래머 또는 사용자가 프로세서에 의해 직접 액세스할 수 있는 휘발성 메인 메모리의 휘발성 구조의 매핑(즉, 인스턴스화)을 야기할 수 있다. 한편, 영속성 데이터 구조들은, 플래시 메모리와 같은 비휘발성 메모리 기반 디바이스들 또는 입력/출력(I/O 또는 IO) 버스들에 연결된 회전 디스크들과 같은 비휘발성 스토리지 디바이스들 상에서 인스턴스화된다.
프로세서들에서 컴퓨팅 능력이 향상됨에 따라, 한가지 관심사항은 프로세서에 의해 메모리가 액세스될 수 있는 속도이다. 예를 들어, 데이터를 처리하기 위해서, 프로세서는 먼저 메모리로부터 데이터를 페치할 필요가 있을 수 있다. 데이터 처리의 완료 이후에, 결과들은 메모리에 저장될 필요가 있을 수 있다. 따라서, 메모리 액세스 속도는 전체 시스템 성능에 대해 직접적으로 영향을 미칠 수 있다.
다른 중요한 고려사항은 전력 소모이다. 예를 들어, 배터리 전력에 의존하는 이동형 컴퓨팅 디바이스들에서, 디바이스가 이동 중에 동작하는 것을 허용하기 위해 전력 소모를 감소시키는 것은 매우 중요하다. 전력 소모는 또한 비이동형 컴퓨팅 디바이스들에 대해서도 중요한데, 그 이유는 과도한 전력 소모가 (예를 들어, 부가적인 전력 이용, 증가하는 냉각 요건 등으로 인해) 비용을 증가시키고, 컴포넌트 수명을 단축시키고, 디바이스가 이용될 수 있는 위치들을 제한하는 것 등을 할 수 있기 때문이다.
하드 디스크 드라이브들은 비교적 저비용의 스토리지 솔루션을 제공하고 비휘발성 스토리지를 제공하기 위해 많은 컴퓨팅 디바이스들에서 이용된다. 그러나, 디스크 드라이브들은 (플래시 메모리와 같은 비휘발성 메모리를 포함하는) 고체 상태 드라이브들과 비교하여 볼 때 많은 전력을 이용하는데, 그 이유는 디스크 드라이브가 그것의 디스크들을 비교적 고속으로 회전시킬 필요가 있으며, 데이터 판독/기입을 위해 회전하는 디스크들에 대해 디스크 헤드들을 이동시킬 필요가 있기 때문이다. 이러한 물리적 이동은 열을 발생시키며, 전력 소모를 증가시킨다. 또한, 플래시 드라이브들은 하드 드라이브와 비교할 때 판독 및 기입 동작을 수행하는 경우에 더 빠르다. 이 때문에, 다수의 컴퓨팅 세그먼트들은 비휘발성인 플래시 메모리 디바이스들 쪽으로 넘어가고 있다.
상세한 설명이 첨부 도면을 참조하여 제공된다. 도면에서, 참조 부호의 가장 왼쪽의 숫자(들)는 참조 부호가 처음 나오는 도면을 식별한다. 상이한 도면들에서 동일한 참조 부호의 사용은 유사 또는 동일한 항목을 나타낸다.
도 1, 도 2, 도 5, 도 6 및 도 7은 본 명세서에서 설명된 다양한 실시예들을 구현하는 데 이용될 수 있는 컴퓨팅 시스템들의 실시예들의 블록도들을 도시한다.
도 3은 실시예에 따른 테이블 리프레시 상태 테이블의 블록도를 도시한다.
도 4는 실시예에 따른, 부팅 업 및 파워 다운 시퀀스를 수행하기 위한 방법의 흐름도를 도시한다.
이하의 설명에서, 다양한 실시예들의 완전한 이해를 제공하기 위해 다수의 세부사항들이 제시된다. 그러나, 다양한 실시예들은 세부 사항들 없이 실시될 수 있다. 다른 경우에, 공지된 방법들, 절차들, 컴포넌트들 및 회로들은 특정 실시예들을 모호하게 하지 않기 위해 상세히 설명되지 않는다. 또한, 다양한 양태의 실시예들은 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램으로 조직된 컴퓨터 판독가능한 명령어들("소프트웨어") 또는 하드웨어 및 소프트웨어의 일부 조합과 같은 다양한 수단을 사용하여 수행될 수 있다. 본 개시 내용의 목적을 위해, "로직"에 대한 언급은 하드웨어, 소프트웨어 또는 이들의 일부 조합을 의미할 것이다.
상술한 바와 같이, 다수의 컴퓨팅 세그먼트는 휘발성을 비휘발성 메모리(NVM)로 대체하고 있다. 일반적으로, 소프트웨어 애플리케이션은 휘발성 메모리가 OS(운영 체제)에 의해 할당되기 전에 제로화되도록 요구한다. 애플리케이션의 메모리 풋프린트가 증가함에 따라, 메모리를 초기화하기 위한 시간도 증가한다. 전형적으로, OS는 백그라운드에서 메모리 페이지들을 초기화하고 이들의 풀을 할당에 이용 가능하게 유지한다. 그러나, 이는 모든 메모리가 초기화되지 않은 상태에 있기 때문에 (예를 들면, 시스템에 전력을 인가하는) 부팅 후의 경우가 아니다. 메모리 용량 및 애플리케이션 요구가 증가함에 따라, 부팅 후에 애플리케이션을 개시하는 데 충분한 메모리를 소거하기 위한 시간이 급속히 증가하고 있다. 이러한 문제는 메인 메모리로서 DRAM(다이내믹 랜덤 액세스 메모리) 대신에 PCM(상변화 메모리)과 같은 특정한 고속 NVM 기술을 이용하는 경우에 특히 심해진다. 이 기술을 이용하여 용량은 매우 커질 수 있지만 기입 대역폭은 DRAM보다 현저하게 더 느리다. 이를 고려하면, 부팅 시간 초기화는 수 분 정도가 걸릴 수 있고 대규모 시스템에서 큰 문제가 될 수 있다.
이 때문에, 일부 실시예들은 NVM 기반 시스템 메모리의 순간적 초기화를 제공한다. 결국, 이는 매우 큰 메모리 용량이 컴퓨팅 시스템에 지원되게 한다. NAND 플래시 메모리, NOR 플래시 메모리 등을 포함하는 각종 유형의 NVM은 다양한 실시예들에서 이용될 수 있다. 그러한 실시예들은 부팅 시간 제로화 동안 NVM에 대한 고비용의 기입 트랜잭션을 방지하기 위한 것이다. 실제로 메모리를 소거하는 것 대신에, 실시예는 프로세서에 의해 실행되는 임의의 판독 또는 기입 동작의 크기인, 모든 NVM 메모리에 대한 그리고 이 메모리의 각각의 부분과 함께 저장되는 부팅 "버전(Version) 번호"(예를 들어, NVM에서 256B 라인)를 이용한다. (예를 들어, 각각의 후속 부팅 이벤트에 응답하여) 매 부팅 때마다, 이 부팅 버전 번호는 업데이트되고(예를 들어, 증가됨), NVM 내의 주어진 부분/라인에 대한 임의의 기입 트랜잭션/동작은 그 버전 번호를 업데이트할 것이다. 판독 동작 시, 라인에 저장된 버전 번호와 현재 부팅 버전 번호 사이의 불일치는 메모리 제어기 로직으로 하여금 데이터에 대해 제로를 반환하게 할 것이다. 따라서, 실제 제로화 동작은 방지될 수 있고, 성능을 상당히 개선시킨다. 본 명세서에서 이 기술은 때때로 "패스트 제로(fast zero)" 기술 또는 기능성으로서 지칭된다.
대조적으로, 부팅 시간 메모리 제로화를 위한 일부 구현은 애플리케이션이 개시되기 전에 큰 어드레스 범위에 제로의 브루트 포스 기입(brute force writing)을 이용할 수 있다. 다른 접근법은 요구에 기초하여 페이지 레벨 입도(granularity)로 제로화를 수행할 수 있다. 그러나, 이러한 양 접근법은 제로화된 메모리를 애플리케이션에 건네주기 전에 NVM에 실제로 기입하는 것에 의존한다. 양 접근법은, 메모리 용량이 NVM에 따라 증가하기 때문에 부팅 이후의 상당히 긴 애플리케이션 개시 시간을 가질 것이다.
또한, 본 명세서에서 설명된 기술들은, 도 1 내지 도 7을 참조하여 설명되는 바와 같이 다양한 컴퓨팅 시스템들(예를 들어, 스마트폰, 태블릿, UMPC(Ultra-Mobile Personal Computer), 랩톱 컴퓨터, Ultrabook™ 컴퓨팅 디바이스, 스마트 시계, 스마트 안경 등과 같은 이동형 디바이스 및/또는 고체 상태 드라이브를 포함함)에 제공될 수 있다. 보다 구체적으로, 도 1은 일 실시예에 따른 컴퓨팅 시스템(100)의 블록도를 도시한다. 시스템(100)은 (일반적으로 본 명세서에서 "프로세서들(102)" 또는 "프로세서(102)"로 지칭되는) 하나 이상의 프로세서들(102-1 내지 102-N)을 포함한다. 프로세서들(102)은 상호접속(interconnection) 또는 버스(104)를 통해 통신할 수 있다. 각각의 프로세서는 다양한 컴포넌트들을 포함하는데, 그 일부는 명확성을 위해 프로세서(102-1)를 참조하여서만 설명된다. 따라서, 나머지 프로세서(102-2 내지 102-N) 각각은 프로세서(102-1)를 참조하여 설명된 동일한 또는 유사한 컴포넌트들을 포함할 수 있다.
실시예에서, 프로세서(102-1)는 (본 명세서에서 "코어들(106)" 또는 보다 일반적으로 "코어(106)"로 지칭되는) 하나 이상의 프로세서 코어들(106-1 내지 106-M), (다양한 실시예들에서 공유 캐시(shared cache) 또는 전용 캐시(private cache)일 수 있는) 캐시(108), 및/또는 라우터(110)를 포함할 수 있다. 프로세서 코어들(106)은 하나의 집적 회로(IC) 칩 상에 구현될 수 있다. 또한, 칩은 하나 이상의 공유 및/또는 전용 캐시들(예컨대, 캐시(108)), 버스들 또는 상호접속들(예컨대, 버스 또는 상호접속(112)), 로직(120), 로직(150), 메모리 제어기들(예컨대, 도 5 내지 도 7을 참조하여 설명된 것들), NVM(Non-Volatile Memory)(152)(예를 들어, (NAND 메모리 셀들을 갖는) SSD, 플래시 메모리를 포함함) 등, 또는 다른 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(110)는 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하는 데 사용될 수 있다. 더욱이, 프로세서(102-1)는 2개 이상의 라우터(110)를 포함할 수 있다. 더구나, 다수의 라우터(110)는 프로세서(102-1) 안의 또는 밖의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하도록 통신할 수 있다.
캐시(108)는 코어들(106)과 같은, 프로세서(102-1)의 하나 이상의 컴포넌트들에 의해 사용되는 (예를 들어, 명령어들을 포함하는) 데이터를 저장할 수 있다. 예를 들어, 캐시(108)는 프로세서(102)의 컴포넌트들에 의한 더 빠른 액세스를 위해 휘발성 메모리(114)에 저장된 데이터를 로컬 캐싱할 수 있다. 도 1에 도시된 바와 같이, 메모리(114)는 상호접속(104)을 통해 프로세서들(102)과 통신할 수 있다. 실시예에서, (공유될 수 있는) 캐시(108)는 다양한 레벨들을 가질 수 있어서, 예를 들어, 캐시(108)는 중간-레벨(mid-level) 캐시 및/또는 마지막-레벨(last-level) 캐시(LLC)일 수 있다. 또한, 코어들(106) 각각은 레벨 1(L1) 캐시(116-1)(일반적으로 본 명세서에서 "L1 캐시(116)"로 지칭됨)를 포함할 수 있다. 프로세서(102-1)의 다양한 구성요소들은 버스(예를 들어, 버스(112)), 및/또는 메모리 제어기 또는 허브를 통해, 캐시(108)와 직접 통신할 수 있다.
도 1에 도시된 바와 같이, 메모리(114)는 휘발성 메모리 제어기(120)를 통해 시스템(100)의 다른 컴포넌트들에 연결될 수 있다. 시스템(100)은 NVM 메모리(152)를 시스템(100)의 다양한 컴포넌트들에 연결하기 위해 NVM 메모리 제어기 로직(150)을 또한 포함한다. 메모리(152)는 일부 실시예에서 나노와이어 메모리, FeTRAM(Ferro-electric transistor random access memory), 자기 저항성 랜덤 액세스 메모리 (MRAM), 플래시 메모리, STTRAM(Spin Torque Transfer Random Access Memory), 저항성 랜덤 액세스 메모리(Resistive Random Access Memory), PCM(위상 변화 메모리)과 같은 3D 크로스 포인트 메모리, NAND/NOR 메모리를 갖는 SSD 등과 같은 비휘발성 메모리를 포함한다. 메모리 제어기(150)가 상호접속(104)과 메모리(152) 사이에 연결되는 것으로 도시되어 있지만, 로직(150)은 시스템(100)의 다른 곳에 위치할 수 있다. 예를 들어, 로직(150)(또는 그 일부)은 다양한 실시예들에서 프로세서들(102) 중 하나, 제어기(120) 등 내에서 제공될 수 있다. 실시예에서, 로직(150) 및 NVM(152)은 SSD에 포함된다. 또한, 로직(150)은 다양한 실시예들과 관련하여 본 명세서에서 설명된 바와 같이 하나 이상의 NVM 디바이스(152)(예를 들어, 하나 이상의 NVM 디바이스는 일부 실시예들에서 동일한 집적 회로 다이 상에 제공됨)에 대한 액세스를 제어한다.
상술된 바와 같이, 부팅 시간 메모리 제로화를 위한 일부 구현은 애플리케이션이 개시되기 전에 큰 어드레스 범위에 제로의 브루트 포스 기입을 이용할 수 있다. 다른 접근법은 요구에 기초하여 페이지 레벨 입도로 제로화를 수행할 수 있다. 그러나, 이러한 양 접근법은 제로화된 메모리를 애플리케이션에 건네주기 전에 NVM에 실제로 기입하는 것에 의존한다. 양 접근법은, 메모리 용량이 NVM에 따라 증가하기 때문에 부팅 이후의 상당히 긴 애플리케이션 개시 시간을 가질 것이다.
이 때문에, 일부 실시예들은 NVM 기반 시스템 메모리의 순간적 초기화를 제공하고, 따라서, 매우 큰 메모리 용량이 컴퓨팅 시스템에 지원되게 한다. 그러한 실시예들은 부팅 시간 제로화 동안 NVM에 대한 고비용의 기입 트랜잭션을 방지하기 위한 것이다. 대신에, 실시예는 프로세서에 의해 실행되는 임의의 판독 또는 기입 동작의 크기인, NVM의 각각의 부분에 대한 부팅 "버전 번호"(예를 들어, NVM의 256B 라인)를 이용한다. (예를 들어, 각각의 후속 부팅 이벤트에 응답하여) 매 부팅 때마다, 이 부팅 버전 번호는 업데이트되고(예를 들어, 증가됨), NVM에 주어진 부분/라인에 대한 임의의 기입 트랜잭션/동작이 그 버전 번호를 업데이트할 것이다. 판독 동작 시, 라인에 저장된 버전 번호와 현재 부팅 버전 번호 사이의 불일치는 메모리 제어기 로직으로 하여금 데이터에 대해 제로를 반환하게 할 것이다. 따라서, 실제 제로화 트랜잭션은 방지될 수 있고, 성능을 상당히 개선시킨다.
따라서, 매우 큰 메모리 용량이 느린 부팅 시간의 불이익 없이 이용될 수 있다. 매 부팅 때마다 버전 번호를 증가시키거나 달리 업데이트시키는 것에 대한 한가지 문제점은 결국 버전 번호가 재순환될 것이라는 점이다. 이러한 조건은 "롤 오버"로서 지칭된다. 부정확한 제로화를 방지하기 위해, 롤 오버는 재순환되는 버전 번호가 일반적으로 임의의 NVM 라인에 저장되지 않는다는 것이 보증될 수 있을 때에만 일어날 수 있다. 이것을 확실하게 하기 위한 하나의 방법은 롤 오버가 발생할 때마다 미사용된 버전 번호를 갖는 전체 NVM에 기입하는 것이다. 이는 매우 고비용의 동작이다. 매우 큰 버전 번호는 이러한 롤 오버 조건을 불가능하게 할 뿐만 아니라, NVM에 번호를 저장하는 비용을 또한 증가시킬 것이다. 작은 버전 번호는 이하에 추가로 설명된 바와 같이 롤 오버 조건이 (예를 들어, 예외적으로) 드문 이벤트인 것과 같은 방식으로 이용될 수 있다.
도 2는 일 실시예에 따른 컴퓨팅 시스템의 일부의 블록도를 도시한다. 중앙 처리 유닛(CPU)(202)은 도 1 및 도 5 내지 도 7과 관련하여 설명된 프로세서들과 동일 또는 유사할 수 있다. CPU(202)는 NVM 듀얼 인라인 메모리 모듈(DIMM)(204)에 연결된다. DIMM(204)은 또한 NVM 메모리 제어기 로직(150) 및 NVM(152)(도 2에서 메모리 어드레스 공간으로 나타냄)을 포함한다. 로직(150) 및 NVM(152)은 NVM 채널(206)에 의해 연결된다.
도 2에 도시된 바와 같이, NVM 제어기 로직(150)은 CPU(202)와 판독/기입 트랜잭션을 통신하기 위해 메모리 인터페이스(I/F)를 포함한다. 판독/기입 명령 및 데이터는, 이하 추가로 설명된 바와 같이 NVM 채널(206)을 통해 그리고 리프레시 엔진 로직으로부터의 정보에 기초하여 NVM(152)과 통신하기 위해 판독/기입(R/W) 제어 로직에 전송된다. 제어기 로직(150)은 본 명세서에서 추가로 설명된 바와 같이 마이크로 제어기(μCTL) 및 데이터를 저장하기 위한 메모리(μCTL 메모리)를 또한 포함한다.
또한, 도 2의 블록도에서, NVM(152)은 예를 들어, DDR과 유사한, 메모리 인터페이스(I/F)를 통해 CPU에 접속된 DIMM 상에 구현된 메모리로서 이용된다. DIMM은, 시스템 메모리 어드레스 범위를 OS 및 애플리케이션 소프트웨어에 제공하는 NVM(152)과 또한 인터페이스하는 NVM 제어기 로직(150)을 갖는다.
NVM 제어기 로직(150)은 ("현재 버전"을 지칭하는) CV로 표기된 부팅 버전 번호를 유지한다. 파워 다운 시 NVM에 (예를 들어, NVM DIMM(204)의 μCTL 메모리 또는 다른 메모리에) 저장된 최종 CV로부터 모든 재부팅/부팅 이후 CV가 증가된다. 일 실시예에서, CV 크기는 8비트이다. 도 2에 도시된 바와 같이, NVM 어드레스 공간은 "라인들"로 세분화된다. 일 실시예에서, 라인의 데이터 크기는 256B이다. 데이터 일부는 CPU 판독 또는 기입 액세스 입도에 따라서 "서브 라인들"로 더 세분화될 수 있다. 일 실시예에서, 라인당 4개의 64B 서브 라인이 있다.
데이터 뿐만 아니라, NVM 어드레스 공간의 각각의 라인은 또한 일부 메타데이터를 저장할 수 있다. 메타데이터의 일부는 패스트 제로 기능성을 위해 사용된다. 이러한 요소들은 (1)저장된 버전 번호 또는 SV(예를 들어, 8비트); 및 (2)서브 라인당 1 제로 비트(일 실시예에서 4비트)를 포함한다.
NVM 제어기 로직(150)은 또한 NVM 어드레스 공간에서 각각의 라인을 연속적으로 스크럽(scrub)하는 리프레시 엔진 로직을 갖는다. 리프레시 엔진은 스크럽될 주어진 라인을 가리키기 위해 Ref-Addr-Counter(참조 어드레스 카운터)를 이용하고, 라인이 스크럽되면, 카운터는 업데이트된다(예를 들어, 증가됨). 전체 어드레스 공간이 스크럽될 때, "리프레시 사이클"이 완료된다. 그 후, 리프레시 엔진은 다음 리프레시 사이클을 개시할 것이다. 리프레시 사이클은 전형적으로 파워 다운 이벤트에 의해 중단되지 않는다면 미리 결정된 구간에서 완료할 수 있다. 일 실시예에서, 연속된 리프레시 사이클 지속시간은 2일이다. 전체 NVM 어드레스 범위는 이 타임프레임에서 스크럽된다.
일반적으로, 리프레시 엔진에 의한 "스크럽(scrub)"은 라인을 판독하고, 임의의 오류를 정정하고, 그 후 재기입하는 것을 포함한다. 리프레시 엔진은 또한 그 단독 이용을 위해 전용화될 수 있는 리프레시 버전 번호 또는 "RV"를 가질 것이다. 일 실시예에서, CV는 결코 RV와 동일할 수 없다. 리프레시 사이클이 파워 다운 이벤트에 의해 중단되면, Ref-Addr-Cnt의 상태는 NVM(예를 들어, NVM DIMM(204)의 μCTL 메모리 또는 다른 메모리)에 저장된다. 파워 업 시, 상태는 NVM 제어기에서 복원되고 리프레시 엔진은 중단한 리프레시 사이클을 다시 개시한다. 이는 NVM 어드레스 공간의 일부가 이러한 중단으로 인해 건너 뛰어지지 않는다는 것을 확실하게 하기 위해 중요하다.
CPU(202)는 서브 라인에 지시된 판독 또는 기입 동작을 NVM 제어기 로직(150)에 발행한다. 이어서, NVM 제어기(150)는 CV 및 취할 액션을 결정하기 위한 라인 메타데이터를 이용한다.
이하의 표 1은 일부 실시예에 따른 다양한 시나리오를 나타낸다.
Figure pct00001
재부팅 이후, 그리고 NVM 라인을 업데이트하기 위한 임의의 CPU 기입 동작 전에, 임의의 CPU 판독은 SV≠CV인 경우에 직면할 것이다. 이에 대한 예외는 추가로 이하에서 설명될 롤 오버 경우이다. 이를 고려하면, CPU는 모든 NVM 어드레스 공간으로부터 "제로들"만을 판독한다. 재부팅 시 CV의 증가는 전체 메모리 공간을 순간적으로 제로화하는 것과 동등하다.
CPU가 NVM 어드레스 공간에 기입하는 것을 개시함에 따라, 업데이트된 라인에 대한 SV가 CV로 변경된다. 이에 이어지는 임의의 판독은 에뮬레이트된 제로가 아니라 새로운 데이터를 판독할 것이다. 추가로, 부팅 이후에 기입되지 않은 임의의 라인에 대해, 리프레시 엔진은 SV=RV를 업데이트할 것이고, 따라서, 모든 손상된 버전 번호가 리프레시 사이클당 한번씩 제거되는 것을 확실하게 한다.
상술된 롤 오버를 참조하면, CV는 CV가 이용된 최종 시간 이후에 완전한 리프레시 사이클 전에 재사용될 수 없다. 이를 추적하기 위해, 실시예에 따르면, CV 리프레시 상태 테이블 또는 CVRT(300)로 불리는 테이블이 도 3에 도시된다. CVRT(300)는 NVM에(예를 들어, NVM DIMM(204)의 μCTL 메모리 또는 다른 메모리에) 저장될 수 있다. 테이블의 크기는 CV의 크기에 의해 규정된다. 그래서, 8비트 CV는 256 엔트리 테이블 등을 가질 것이다. 일 실시예에서, 하나의 엔트리(=RV)는 결코 이용되지 않는다. 테이블의 각각의 엔트리는 주어진 CV에 대해 CV 리프레시 상태를 갖는다.
도 3을 참조하면, V비트는 적어도 한번 이용된 CV에 대해 설정된다. 최종 리프레시 어드레스는 CV가 이용된 최종 시간에 파워 다운이 발생했을 때의 Ref-Addr-Cnt값이다. Ref 상태 플래그는, 적어도 하나의 리프레시 사이클이 CV가 이용된 최종 시간 이후에 완료되었는지 여부를 판정하게 하는 부가적인 비트이다. 새로운 CV가 생성될 때 부팅 업 시퀀스마다 한번씩, NVM 제어기 로직(150)은 완전한 리프레시 사이클이 CV가 이용된 최종 시간 이후에 발생했는지 알기 위해 CVRT(300)를 확인한다. 그렇지 않았다면, "롤 오버" 조건은 존재한다고 하고, 패스트 제로 메커니즘은 판독 동작에 응답하여 제로들을 생성하는 데 이용될 수 없다.
롤 오버 상태를 처리하는 데 적어도 2개의 선택사항이 있다. 하나는 시스템 소프트웨어(예를 들어, BIOS(Basic Input Output System)를 포함함) 또는 NVM 제어기 로직(150)으로 하여금 전체 NVM 어드레스 공간을 제로 데이터로 기입하고 동시에 SV=CV를 업데이트하게 하는 것이다. 다른 선택사항은 패스트 제로 기능성이 이러한 부팅 사이클에 이용되지 않는다는 것, 그리고 OS가 페이지를 소거하기 위해 그의 통상적인 접근법으로 폴백(fall back)해야 한다는 것을 시스템 소프트웨어(예를 들어, OS)에 알리는 것이다.
또한, CV 크기가 합리적인 한, 롤 오버 조건은 드문 예외이어야 한다. 예를 들어, 8비트 CV에 대해, 롤 오버 조건이 발생하기 위해서는, 정상적인 연속된 리프레시 사이클 기간 내에 254번의 재부팅이 있어야 할 필요가 있다. 완전한 리프레시 사이클은 1일 또는 2일 이내에 완료될 가능성이 있기 때문에, 그러한 시나리오는 시스템 확인과 같은 특정한 상황으로 제한될 가능성이 있고, 정상 동작 동안 발생할 가능성이 없다. 따라서, 모든 실용적인 목적을 위해, 이러한 패스트 제로 메커니즘은 언제나 작동해야 한다.
도 4는 실시예에 따른, 부팅 업 및 파워 다운 시퀀스를 수행하기 위한 방법(400)의 흐름도를 도시한다. 일 실시예에서, 도 1 내지 도 3 및 도 5 내지 도 7을 참조하여 설명된 다양한 구성요소들이 도 4를 참조하여 설명된 하나 이상의 동작들을 수행하는 데 이용될 수 있다. 일 실시예에서, 방법(400)의 하나 이상의 동작은 도 1의 로직(150)과 같은 로직(예를 들어, 펌웨어)에서 구현된다.
도 1 내지 도 4를 참조하면, 동작(402)에서, 패스트 제로 기능성 부팅 업 시퀀스가 개시된다. 동작(404)에서, (최종 CV, ref-addr-cnt, 및 CVRT(300)의 저장을 트리거하는) NVM(152)으로부터의 판독 동작이 검지된다. 동작(406)에서, CV 값은 업데이트된다(예를 들어, 증가됨). 동작(408)에서, CV 상태는 CVRT(300)로부터 판독되고, 저장된 참조 상태는 저장된 ref-addr-cnt에 대해 비교된다. 동작(410)은 CV 롤 오버 조건이 존재하는지 여부를 (예를 들어, 동작(408)의 비교에 기초하여) 판정한다. 만약 그렇다면, 동작(412)은 패스트 제로 동작을 완료 및 진행될 것으로 표시하기 위해 롤 오버 플래그를 지우고, 그렇지 않으면, 동작(414)은 패스트 제로 기능성이 없도록 롤 오버 플래그를 설정한다. 동작(412 또는 414) 이후에, 동작(416)에서, 리프레시 엔진은 업데이트된/증가된 ref-addr-cnt (또는 ref-addr-cnt+1)에서 개시된다. CVRT는 동작(418)에서 업데이트되고 저장된다. 동작(420)에서, 패스트 제로 초기화는 완료된다.
동작(450)에서, 파워 다운 패스트 제로 시퀀스는 개시된다. 동작(452)에서, CV는 최종의 SV 뿐만 아니라 ref-address-cnt 및 리프레시 상태로서 저장된다.
도 5는 본 발명의 실시예에 따른 컴퓨팅 시스템(500)의 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(interconnection network)(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 처리 유닛(들)(CPUs)(502) 또는 프로세서들을 포함할 수 있다. 프로세서들(502)은 범용 프로세서, (컴퓨터 네트워크(503)를 통해 전달된 데이터를 처리하는) 네트워크 프로세서, (셀폰들, 스마트폰들 등에서 사용되는 것들과 같은) 애플리케이션 프로세서, 또는 다른 유형의 프로세서(RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함함)를 포함할 수 있다. 유선(예를 들어, 이더넷, 기가비트, 파이버 등) 또는 (셀룰러, 3G(3세대 셀폰 기술 또는 3세대 무선 포맷(UWCC)), 5G, LPE(Low Power Embedded) 등과 같은) 무선 네트워크들을 포함하는 다양한 유형의 컴퓨터 네트워크들(503)이 이용될 수 있다. 또한, 프로세서(502)는 단일 또는 다중 코어 디자인을 가질 수 있다. 다중 코어 디자인을 갖는 프로세서(502)는 동일한 집적 회로(IC) 다이 상에 상이한 유형의 프로세서 코어들을 집적할 수 있다. 또한, 다중 코어 디자인을 갖는 프로세서(502)는 대칭형(symmetrical) 또는 비대칭형(asymmetrical) 멀티프로세서로서 구현될 수 있다.
실시예에서, 하나 이상의 프로세서(502)는 도 1의 프로세서(102)와 동일하거나 유사할 수 있다. 예를 들어, 하나 이상의 프로세서(502)는 하나 이상의 코어(106) 및/또는 캐시(108)를 포함할 수 있다. 또한, 도 1 내지 도 4를 참조하여 설명된 동작들은 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)은 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 그래픽 및 메모리 제어 허브(GMCH)(508)를 포함할 수 있다. GMCH(508)는 메모리(114)와 통신하는 (실시예의 도 1의 메모리 제어기(120)와 동일하거나 유사할 수 있는) 메모리 제어기(510)를 포함할 수 있다. 시스템(500)은 다양한 위치들(도 5에 도시된 것들과 같지만, 시스템(500) 내의 다른 위치들(도시되지 않음)에 있을 수 있음)에서 (예를 들어, NVM(152)에 연결된) 로직(150)을 또한 포함할 수 있다. 메모리(114)는 CPU(502) 또는 컴퓨팅 시스템(500)에 포함된 임의의 다른 디바이스에 의해 실행되는 명령어의 시퀀스를 포함하여, 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(114)는 랜덤 액세스 메모리(RAM), 다이내믹 RAM(DRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 또는 다른 유형의 스토리지 디바이스들과 같은 하나 이상의 휘발성 스토리지(또는 메모리) 디바이스들을 포함할 수 있다. 하드 디스크, 플래시, (PCM과 같은) 3D 크로스 포인트 메모리, 저항성 랜덤 액세스 메모리, NAND 메모리, NOR 메모리 및 STTRAM과 같은 비휘발성 메모리가 또한 사용될 수 있다. 부가적인 디바이스들은 다수의 CPU들 및/또는 다수의 시스템 메모리들과 같은 상호접속 네트워크(504)를 통해 통신할 수 있다.
GMCH(508)는 또한 그래픽 가속기(516)와 통신하는 그래픽 인터페이스(514)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(514)는 가속화된 그래픽 포트(accelerated graphics port)(AGP) 또는 PCI(Peripheral Component Interconnect)(또는 PCI 익스프레스(PCIe) 인터페이스)를 통해 그래픽 가속기(516)와 통신할 수 있다. 본 발명의 실시예에서, (평면 패널 디스플레이, 터치 스크린 등과 같은) 디스플레이(517)는, 예를 들어, 비디오 메모리 또는 시스템 메모리와 같은 스토리지 디바이스에 저장된 이미지의 디지털 표현을 디스플레이에 의해 해석되고 디스플레이되는 디스플레이 신호들로 번역하는 신호 변환기를 통해, 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성된 디스플레이 신호들은, 디스플레이(517)에 의해 해석되고 후속하여 디스플레이(517) 상에 디스플레이되기 이전에, 다양한 제어 디바이스들을 통과할 수 있다.
허브 인터페이스(518)는 GMCH(508)와 입력/출력 제어 허브(ICH)(520)가 통신하도록 할 수 있다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 디바이스들에 인터페이스를 제공할 수 있다. ICH(520)는, 주변 구성요소 상호접속(peripheral component interconnect)(PCI) 브리지, 범용 시리얼 버스(universal serial bus)(USB) 제어기, 또는 다른 유형의 주변 브리지(peripheral bridges) 또는 제어기와 같은 주변 브리지(또는 제어기)(524)를 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 디바이스들 사이에 데이터 경로를 제공할 수 있다. 기타 유형의 토폴로지가 이용될 수 있다. 또한, 예를 들어, 다수의 브리지 또는 제어기를 통해, 다수의 버스들이 ICH(520)와 통신할 수 있다. 또한, ICH(520)와 통신하는 다른 주변기기들은, 다양한 실시예들에서, 집적 드라이브 전자 장치(integrated drive electronics)(IDE) 또는 소형 컴퓨터 시스템 인터페이스(small computer system interface)(SCSI) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 지원(digital output support)(예를 들어, 디지털 비디오 인터페이스(DVI)), 또는 기타 디바이스들을 포함할 수 있다.
버스(522)는 오디오 디바이스(526), 하나 이상의 디스크 드라이브(들)(528), 및 (예를 들어 유선 또는 무선 인터페이스를 통해 컴퓨터 네트워크(503)와 통신하는) 네트워크 인터페이스 디바이스(530)와 통신할 수 있다. 도시된 바와 같이, 네트워크 인터페이스 디바이스(530)는, (예를 들어, IEEE(Institute of Electrical and Electronics Engineers) 802.11 인터페이스(IEEE 802.11a/b/g/n 등을 포함함), 셀룰러 인터페이스, 3G, 5G, LPE 등을 통해) 무선으로 네트워크(503)와 통신하기 위해 안테나(531)에 연결될 수 있다. 다른 디바이스들은 버스(522)를 통해 통신할 수 있다. 또한, (네트워크 인터페이스 디바이스(530)와 같은) 다양한 컴포넌트들은 일부 실시예들에서 GMCH(508)와 통신할 수 있다. 또한, 프로세서(502) 및 GMCH(508)는 단일 칩을 형성하기 위해 결합될 수 있다. 또한, 그래픽 가속기(516)는 다른 실시예들에서 GMCH(508) 내에 포함될 수 있다.
또한, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 이하의, 리드 온리 메모리(ROM), 프로그래머블 ROM(PROM), 소거가능 PROM(EPROM), 전기적 EPROM(EEPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, 컴팩트 디스크 ROM(CD-ROM), 디지털 다기능 디스크(DVD), 플래시 메모리, 광자기 디스크, 또는 (예를 들어, 명령어들을 포함하는) 전자 데이터를 저장할 수 있는 다른 유형의 비휘발성 머신 판독가능한 미디어 중 하나 이상을 포함할 수 있다.
도 6은 실시예에 따른 점대점(PtP) 구성으로 배열되는 컴퓨팅 시스템(600)을 도시한다. 특히, 도 6은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 점대점 인터페이스들에 의해 상호접속되는 시스템을 도시한다. 도 1 내지 도 5를 참조하여 설명된 동작들은 시스템(600)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 다수의 프로세서를 포함할 수 있으며, 명확성을 위해 두 개의 프로세서들(602 및 604)만이 도시된다. 프로세서들(602 및 604)은 메모리들(610 및 612)과 통신 가능하게 하도록 로컬 메모리 제어기 허브(local memory controller hub)(MCH)(606 및 608)를 각각 포함할 수 있다. 메모리들(610 및/또는 612)은 도 1 및/또는 도 5의 메모리(114) 또는 NVM(152)을 참조하여 설명된 바와 같은 다양한 데이터를 저장할 수 있다. 또한, MCH(606 및 608)는 일부 실시예들에서 도 1의 메모리 제어기(120) 및/또는 로직(150)을 포함할 수 있다.
실시예에서, 프로세서들(602 및 604)은 도 5를 참조하여 설명된 프로세서들(502) 중의 하나일 수 있다. 프로세서들(602 및 604)은 각각 PtP 인터페이스 회로들(616 및 618)을 사용하여 점대점(PtP) 인터페이스(614)를 통해 데이터를 교환할 수 있다. 또한, 프로세서들(602 및 604)은 각각 점대점 인터페이스 회로들(626, 628, 630, 및 632)을 이용하여 개별 PtP 인터페이스들(622 및 624)을 통해 칩셋(620)과 데이터를 교환할 수 있다. 또한, 칩셋(620)은 예를 들어, PtP 인터페이스 회로(637)를 사용하여, 고성능 그래픽 인터페이스(636)를 통해 고성능 그래픽 회로(634)와 데이터를 교환할 수 있다. 도 5를 참조하여 설명된 바와 같이, 그래픽 인터페이스(636)는 일부 실시예들에서 디스플레이 디바이스(예를 들어, 디스플레이(517))에 연결될 수 있다.
도 6에 도시된 바와 같이, 도 1의 하나 이상의 코어들(106) 및/또는 캐시(108)는 프로세서들(602 및 604) 내에 위치할 수 있다. 그러나, 도 6의 시스템(600) 내의 다른 회로들, 로직 유닛들, 또는 디바이스들에 다른 실시예들이 존재할 수 있다. 또한, 다른 실시예들은 도 6에 도시된 다수의 회로, 로직 유닛들 또는 디바이스들 전체에 걸쳐 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 사용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스 브리지(642) 및 I/O 디바이스들(643)과 같은, 그것과 통신하는 하나 이상의 디바이스들을 가질 수 있다. 버스(644)를 통해, 버스 브리지(642)는 다른 디바이스들, 예컨대 키보드/마우스(645), 통신 디바이스들(646)(예컨대, 모뎀들, 네트워크 인터페이스 디바이스들, 또는 예를 들어 안테나(531)를 통하는 것을 포함하여, 네트워크 인터페이스 디바이스(530)를 참조하여 설명된 바와 같이, 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 디바이스들), 오디오 I/O 디바이스, 및/또는 데이터 스토리지 디바이스(648)와 통신할 수 있다. 데이터 스토리지 디바이스(648)는 프로세서들(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
일부 실시예에서, 본 명세서에서 설명된 컴포넌트들 중 하나 이상이 SOC(System On Chip) 디바이스 상에 구현될 수 있다. 도 7은 실시예에 따른 SOC 패키지의 블록도를 도시한다. 도 7에 도시된 바와 같이, SOC(702)는 하나 이상의 중앙 처리 유닛(CPU) 코어(720), 하나 이상의 그래픽 프로세서 유닛(GPU) 코어(730), 입력/출력(I/O) 인터페이스(740) 및 메모리 제어기(742)를 포함한다. SOC 패키지(702)의 다양한 컴포넌트들은 다른 도면들을 참조하여 본 명세서에서 설명된 것과 같이 상호접속 또는 버스에 연결될 수 있다. 또한, SOC 패키지(702)는 더 많거나 더 적은 컴포넌트들, 예컨대 다른 도면들을 참조하여 본 명세서에서 설명된 것들을 포함할 수 있다. 또한, SOC 패키지(720)의 각각의 컴포넌트는, 예를 들어 본 명세서에서 다른 도면들을 참조하여 설명된 바와 같이 하나 이상의 다른 컴포넌트를 포함할 수 있다. 일 실시예에서, SOC 패키지(702)(및 그것의 컴포넌트들)는, 예를 들어 단일의 반도체 디바이스 상에 패키징되는 하나 이상의 집적 회로(IC) 다이 상에 제공된다.
도 7에 도시된 바와 같이, SOC 패키지(702)는 메모리 제어기(742)를 통해 메모리(760)(다른 도면들을 참조하여 본 명세서에서 설명된 메모리와 유사하거나 동일할 수 있음)에 연결된다. 실시예에서, 메모리(760)(또는 그것의 일부)는 SOC 패키지(702) 상에 집적될 수 있다.
I/O 인터페이스(740)는, 예를 들어 다른 도면들을 참조하여 본 명세서에서 설명된 것과 같은 상호접속 및/또는 버스를 통해, 하나 이상의 I/O 디바이스(770)에 연결될 수 있다. I/O 디바이스(들)(770)는 키보드, 마우스, 터치패드, 디스플레이, 이미지/비디오 캡처 디바이스(예컨대, 카메라 또는 캠코더/비디오 레코더), 터치 스크린, 스피커 등 중의 하나 이상을 포함할 수 있다. 또한, SOC 패키지(702)는 실시예에서 로직(150)을 포함/집적할 수 있다. 대안적으로, 로직(150)은 SOC 패키지(702)의 외부에(즉, 이산 로직으로서) 제공될 수 있다.
이하의 예들은 추가의 실시예들에 관련된다. 예 1은, 비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 저장하는 스토리지 디바이스, 및 비휘발성 메모리에 연결되어 각각의 후속 부팅 이벤트에 응답하여 저장된 부팅 버전 번호가 업데이트되게 하는 메모리 제어기 로직을 포함하고, 메모리 제어기 로직은 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로를 반환하는 것인 장치를 포함한다. 예 2는, 메모리 제어기 로직은 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로를 반환하는 것인, 예 1의 장치를 포함한다. 예 3은, 메모리 제어기 로직은 비휘발성 메모리의 일부로의 기입 동작에 응답하여 부팅 버전 번호가 업데이트되게 하는 것인, 예 1의 장치를 포함한다. 예 4는, 현재 부팅 버전 번호는 인 프로세스(in-process) 부팅 이벤트에 대응하는, 예 1의 장치를 포함한다. 예 5는, 메모리 제어기 로직은 부팅 버전 번호를 증가시킴으로써 부팅 버전 번호가 업데이트되게 하는 것인, 예 1의 장치를 포함한다. 예 6은, 참조 어드레스 카운터에 기초하여 비휘발성 메모리의 각각의 라인을 연속적으로 스크럽하는 리프레시 엔진 로직을 포함하고, 참조 어드레스 카운터는 스크럽될 비휘발성 메모리의 라인을 가리키는 것인, 예 1의 장치를 포함한다. 예 7은, 참조 어드레스 카운터는, 비휘발성 메모리의 대응하는 라인의 스크럽하는 것에 응답하여 업데이트되는 것인, 예 6의 장치를 포함한다. 예 8은, 리프레시 엔진 로직은 미리 결정된 구간에 기초하여 리프레시 사이클을 수행하는 것인, 예 6의 장치를 포함한다. 예 9는, 리프레시 엔진 로직은 리프레시 버전 번호에 기초하여 리프레시 사이클을 수행하는 것인, 예 6의 장치를 포함한다. 예 10은, 메모리 제어기 로직은 현재 버전 리프레시 상태 테이블에 저장된 데이터에 기초한 리프레시 사이클의 완료 이전에 저장된 부팅 버전 번호를 이용하는 것을 억제하는 것인, 예 1의 장치를 포함한다. 예 11은, 비휘발성 메모리의 일부는 메타데이터를 저장하기 위한 것이고, 메타데이터는 비휘발성 메모리의 일부의 서브 부분(sub-portion)당 제로 비트 및 저장된 버전 번호를 포함하는 것인, 예 1의 장치를 포함한다. 예 12는, 비휘발성 메모리의 일부는 메모리 라인을 포함하는 것이고, 서브 부분은 서브 라인을 포함하는 것인, 예 11의 장치를 포함한다. 예 13은, 메모리 라인은 4개의 서브 라인을 포함하는 것인, 예 12의 장치를 포함한다. 예 14는, 비휘발성 메모리는 3차원 크로스 포인트 메모리를 포함하는 것인, 예 1의 장치를 포함한다. 예 15는, 비휘발성 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 포함하는 것인, 예 14의 장치를 포함한다. 예 16은, 비휘발성 메모리는 스토리지 디바이스를 포함하는 것인, 예 1의 장치를 포함한다. 예 17은, 하나 이상의 프로세서 코어는 메모리 제어기 로직에 연결되어 비휘발성 메모리에 저장되는 데이터에 액세스하는, 예 1의 장치를 포함한다. 예 18은, 메모리 제어기 로직, 하나 이상의 프로세서 코어, 스토리지 디바이스 및 비휘발성 메모리 중 하나 이상은 동일한 집적 회로 다이 상에 있는, 예 1의 장치를 포함한다. 예 19는, 비휘발성 메모리의 일부는 256 바이트를 포함하는 것인, 예 1의 장치를 포함한다.
예 20은, 비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 스토리지 디바이스에 저장하는 단계, 및 각각의 후속 부팅 이벤트에 응답하여 저장된 부팅 버전 번호가 업데이트되게 하는 단계를 포함하고, 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로가 반환되는 방법을 포함한다. 예 21은, 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로가 반환되는, 예 20의 방법을 포함한다. 예 22는, 비휘발성 메모리의 일부로의 기입 동작에 응답하여 부팅 버전 번호가 업데이트되게 하는 단계를 더 포함하는, 예 20의 방법을 포함한다.
예 23은, 프로세서 상에서 실행될 때, 프로세서로 하여금 비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 스토리지 디바이스에 저장하고, 각각의 후속 부팅 이벤트에 응답하여 저장된 부팅 버전 번호가 업데이트되게 하는 하나 이상의 동작을 수행하게 하는 하나 이상의 명령어를 포함하고, 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로가 반환되는, 컴퓨터 판독가능한 매체를 포함한다. 예 24는, 프로세서 상에서 실행될 때, 프로세서로 하여금 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로를 반환하는 하나 이상의 동작을 수행하게 하는 하나 이상의 명령어를 더 포함하는, 예 23의 컴퓨터 판독가능한 매체를 포함한다. 예 25는, 프로세서 상에서 실행될 때, 프로세서로 하여금 비휘발성 메모리의 일부로의 기입 동작에 응답하여 부팅 버전 번호가 업데이트되게 하는 하나 이상의 동작을 수행하게 하는 하나 이상의 명령어를 더 포함하는, 예 23의 컴퓨터 판독가능한 매체를 포함한다.
예 26은, 프로세서, 프로세서에 연결되어 비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 저장하는 스토리지 디바이스, 및 비휘발성 메모리에 연결되어 각각의 후속 부팅 이벤트에 응답하여 저장된 부팅 버전 번호가 업데이트되게 하는 메모리 제어기 로직을 포함하고, 메모리 제어기 로직은 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로를 반환하는 것인 시스템을 포함한다. 예 27은, 메모리 제어기 로직은 비휘발성 메모리의 일부에 지시된 판독 동작 및 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로를 반환하는 것인, 예 26의 시스템을 포함한다. 예 28은, 메모리 제어기 로직은 비휘발성 메모리의 일부로의 기입 동작에 응답하여 부팅 버전 번호가 업데이트되게 하는 것인, 예 26의 시스템을 포함한다. 예 29는, 현재 부팅 버전 번호는 인 프로세스(in-process) 부팅 이벤트에 대응하는, 예 26의 시스템을 포함한다. 예 30은, 메모리 제어기 로직은 부팅 버전 번호를 증가시킴으로써 부팅 버전 번호가 업데이트되게 하는 것인, 예 26의 시스템을 포함한다. 예 31은, 참조 어드레스 카운터에 기초하여 비휘발성 메모리의 각각의 라인을 연속적으로 스크럽하는 리프레시 엔진 로직을 포함하고, 참조 어드레스 카운터는 스크럽될 비휘발성 메모리의 라인을 가리키는 것인, 예 26의 시스템을 포함한다. 예 32는, 참조 어드레스 카운터는, 비휘발성 메모리의 대응하는 라인의 스크럽하는 것에 응답하여 업데이트되는 것인, 예 31의 시스템을 포함한다. 예 33은, 리프레시 엔진 로직은 미리 결정된 구간에 기초하여 리프레시 사이클을 수행하는 것인, 예 31의 시스템을 포함한다. 예 34는, 리프레시 엔진 로직은 리프레시 버전 번호에 기초하여 리프레시 사이클을 수행하는 것인, 예 31의 시스템을 포함한다. 예 35는, 메모리 제어기 로직은 현재 버전 리프레시 상태 테이블에 저장된 데이터에 기초한 리프레시 사이클의 완료 이전에 저장된 부팅 버전 번호를 이용하는 것을 억제하는 것인, 예 26의 시스템을 포함한다. 예 36은, 비휘발성 메모리의 일부는 메타데이터를 저장하기 위한 것이고, 메타데이터는 비휘발성 메모리의 일부의 서브 부분(sub-portion)당 제로 비트 및 저장된 버전 번호를 포함하는 것인, 예 26의 시스템을 포함한다. 예 37은, 비휘발성 메모리의 일부는 메모리 라인을 포함하는 것이고, 서브 부분은 서브 라인을 포함하는 것인, 예 36의 시스템을 포함한다. 예 38은, 메모리 라인은 4개의 서브 라인을 포함하는 것인, 예 37의 시스템을 포함한다. 예 39는, 비휘발성 메모리는 플래시 메모리를 포함하는 것인, 예 26의 시스템을 포함한다. 예 40은, 플래시 메모리는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 포함하는 것인, 예 39의 시스템을 포함한다. 예 41은, 비휘발성 메모리는 스토리지 디바이스를 포함하는 것인, 예 26의 시스템을 포함한다. 예 42는, 하나 이상의 프로세서 코어는 메모리 제어기 로직에 연결되어 비휘발성 메모리에 저장되는 데이터에 액세스하는, 예 26의 시스템을 포함한다. 예 43은, 메모리 제어기 로직, 프로세서의 하나 이상의 프로세서 코어, 스토리지 디바이스 및 비휘발성 메모리 중 하나 이상은 동일한 집적 회로 다이 상에 있는, 예 26의 시스템을 포함한다. 예 44는, 비휘발성 메모리의 일부는 256 바이트를 포함하는 것인, 예 26의 시스템을 포함한다.
예 45는, 임의의 상기 예에 기재된 방법을 수행하는 수단을 포함하는 장치를 포함한다.
예 46은, 실행될 때, 임의의 상기 예에 기재된 장치를 실현하거나 방법을 구현하기 위한 머신 판독가능한 명령어들을 포함하는 머신 판독가능한 스토리지를 포함한다.
본 발명의 다양한 실시예들에서, 예를 들어 도 1 내지 도 7을 참조하여 본 명세서에서 설명된 동작들은, 예를 들어 본 명세서에서 설명된 프로세스를 수행하도록 컴퓨터를 프로그래밍하는 데 이용되는 명령어들(또는 소프트웨어 절차들)이 저장되어 있는 유형의(tangible)(예를 들어, 비일시적인) 머신 판독가능한 또는 컴퓨터 판독가능한 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있는 하드웨어(예를 들어, 회로), 소프트웨어, 펌웨어, 마이크로코드 또는 이들의 조합으로서 구현될 수 있다. 또한, 용어 "로직"은 예로서, 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어의 조합을 포함할 수 있다. 머신 판독가능한 매체는 도 1 내지 도 7과 관련하여 설명된 것들과 같은 스토리지 디바이스를 포함할 수 있다.
부가적으로, 이러한 유형의 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품으로서 다운로드될 수 있는데, 여기서 프로그램은 통신 링크(예를 들어, 버스, 모뎀 또는 네트워크 접속)를 통하여 (반송파 또는 다른 전파 매체에서와 같은) 데이터 신호들에 의해 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 전송될 수 있다.
상세한 설명에서 "일 실시예" 또는 "실시예"의 참조는 실시예와 관련하여 기술된 특정한 특징, 구조 또는 특성이 적어도 구현방식에 포함될 수 있음을 의미한다. 본 명세서의 여러 곳에서 나오는 "일 실시예에서"라는 문구의 표현들이 모두가 동일한 실시예를 말하는 것이거나 그렇지 않을 수 있다.
또한, 상세한 설명 및 특허청구범위에서, "연결" 및 "접속"이라는 용어가, 그의 파생어와 함께, 사용될 수 있다. 일부 실시예에서, "접속"은 2개 이상의 구성요소가 서로 직접적으로 물리적 또는 전기적으로 접촉해 있는 것을 나타내기 위해 사용될 수 있다. "연결"은 2개 이상의 구성요소가 직접적으로 물리적 또는 전기적으로 접촉해 있는 것을 의미할 수 있다. 그러나, "연결"은 또한 2개 이상의 구성요소가 서로 직접적으로 접촉하고 있지 않을 수 있지만 여전히 서로 협력하거나 상호작용할 수 있는 것을 의미할 수 있다.
따라서, 실시예들은 구조적 특징들 및/또는 방법론적 동작들에 대한 특정 언어로 설명되었지만, 청구 대상은 설명된 특정 특징들 또는 동작들에 제한되지는 않을 수 있다는 것이 이해되어야 한다. 오히려, 특정의 특징 및 동작은 청구된 발명 대상을 구현하는 샘플 형태로서 개시되어 있다.

Claims (23)

  1. 장치로서,
    비휘발성 메모리의 일부에 대응하는 부팅 버전 번호(boot version number)를 저장하는 스토리지 디바이스, 및
    상기 비휘발성 메모리에 연결되어, 각각의 후속 부팅 이벤트에 응답하여 상기 저장된 부팅 버전 번호가 업데이트되게 하는 메모리 제어기 로직
    을 포함하고,
    상기 메모리 제어기 로직은 상기 비휘발성 메모리의 일부에 지시된(directed) 판독 동작 및 상기 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로를 반환하는, 장치.
  2. 제1항에 있어서,
    상기 메모리 제어기 로직은 상기 비휘발성 메모리의 일부에 지시된 판독 동작 및 상기 저장된 부팅 버전 번호와 상기 현재 부팅 버전 번호 사이의 불일치에 응답하여 상기 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로를 반환하는, 장치.
  3. 제1항에 있어서,
    상기 메모리 제어기 로직은 상기 비휘발성 메모리의 일부로의 기입 동작에 응답하여 상기 부팅 버전 번호가 업데이트되게 하는, 장치.
  4. 제1항에 있어서,
    상기 현재 부팅 버전 번호는 인 프로세스(in-process) 부팅 이벤트에 대응하는, 장치.
  5. 제1항에 있어서,
    상기 메모리 제어기 로직은 상기 부팅 버전 번호를 증가시킴으로써 상기 부팅 버전 번호가 업데이트되게 하는, 장치.
  6. 제1항에 있어서,
    참조 어드레스 카운터(reference address counter)에 기초하여 상기 비휘발성 메모리의 각각의 라인을 연속적으로 스크럽(scrub)하는 리프레시 엔진 로직
    을 포함하고,
    상기 참조 어드레스 카운터는 스크럽될 상기 비휘발성 메모리의 라인을 가리키는, 장치.
  7. 제6항에 있어서,
    상기 참조 어드레스 카운터는 상기 비휘발성 메모리의 대응하는 라인의 스크럽에 응답하여 업데이트되는, 장치.
  8. 제6항에 있어서,
    상기 리프레시 엔진 로직은 미리 결정된 구간에 기초하여 리프레시 사이클을 수행하는, 장치.
  9. 제6항에 있어서,
    상기 리프레시 엔진 로직은 리프레시 버전 번호에 기초하여 리프레시 사이클을 수행하는, 장치.
  10. 제1항에 있어서,
    상기 메모리 제어기 로직은 현재 버전 리프레시 상태 테이블(current version refresh state table)에 저장된 데이터에 기초한 리프레시 사이클의 완료 이전에 상기 저장된 부팅 버전 번호를 이용하는 것을 억제(refrain)하는, 장치.
  11. 제1항에 있어서,
    상기 비휘발성 메모리의 일부는 메타데이터를 저장하고, 상기 메타데이터는 상기 비휘발성 메모리의 일부의 서브 부분(sub-portion)당 제로 비트 및 저장된 버전 번호를 포함하는, 장치.
  12. 제11항에 있어서,
    상기 비휘발성 메모리의 일부는 메모리 라인을 포함하고, 상기 서브 부분은 서브 라인을 포함하는, 장치.
  13. 제12항에 있어서,
    상기 메모리 라인은 4개의 서브 라인을 포함하는, 장치.
  14. 제1항에 있어서,
    상기 비휘발성 메모리는 3차원 크로스 포인트 메모리를 포함하는, 장치.
  15. 제1항에 있어서,
    상기 비휘발성 메모리는 상기 스토리지 디바이스를 포함하는, 장치.
  16. 제1항에 있어서,
    하나 이상의 프로세서 코어는 상기 메모리 제어기 로직에 연결되어 상기 비휘발성 메모리에 저장되는 데이터에 액세스하는, 장치.
  17. 제1항에 있어서,
    상기 메모리 제어기 로직, 하나 이상의 프로세서 코어, 상기 스토리지 디바이스 및 상기 비휘발성 메모리 중 하나 이상은 동일한 집적 회로 다이 상에 있는, 장치.
  18. 제1항에 있어서,
    상기 비휘발성 메모리의 일부는 256 바이트를 포함하는, 장치.
  19. 방법으로서,
    비휘발성 메모리의 일부에 대응하는 부팅 버전 번호를 스토리지 디바이스에 저장하는 단계, 및
    각각의 후속 부팅 이벤트에 응답하여 상기 저장된 부팅 버전 번호가 업데이트되게 하는 단계
    를 포함하고,
    상기 비휘발성 메모리의 일부에 지시된 판독 동작 및 상기 저장된 부팅 버전 번호와 현재 부팅 버전 번호 사이의 불일치에 응답하여 제로가 반환되는, 방법.
  20. 제19항에 있어서,
    상기 비휘발성 메모리의 일부에 지시된 판독 동작 및 상기 저장된 부팅 버전 번호와 상기 현재 부팅 버전 번호 사이의 불일치에 응답하여 상기 비휘발성 메모리의 일부에 액세스하는 것을 수행하지 않고 제로가 반환되는, 방법.
  21. 제19항에 있어서,
    상기 비휘발성 메모리의 일부로의 기입 동작에 응답하여 상기 부팅 버전 번호가 업데이트되게 하는 단계를 더 포함하는, 방법.
  22. 하나 이상의 명령어들을 포함하는 컴퓨터 판독가능한 매체로서, 상기 명령어들은 프로세서 상에서 실행될 때, 상기 프로세서로 하여금 제19항 내지 제21항 중 어느 한 항의 하나 이상의 동작을 수행하게 하는, 컴퓨터 판독가능한 매체.
  23. 제19항 내지 제21항 중 어느 한 항에 기재된 방법을 수행하는 수단을 포함하는, 장치.
KR1020167033076A 2014-06-27 2015-06-01 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화 KR101862112B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/318,573 2014-06-27
US14/318,573 US9477409B2 (en) 2014-06-27 2014-06-27 Accelerating boot time zeroing of memory based on non-volatile memory (NVM) technology
PCT/US2015/033524 WO2015199909A1 (en) 2014-06-27 2015-06-01 Accelerating boot time zeroing of memory based on non-volatile memory (nvm) technology

Publications (2)

Publication Number Publication Date
KR20160146991A true KR20160146991A (ko) 2016-12-21
KR101862112B1 KR101862112B1 (ko) 2018-05-31

Family

ID=54930488

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033076A KR101862112B1 (ko) 2014-06-27 2015-06-01 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화

Country Status (5)

Country Link
US (1) US9477409B2 (ko)
EP (1) EP3161622B1 (ko)
KR (1) KR101862112B1 (ko)
CN (1) CN106462410B (ko)
WO (1) WO2015199909A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220062848A (ko) 2020-11-09 2022-05-17 한국전자통신연구원 사전 할당을 이용한 쓰기 지연시간 단축 방법 및 이를 이용한 장치

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102384344B1 (ko) * 2015-06-03 2022-04-07 삼성전자주식회사 모바일 장치 및 모바일 장치의 동작 방법
US9870171B2 (en) * 2015-06-25 2018-01-16 International Business Machines Corporation Affinity-aware parallel zeroing of memory for initialization of large pages in non-uniform memory access (NUMA) servers
US10120887B1 (en) * 2015-09-28 2018-11-06 EMC IP Holding Company LLC Demand-driven initialization of data storage structures
US10346244B2 (en) 2017-08-10 2019-07-09 Micron Technology, Inc. Shared address counters for multiple modes of operation in a memory device
US10671405B2 (en) * 2017-08-31 2020-06-02 New Relic, Inc. Monitoring for co-located containers in a host system
US10825491B2 (en) * 2017-12-11 2020-11-03 Micron Technology, Inc. Systems and methods for writing zeros to a memory array
CN108572848A (zh) * 2018-06-26 2018-09-25 深圳市未来感知科技有限公司 交互系统的底层固件在线升级方法、装置及存储介质
US10628051B2 (en) 2018-07-13 2020-04-21 Seagate Technology Llc Reducing a data storage device boot time
KR20210136480A (ko) 2020-05-07 2021-11-17 삼성전자주식회사 프로세싱 장치가 실장된 메모리 모듈을 포함하는 컴퓨팅 시스템의 부팅 방법
US20200341776A1 (en) * 2020-07-07 2020-10-29 Krishnaprasad H Apparatus for initializing memory using a hardware engine for minimizing boot time

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195749B1 (en) 2000-02-10 2001-02-27 Advanced Micro Devices, Inc. Computer system including a memory access controller for using non-system memory storage resources during system boot time
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
KR100456736B1 (ko) 2002-07-10 2004-11-10 삼성전자주식회사 플래시 메모리를 구비한 디지털 기기의 부팅 시간 단축 방법
US7500081B2 (en) 2005-09-30 2009-03-03 Intel Corporation Power-up implementation for block-alterable memory with zero-second erase time
WO2013101158A1 (en) 2011-12-30 2013-07-04 Intel Corporation Metadata management and support for phase change memory with switch (pcms)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220062848A (ko) 2020-11-09 2022-05-17 한국전자통신연구원 사전 할당을 이용한 쓰기 지연시간 단축 방법 및 이를 이용한 장치

Also Published As

Publication number Publication date
CN106462410B (zh) 2020-08-11
US9477409B2 (en) 2016-10-25
EP3161622A1 (en) 2017-05-03
EP3161622A4 (en) 2018-01-24
US20150378615A1 (en) 2015-12-31
WO2015199909A1 (en) 2015-12-30
EP3161622B1 (en) 2022-05-25
CN106462410A (zh) 2017-02-22
KR101862112B1 (ko) 2018-05-31

Similar Documents

Publication Publication Date Title
KR101862112B1 (ko) 비휘발성 메모리(nvm) 기술 기반 메모리의 부팅 시간 제로화의 가속화
KR102500661B1 (ko) 다중 레벨 셀 모드 비휘발성 메모리를 위한 비용 최적화된 단일 레벨 셀 모드 비휘발성 메모리
JP6112594B2 (ja) ハイブリッドメモリデバイス、メモリデバイスを含む電子デバイス、および、メモリデバイス用のコントローラ
US10956323B2 (en) NVDIMM emulation using a host memory buffer
US9250999B1 (en) Non-volatile random access memory in computer primary memory
US9471488B2 (en) Techniques for improving reliability and performance of partially written memory blocks in modern flash memory systems
CN107408018B (zh) 用于在固态驱动器中适应垃圾收集资源分配的机制
CN107408019B (zh) 用于提高对非易失性存储器中的缺陷的抗干扰性的方法和装置
EP3836145A1 (en) System approach to reduce stable threshold voltage (vt) read disturb degradation
US20190042415A1 (en) Storage model for a computer system having persistent system memory
US20160378151A1 (en) Rack scale architecture (rsa) and shared memory controller (smc) techniques of fast zeroing
US9588882B2 (en) Non-volatile memory sector rotation
US20160283338A1 (en) Boot operations in memory devices
US9274885B2 (en) Phase change memory with switch (PCMS) write error detection
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US11734184B2 (en) Effective avoidance of line cache misses

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