KR20180102057A - 휘발성 메모리를 비휘발성 메모리로 사용하는 기법 - Google Patents

휘발성 메모리를 비휘발성 메모리로 사용하는 기법 Download PDF

Info

Publication number
KR20180102057A
KR20180102057A KR1020187015412A KR20187015412A KR20180102057A KR 20180102057 A KR20180102057 A KR 20180102057A KR 1020187015412 A KR1020187015412 A KR 1020187015412A KR 20187015412 A KR20187015412 A KR 20187015412A KR 20180102057 A KR20180102057 A KR 20180102057A
Authority
KR
South Korea
Prior art keywords
volatile memory
memory
volatile
computing device
pages
Prior art date
Application number
KR1020187015412A
Other languages
English (en)
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 KR20180102057A publication Critical patent/KR20180102057A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B19/00Programme-controlled sewing machines
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B19/00Programme-controlled sewing machines
    • D05B19/02Sewing machines having electronic memory or microprocessor control unit
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B19/00Programme-controlled sewing machines
    • D05B19/02Sewing machines having electronic memory or microprocessor control unit
    • D05B19/04Sewing machines having electronic memory or microprocessor control unit characterised by memory aspects
    • DTEXTILES; PAPER
    • D05SEWING; EMBROIDERING; TUFTING
    • D05BSEWING
    • D05B19/00Programme-controlled sewing machines
    • D05B19/02Sewing machines having electronic memory or microprocessor control unit
    • D05B19/04Sewing machines having electronic memory or microprocessor control unit characterised by memory aspects
    • D05B19/06Physical exchange of memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0653Monitoring storage devices or 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/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/003Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation in serial memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/006Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation at wafer scale level, i.e. wafer scale integration [WSI]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Textile Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)
  • Memory System (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨팅 장치는 프로세서, 휘발성 메모리 및 비휘발성 저장 장치를 포함할 수 있다. 장치의 운영체제 또는 펌웨어는 컴퓨팅 장치에서 실행되는 애플리케이션에 의해 휘발성 메모리의 하나 이상의 페이지가 비휘발성 메모리 페이지로 취급되게 할 수 있다. 비휘발성으로 취급될 수 있는 최대 수의 페이지는 배터리에서 이용가능한 에너지의 양 및 메모리의 페이지를 비휘발성 저장 장치로 이송하는데 필요한 에너지의 양에 기초하여 결정될 수 있다.

Description

휘발성 메모리를 비휘발성 메모리로 사용하는 기법
본 개시는 일반적으로 컴퓨팅 장치 내의 메모리 모듈의 동작에 관한 것이다. 특히, 본 개시는 컴퓨팅 장치에서 실행되는 애플리케이션에 비휘발성 저장을 제공하도록 휘발성 메모리를 사용하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품에 관한 것이다.
컴퓨팅 장치의 메인 메모리는 일반적으로 동적 랜덤 액세스("DRAM") 메모리 모듈을 기반으로 한다. DRAM은 저비용 및 높은 저장 밀도와 같은, 메인 메모리로서 사용하기에 적합한 다양한 특성을 갖는다. 그러나, DRAM 메모리 모듈은 일반적으로 데이터 손실을 막기 위해 지속적이거나 거의 연속적인 전원 공급을 필요로 하는 커패시터 또는 기타 회로를 포함한다. 따라서, DRAM 메모리는 전원 공급이 중단될 경우 DRAM 메모리에 저장된 데이터가 손실되기 때문에 휘발성 메모리로 지칭된다.
네거티브 AND 게이트("NAND") 메모리와 같은 다른 유형의 메모리는 모듈의 전원 공급이 중단되더라도 NAND 메모리 모듈의 콘텐츠가 손실되지 않으므로 비휘발성 메모리로 지칭될 수 있다. 그러나, NAND 메모리 모듈이 DRAM 메모리 모듈에 비해 비용이 높고 저장 밀도가 낮다고 하는 등 여러 가지 이유로, 컴퓨터의 메인 메모리는 일반적으로 NAND 메모리 모듈로 구성되지 않는다.
컴퓨팅 장치는 휘발성 메모리 및 비휘발성 저장 장치를 포함할 수 있다. 컴퓨팅 장치가 유틸리티 전원(utility power)으로 작동하는 동안, 컴퓨팅 장치는 유틸리티 전원이 중단되었을 경우 컴퓨팅 장치에 얼마나 많은 에너지가 이용가능한지를 나타내는 정보를 수신할 수 있다. 또한, 컴퓨팅 장치는 휘발성 메모리의 페이지를 비휘발성 저장 장치로 이송하는데 얼마나 많은 에너지가 필요한지를 결정할 수 있고, 이 정보를 사용하여, 배터리에서 이용가능한 에너지를 사용하여 보존할 수 있는 메모리 페이지의 수를 결정할 수 있다. 이 정보에 적어도 부분적으로 기초하여, 컴퓨팅 장치의 운영체제 또는 펌웨어는, 컴퓨팅 장치에서 실행되는 애플리케이션이 휘발성 메모리의 페이지가 마치 비휘발성인 것처럼 그 페이지에 정보를 저장할 수 있도록, 휘발성 메모리의 다수의 페이지를 비휘발성으로 식별할 수 있다.
본 요약은 아래의 상세한 설명에서 더 자세히 설명되는 선택된 개념을 단순한 형태로 소개하기 위해 제공된다. 본 요약은 청구대상의 주요 특징이나 필수적인 특징을 식별하기 위한 것이 아니며 청구대상의 범위를 제한하는 데 사용되지도 않는다.
이하, 첨부된 도면을 참조하여 본 개시의 실시예가 상세히 설명될 것이다.
도 1은 운영체제에 의해 비휘발성 메모리로서 식별된 휘발성 메모리를 갖는 예시적인 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 이용가능한 배터리 전원에 기초하여 비휘발성으로 식별된 페이지의 수를 조정하는 것을 도시하는 블록도이다.
도 3은 휘발성 메모리를 휘발성 또는 비휘발성 메모리로서 식별하는 컴퓨팅 장치의 일례를 나타내는 블록도이다.
도 4는 다수의 컴퓨팅 장치에 의해 공유되는 배터리를 나타낸다.
도 5는 비휘발성 메모리로서 식별된 휘발성 메모리를 갖는 컴퓨팅 장치를 동작시키기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 6은 애플리케이션 성능 파라미터에 기초하여 비휘발성 메모리 식별을 조정하는 프로세스의 예를 나타내는 흐름도이다.
도 7은 휘발성 메모리의 콘텐츠를 보존하는 예를 제공하는 블록도이다.
도 8은 비휘발성으로 식별된 휘발성 메모리의 콘텐츠를 보존하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 9는 메모리 보존 동안 프로세서 코어로의 전력 전달을 제어하는 예를 도시하는 흐름도이다.
도 10은 비휘발성으로 식별된 휘발성 메모리 모듈을 갖는 컴퓨팅 장치를 동작시키는 예를 도시하는 흐름도이다.
도 11은 본 명세서에 설명된 기술이 구현될 수 있는 예시적인 범용 컴퓨팅 환경을 도시한다.
컴퓨팅 장치는 프로세서, 휘발성 메모리 모듈을 포함하는 메인 메모리, 및 비휘발성 저장 장치를 포함할 수 있다. 휘발성 메모리 모듈은 전력 손실시 콘텐츠가 손실되는 메모리일 수 있다. 휘발성 메모리 모듈은, 일부 경우, 메모리에 저장된 콘텐츠의 유지에 대한 내구성이 비휘발성 메모리에 비해 상대적으로 낮은 메모리 모듈일 수 있다.
컴퓨팅 장치로의 전력은 유틸리티 전원과 배터리 전원의 소정의 조합에 의해 제공될 수 있다. 유틸리티 전원은 전력망을 통해 공급되는 주 전원(mains power)과 같은 전원을 지칭할 수 있다. 유틸리티 전원은 대개 지속가능한 것으로 또는 일반적으로 사용가능한 것으로 여겨지는 그 밖의 다른 전원, 예를 들어, 국지적으로 생성된 태양 전력, 풍력 전력 또는 화력 전력을 지칭할 수도 있다. 유틸리티 전원은 때로는, 에너지 잉여가 있을 때 에너지를 저장하고 에너지 부족이 있을 때는 에너지를 공급하기 위해 태양 또는 풍력 전력 시스템에 사용되는 배터리와 같은 배터리 컴포넌트를 포함할 수 있다. 보다 일반적으로, 유틸리티 전원은 컴퓨팅 장치의 동작 기간 동안 통상적으로 이용가능한 임의의 전원을 지칭할 수 있다.
배터리 전원은 배터리 셀, 커패시터 또는 기타 에너지 저장 메커니즘을 포함하는 장치와 같은 백업 에너지원을 지칭할 수 있다. 유틸리티 전원을 사용할 수 있는 경우, 배터리가 충전되어 컴퓨팅 장치에 사용할 수 있는 전력량이 증가할 수 있다. 유틸리티 전원을 사용할 수 없는 경우, 컴퓨팅 장치는 배터리 전원으로 작동할 수 있으며 배터리에서 사용할 수 있는 전력량은 줄어들 수 있다. 온도, 배터리의 연령, 및 다른 장치에 의한 배터리 전력의 소비와 같은 다른 요소도 사용 가능한 전력량에 영향을 줄 수 있다.
장치의 운영체제 또는 펌웨어는 휘발성 메모리가 마치 비휘발성인 것처럼 휘발성 메모리를 애플리케이션에 나타낼 수 있다. 비휘발성으로 표시되거나 식별될 수 있는 휘발성 메모리의 양은 두 가지 요소에 기초하여 결정될 수 있다. 첫 번째 요소는 유틸리티 전원이 정지된 경우 컴퓨팅 장치가 사용할 수 있는 에너지의 양일 수 있다. 두 번째 요소는 휘발성 메모리의 페이지를 비휘발성 저장 장치로 이송하는 데 필요한 전력량의 추정치일 수 있다. 이들 요소에 따라, 운영체제 또는 펌웨어는 유틸리티 전원이 중단되면 저장 장치에 보존할 수 있는 메모리의 페이지 수의 추정치를 결정할 수 있다. 이들 페이지는 운영체제 또는 펌웨어에 의해 비휘발성으로 식별될 수 있다.
유틸리티 전원이 중단되면, 컴퓨팅 장치는 비휘발성으로 식별된 휘발성 메모리의 콘텐츠가 보존되는 메모리 보존 단계(memory preservation phase)에 진입할 수 있다. 이 단계 동안, 컴퓨팅 장치의 컴포넌트에 대한 전력 공급은 메모리 보존을 위해 필요한 컴포넌트들로 제한될 수 있다. 이렇게 하면 더 많은 양의 휘발성 메모리가 비휘발성 메모리로 식별될 수 있다. 또한, 메모리 보존 동안의 전력 상태는 에너지 소비 및 가용성에 대한 예측이 보다 신뢰성 있도록 존재할 수 있다.
도 1은 운영체제에 의해 비휘발성 메모리로 식별된 휘발성 메모리를 갖는 예시적인 컴퓨팅 시스템을 나타내는 블록도이다. 컴퓨팅 장치(100)는 운영체제(102) 및 펌웨어(104)의 명령어를 저장하는 메모리, 프로세서(106), DRAM 메모리 모듈(114), 및 비휘발성 저장 장치(120)를 포함할 수 있다.
컴퓨팅 장치(100)는 통상적으로 유틸리티 전원(122)으로 작동할 수 있다. 때로는, 예를 들어, 유틸리티 전원(122)이 중단되는 경우, 컴퓨팅 장치(100)는 배터리 전원(124)으로 동작할 수 있다. 유틸리티 전원(122)과 관련된 정전 또는 기타 오류 동안, 컴퓨팅 장치는 자신의 전원을 유틸리티 전원(122)으로부터 배터리 전원(124)으로 전환 또는 이동시킬 수 있다. 일부 예에서, 배터리 전원(124)은 컴퓨팅 장치(100)에 통합될 수 있다. 다른 예에서, 배터리 전원은 컴퓨팅 장치(100)의 외부에 있을 수 있다.
프로세서(106)는 코어(108) 및 언코어(110)를 포함하는 다양한 하위 컴포넌트를 포함할 수 있다. 프로세서(102)의 전력 소비는 코어(108) 및 언코어(110)에 대한 전력이 독립적으로 중지되거나 유지될 수 있도록 제어될 수 있다. 예를 들어, 언코어(110)에 대한 전력이 유지될 수 있는 동안 코어(108)로의 전력 전달은 중단될 수 있다. 전력을 중단하는 것은 영향을 받는 컴포넌트로의 에너지의 흐름을 부분적으로 또는 완전히 차단하는 것을 포함할 수 있다. 전력을 중단하는 것은 컴포넌트를 저전력 상태로 두는 것을 지칭할 수도 있다. 일반적으로, 전력 공급이 중단된 컴포넌트는 전력이 중단된 동안에는 작동하지 않지만 전력이 복구되면 작동을 재개할 수 있다. 컴포넌트에 대한 전력을 유지하는 것은 컴포넌트가 자신의 기능들 중 적어도 일부에 대해 동작 상태를 유지할 수 있도록 충분한 전력을 컴포넌트에 전달하는 것을 포함할 수 있다.
코어(108)는 프로세서(106)의 프로세싱 유닛을 포함할 수 있다. 전형적으로, 프로세서(106)는 다수의 코어를 포함할 수 있지만, 간단히 표현하기 위해, 도 1은 프로세서(106)가 단일 코어(108)를 갖는 것으로 도시한다. 프로세서(106)의 프로세싱 유닛으로서, 코어(108)는 통상적으로 운영체제(102) 및 펌웨어(104)의 컴퓨터 판독가능 명령어와 같은 컴퓨터 판독가능 명령어를 실행하여 컴퓨팅 장치로 하여금 다양한 동작을 수행하게 한다.
언코어(110)는 코어(108)의 것들과 관련있지만 그 안에 포함되지 않는 프로세서(106)의 부분을 포함할 수 있다. 몇몇 경우, 프로세서(106)는 하나의 언코어(110), 및 도시된 코어(108)와 같은 복수의 코어를 포함할 수 있다. 일반적으로, 언코어(110)는 L3 캐시 유지 보수와 관련된 기능을 수행할 수 있고 메모리 제어기(112)를 포함할 수 있다.
메모리 제어기(112)는 DRAM 메모리 모듈(114)에 저장된 데이터에 대한 액세스를 제어할 수 있다. 이것은 직접 메모리 액세스("DMA") 동작을 수행하는 것을 포함할 수 있다. DMA 동작은 메모리의 콘텐츠를 이송하는 것을 포함할 수 있다. 예를 들어, DMA 동작은 DRAM 메모리 모듈(114)의 콘텐츠를 비휘발성 저장 장치(120)로 이송하는 것을 포함할 수 있다. DMA 동작은 코어(108)가 운영체제(102) 또는 펌웨어(104)의 명령어를 실행함으로써 개시될 수 있다. 일단 DMA 동작이 개시되면, 코어(108)는 DMA 동작이 완료되는 동안 다른 동작을 재개하거나 저전력 상태 또는 무 전원 상태에 놓일 수 있다.
인터럽트 신호가 프로세서(106)로 전송될 수 있다. 인터럽트 신호는 컴퓨팅 장치(100), 또는 배터리 전원(124)과 같은 외부 장치의 컴포넌트로부터 제공되는 이벤트에 대한 신호 또는 다른 전송물을 포함할 수 있다. 인터럽트 신호의 예는 네트워크 컴포넌트, 사용자 인터페이스 컴포넌트 등에 의해 생성된 신호를 포함한다. 몇몇 경우에서, 컴퓨팅 장치(100)의 동작 동안 발생할 수 있는 에러 상황 또는 상태 변화에 응답하여 다양한 인터럽트 신호가 생성될 수 있다. 인터럽트 신호는 DMA 동작과 관련하여 생성될 수 있다. 예를 들어, 인터럽트 신호는 DMA 동작의 완료에 응답하여 생성될 수도 있다. DMA 동작에 관련된 인터럽트와 같은 특정 인터럽트는 언코어(110)에 의해 처리될 수 있다.
배터리 전원(124)은 또한 컴퓨팅 장치(100)에 인터럽트 신호 또는 다른 통신물을 제공할 수 있다. 이 통신물은 배터리 전원(124)의 상태 변화를 나타낼 수 있다. 상태 정보는 예를 들어, 배터리 전원(124)이 현재 유틸리티 전원(122)으로부터 충전되고 있는지 여부 및 얼마나 많은 배터리 전원이 컴퓨팅 장치(100)에 이용가능한지를 나타내는 정보를 포함할 수 있다. 일부 예에서, 배터리 전원(124)은 다수의 장치에 전력을 공급할 수 있고, 따라서, 컴퓨팅 장치(100)에 이용가능한 전력의 양은 배터리에 저장된 총 전력량보다 적을 수 있다.
DRAM 메모리 모듈(114)은 때때로 페이지로 지칭되는 메모리의 유닛들로 세분화될 수 있다. 메모리의 페이지는 메모리 속도 및 휘발성과 같은 특정 특성과 연관될 수 있다. 예를 들어, DRAM 메모리 모듈(114)은 휘발성 RAM일 수 있어서, DRAM 메모리 모듈(114)에 대한 전력이 중단되면, DRAM 메모리 모듈(114)의 콘텐츠는 손실될 것이다. 메모리의 특성은 컴퓨팅 장치(100)에서 실행되는 애플리케이션 프로그램으로 전달될 수 있다. 일부 예에서, 펌웨어(104)는 부팅시 DRAM 메모리 모듈(114)의 특성을 결정하고 이 정보를 운영체제(102)에 전달할 수 있다. 그 다음, 운영체제(102)는 이들 특성을 애플리케이션 프로그램에 전달할 수 있다.
본 명세서에서 사용되는 메모리의 페이지는 메모리 모듈 내의 메모리의 일부를 지칭할 수 있다. 일부 예에서, 때때로 메모리의 영역 또는 메모리의 부분으로 지칭되는 메모리의 페이지는 메모리 장치의 특성에 따라 그룹화되거나 논리적으로 분할될 수 있다. 예를 들어, 메모리의 페이지, 영역 또는 부분은 단일 동작으로 판독되거나 기록될 수 있는 콘텐츠를 갖는 메모리에 대응할 수 있다. 다른 예에서, 메모리의 페이지, 영역 또는 부분은 캐시 라인을 공유할 수 있다. 다른 예에서, 메모리의 페이지, 영역 또는 부분의 경계는 메모리 제어기, 펌웨어 또는 운영체제에 의해 논리적으로 분할될 수 있다.
언급한 바와 같이, DRAM 메모리 모듈(114)은 휘발성 RAM일 수 있다. 그러나, 펌웨어(104) 및/또는 운영체제(102)는 휘발성 DRAM 메모리 모듈(114)의 페이지를 비휘발성 메모리로 식별할 수 있다. 이러한 식별은 메모리의 특성에 관한 정보를 메모리의 사용자에게 전달하는 것을 포함할 수 있다. 예를 들어, 펌웨어(104)는 DRAM 메모리 모듈(114)의 특정 페이지가 비휘발성 메모리 페이지임을 운영체제(102)에 보고할 수 있다. 이는 예를 들어, 고급 구성 및 전원 인터페이스("ACPI")에 의해 정의된 시스템 설명 테이블과 같은 시스템 설명 테이블을 업데이트하는 것을 포함할 수 있다. 운영체제(102)는 이 정보를 컴퓨팅 장치(100)상에서 실행중인 애플리케이션에 보고할 수 있다. 운영체제에서 실행되는 애플리케이션은 운영체제 애플리케이션 프로그래밍 인터페이스("API")를 호출하는 동작, ACPI 시스템 설명 테이블을 검사하는 동작 등을 통해 운영체제가 메모리의 페이지를 비휘발성으로 식별했음을 결정할 수 있다. 일부 경우, 메모리를 비휘발성으로 식별하는 것은 사용자에게 메모리의 페이지를 명시적으로 또는 암시적으로 알리지 않고 메모리의 페이지가 비휘발성으로 취급되어야 한다고 펌웨어 또는 운영체제가 기록하는 것을 포함할 수 있다는 것을 알아야 한다.
휘발성 또는 비휘발성으로 식별된 페이지의 수는 배터리 전원(124)에서 이용 가능한 전력의 양 및 비휘발성으로 확인된 휘발성 메모리의 페이지의 콘텐츠를 보존하는데 필요한 전력의 양을 포함하는 다양한 요소에 의존할 수 있다. 따라서, DRAM 메모리 모듈(114)은 식별된 비휘발성 메모리(116) 부분 및 식별된 휘발성 메모리(118) 부분을 포함할 수 있다.
컴퓨팅 장치(100)에서 실행되는 애플리케이션은 예를 들어, 데이터가 커밋되었음을 보장하기 위한 추가 단계를 반드시 수행하지 않고도 비휘발성 메모리로 식별된 메모리에 데이터를 기록함으로써 자신의 프로세싱을 적응시킬 수 있다. 일부 경우, 애플리케이션은 더 많은 양의 메모리가 비휘발성 커밋 모드에 있는 것으로 식별되면 더 높은 성능을 달성할 수 있다. 예를 들어, 애플리케이션은 기록이 비휘발성으로 식별된 메모리 영역에 대한 것이면, 기록이 커밋되었음을 보장하는 것과 관련된 프로세싱을 건너뛸 수 있다.
도 2는 이용가능한 배터리 전원에 기초하여 비휘발성으로 식별된 페이지의 수를 조정하는 것을 도시하는 블록도이다. 도 2는 배터리(200) 및 DRAM 메모리 모듈(208)을 도시한다. 3개의 에너지 레벨(202, 204, 206)에 대응하는 배터리(200)의 3개의 상태가 도시되어 있다. 도 2의 예는 장치에 이용가능한 에너지에 기초하여 비휘발성으로 식별되는 메모리의 양을 조정하는 도 1에 도시된 컴퓨팅 장치(100)와 같은 컴퓨팅 장치의 실시예를 도시하려 한다. 도 2의 예에서, 컴퓨팅 장치(100)는 배터리(200)에 이용가능한 에너지의 양이 시간에 따라 변동을 거듭하면 유틸리티 전원으로 동작할 수 있다. 도 2는 배터리 전원이 감소하는 경우를 도시하고 있지만, 일부 경우, 에너지의 양은 시간이 지남에 따라 증가할 수도 있고, 도 2에 도시된 것과 유사한 원리가 적용될 수 있다. 에너지의 양은 여러 가지 이유로 변동될 수 있다. 예를 들어, 일부 경우, 배터리(200)는 다수의 컴퓨팅 장치에 연결될 수 있으며, 다수의 컴퓨팅 장치 중 일부는 컴퓨팅 장치(100)가 배터리 전원으로 유지되는 동안 배터리(200)의 전력을 이용할 수 있다. 다른 예에서, 배터리의 온도 또는 그 밖의 다른 작동 조건이 이용가능한 에너지의 양에 영향을 미칠 수 있다. 다른 예에서, 배터리의 최대 용량은 시간이 지남에 따라 저하될 수 있다.
에너지 레벨(202)에서, 배터리(200)의 에너지의 양은 메모리 페이지(220)의 몇몇에 대한 메모리 이송을 수행하기에 충분할 수 있다. 도 2에서, 예를 들어, 에너지 레벨(202)에서의 배터리(200)의 에너지의 양은 도시된 10개의 메모리 페이지(220) 중 7개의 콘텐츠를 이송하기에 충분할 수 있다. 운영체제 또는 펌웨어는 각 페이지의 메모리의 양, DMA 동작을 수행하는 데 사용되는 에너지의 양, 메모리 이송 동작 동안 전력이 유지되는 장치에 의해 사용되는 에너지의 양 등과 같은 요소에 기초하여, 이송될 수 있는 메모리 페이지의 수를 결정할 수 있다. 배터리(200)가 보다 많은 양의 가용 에너지를 가질 때, 더 많은 수의 페이지가 비휘발성 메모리(210)로 식별될 수 있고, 더 적은 수의 페이지가 휘발성 메모리(212)로서 식별될 수 있다.
감소된 에너지 레벨(204)에서, 메모리 페이지(220)의 콘텐츠를 이송하는데 이용가능한 에너지의 양이 또한 감소될 수 있다. 예를 들어, 4개의 메모리 페이지를 사용가능한 배터리 전원을 사용하여 이송하는 데 충분한 메모리가 있을 수 있다. 운영체제 또는 펌웨어는 4개의 메모리 페이지를 비휘발성 메모리(214)로 식별하고 6개의 페이지를 휘발성 메모리(216)로 식별할 수 있다.
유사하게, 더 감소된 에너지 레벨(206)에서, 배터리(200)는 DRAM 메모리 모듈(208)의 임의의 페이지를 비휘발성 저장 장치로 이송하기에 충분한 배터리 전력을 공급하지 못할 수도 있다. 이 때, 운영체제 또는 펌웨어는 DRAM 메모리 모듈(208)의 모든 페이지를 휘발성 메모리(218)로서 식별할 수 있다.
메모리의 페이지가 비휘발성 메모리로 식별되면, 그의 콘텐츠는 후속하여 휘발성 메모리로 식별되기 이전에 보존될 수 있다. 예를 들어, 배터리(200)에서 이용 가능한 에너지의 양이 에너지 레벨(202)에서 에너지 레벨(204)로 감소된 경우, 식별된 비휘발성 메모리(210)의 3개의 페이지는 휘발성 메모리(216)로 식별되는 것으로 전환될 수 있다. 운영체제 또는 펌웨어는 페이지가 휘발성 메모리(216)로 식별되는 것으로 전환된 것으로 확인된 것에 응답하여 이전에 식별된 비휘발성 메모리(210)의 3개의 페이지의 콘텐츠를 이송시킬 수 있다. 메모리의 콘텐츠는 컴퓨팅 장치(100)가 유틸리티 전원을 여전히 사용하는 동안 이송될 수 있으며, 따라서 배터리(200)에서 이용가능한 에너지의 양은 그러한 이송에 의해 영향을 받지 않는다.
이송을 완료하기 전에 유틸리티 전원이 중단되면, 이전에 비휘발성 메모리(210)로 식별된 모든 메모리 페이지를 이송하는데 충분한 에너지가 이용가능하지 않을 수 있다. 이러한 현상의 위험은 비휘발성 메모리로 식별되는 메모리 페이지의 수를 보다 자주 조정하는 것, 및 비휘발성으로 식별할 메모리 페이지의 수를 결정하는데 사용되는 계산에 배터리 변동에 대한 더 큰 허용 오차를 포함하는 것 등 포함하나 여기에 국한되지 않는 다양한 방법으로 완화될 수 있다. 예를 들어, 비휘발성으로 식별할 페이지의 수는 배터리의 전력 레벨 변동량에 비례하여 감소할 수 있다.
도 3은 휘발성 메모리를 휘발성 또는 비휘발성 메모리로 식별하는 컴퓨팅 장치의 일례를 나타내는 블록도이다. 컴퓨팅 장치(300)는 배터리(310)로부터 통신을 수신하는 펌웨어(308)를 포함할 수 있다. 배터리(310)는 예를 들어 유틸리티 전원의 현재 상태, 배터리(310)에서 이용가능한 에너지의 양 등에 관한 정보를 포함하는 데이터를 전송할 수 있다. 일부 예에서, 배터리(310)는 유틸리티 전원 중단의 날짜, 시간 및 지속기간과 같은 다양한 측정치 및 이력 정보를 제공할 수 있다.
펌웨어(308)는 기본 입/출력 시스템("BIOS")일 수 있다. 펌웨어(308)는 컴퓨팅 장치(300)의 다양한 하드웨어 장치 및 컴포넌트를 초기화할 수 있다. 펌웨어(308)는 또한 런타임시 동작의 다양한 양상에 포함될 수 있다. 일부 예에서, 펌웨어(308)는 컴퓨팅 장치(300)의 하드웨어 컴포넌트에 대한 추상화 계층을 제공할 수 있으며, 이 추상화 계층을 통해 운영체제(304)는 컴퓨팅 장치(300)의 하드웨어에 액세스한다.
구성 및 전원 인터페이스(306)는 컴퓨팅 장치(300)의 메모리 구성에 관한 정보 및 업데이트에 대한 액세스를 운영체제(304)에 제공할 수 있다. 경우에 따라, 구성 및 전원 인터페이스는 고급 구성 및 전원 인터페이스("ACPI")를 포함할 수 있다. 펌웨어(308)는 컴퓨팅 장치상에 설치된 다양한 메모리 모듈의 특성을 기술하는 구성 테이블을 ACPI를 통해 제공할 수 있다. 경우에 따라, 이들 테이블은 메모리 모듈의 특성을 있는 그대로 기술할 수 있는데, 즉 휘발성 메모리는 휘발성 메모리로 보고되고 비휘발성 메모리는 비휘발성으로 보고된다. 다른 예에서, 테이블은, 잠재적으로는 모든 휘발성 메모리 모듈을 포함하여, 휘발성 메모리 모듈의 일부 비율이 비휘발성임을 나타내는 데 사용될 수 있다. 일부 경우, 테이블은, 메모리의 비휘발성 특성이 펌웨어 또는 운영체제에 의해 시뮬레이트된다는 표시를 제공할 수 있다. 다른 경우, 테이블은, 비휘발성 특성이 메모리 모듈 자체의 것이 아니라는 표시를 포함하지 않을 수 있다.
운영체제(304)는 다양한 프로그램, 프로세스 및 하위 프로세스의 실행을 가능하게 할 수 있다. 이들은 본 명세서에서 도 3에 도시된 애플리케이션(302)과 같은 애플리케이션으로 지칭될 수 있다. 애플리케이션(302)은 다양한 방식으로 비휘발성으로 식별된 메모리를 이용할 수 있다. 일 예에서, 운영체제(304)는 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 비휘발성으로 식별되는 메모리에 대한 액세스를 애플리케이션(302)에 제공할 수 있다. 이는 힙(heap) 생성 또는 메모리 할당 API를 호출하고 반환된 힙 또는 메모리 세그먼트가 비휘발성 메모리 페이지여야 함을 나타내는 플래그를 지정하는 것을 포함할 수 있다. 일부 경우, 애플리케이션은 제공된 메모리의 비휘발성 특성이 운영체제에 의해 제공될 수 있는지 또는 펌웨어에 의해 제공될 수 있는지 여부를 지정할 수 있다. 다른 경우에, 휘발성 메모리 모듈에 기초한 페이지는 투명하게 제공될 수 있어, 애플리케이션은 제공된 메모리의 시뮬레이션된 비휘발성에 적응된 명령어를 반드시 포함하지는 않을 수 있다.
배터리(310)의 상태에 관한 데이터는 펌웨어(308)를 비롯하여, 컴퓨팅 장치(300)의 다양한 컴포넌트에 분배될 수 있다. 펌웨어(308)는 예를 들어 배터리(310)로부터 데이터를 수신하거나 다른 방식으로 획득할 수 있다. 펌웨어(308)는 구성 및 전원 인터페이스(306)를 통해 운영체제(304)에 정보를 분배할 수 있다. 그 다음, 운영체제(304)는 비휘발성으로 식별된 메모리의 양을 조정함으로써 정보를 적용할 수 있다. 비휘발성으로 식별된 메모리의 양은 성능 대 위험 비율, 유틸리티 전원 중단의 추정된 확률 및 길이, 배터리의 상태, 배터리 전원이 변동하는 비율 등과 같은 다양한 요인에 기초하여 결정될 수 있다.
운영체제(304)는 컴퓨팅 장치(300)에 의해 이용가능한 에너지의 양의 증가에 응답할 수 있다. 이 응답은 비휘발성 메모리로 식별되는 메모리의 양을 증가시키는 것을 포함할 수 있다. 예를 들어, 운영체제(304)는 비휘발성 메모리 페이지로 식별할 DRAM 메모리 모듈의 추가 페이지를 선택할 수 있다. 이는 선택된 DRAM 모듈의 페이지에 대한 액세스를 애플리케이션(302)에 제공하고, 페이지를 비휘발성으로 식별하고, 유틸리티 전원이 중단되거나 시스템이 중지되는 경우 메모리 페이지의 콘텐츠가 비휘발성 저장 장치로 이송되게 하는 것을 포함할 수 있다. 또한, 메모리 콘텐츠는 비휘발성 메모리에 대한 후속 기록 동작을 위해 또는 다른 이유로 공간을 확보하기 위해 비휘발성 저장 장치로 이송될 수 있다.
운영체제(304)는 컴퓨팅 장치(300)에 의해 사용가능한 에너지의 양이 감소하는 것에 응답할 수 있다. 응답의 양상은 이전에 비휘발성으로 식별된 DRAM 메모리 모듈의 페이지를 선택하고 이 페이지가 대신 휘발성으로 식별되게 하는 것을 포함할 수 있다. 언급한 바와 같이, 식별 프로세스는 메모리의 페이지가 휘발성인지 또는 비휘발성인지 여부를 나타내도록 시스템 구성 테이블을 업데이트하는 것을 포함할 수 있다. 배터리(310)에 이용가능한 에너지의 양이 감소되면, 이전에 비휘발성으로 표시된 페이지가 휘발성으로 표시되도록 테이블을 업데이트할 수 있다. 응답의 다른 양상은 이러한 선택해제된 페이지의 콘텐츠를 비휘발성 저장 장치로 이송하는 것을 포함할 수 있다. 선택해제된 페이지는 비휘발성 저장 장치에 아직 보존되지 않은 콘텐츠를 가질 수 있으며, 따라서 페이지가 선택해제된 경우에도 콘텐츠는 보존될 수 있다. 이것은 보존되지 않은 데이터가 선택해제된 페이지에 기록되지 않은 경우 필요없을 수 있다. 따라서, 일부 경우, 콘텐츠가 이미 보존되었거나 아직 데이터가 기록된 것이 없는 페이지가 선택해제 대상으로서 바람직할 수 있다.
배터리(310)는 컴퓨팅 장치(300) 이외의 장치들에 의해 공유될 수 있다. 도 4는 다수의 컴퓨팅 장치에 의해 공유되는 배터리를 나타낸다. 배터리(400)는 다수의 컴퓨팅 장치(408, 410, 412)에 예비 동작 전력을 제공할 수 있다. 배터리(400)는 또한 배터리(400)의 상태에 관한 데이터를 제공하거나 그 데이터에 대한 액세스를 허용할 수 있다.
배터리 전원의 일부는 컴퓨팅 장치(408, 410, 412) 각각에 의해 사용되도록 예비될 수 있다. 도 4에 도시된 바와 같이, 컴퓨팅 장치(408, 410, 412) 각각은 예비 에너지 부분(402, 404, 406)을 가질 수 있다. 예비 에너지 부분(402, 404, 406)은 유틸리티 전원이 중단되는 경우 각각의 컴퓨팅 장치(408, 410, 412)에 의해 사용될 수 있도록 예비될 수 있다. 일부 예에서, 예비 에너지 부분(402, 404, 406)은 특히 비휘발성으로 식별된 DRAM 메모리 모듈의 콘텐츠를 이송하기 위해 예비될 수 있다.
예비 에너지 부분(402, 404, 406) 내의 에너지의 양은 비휘발성으로서 식별 될 메모리의 목표량과 같은 요소에 기초할 수 있다. 예를 들어, 컴퓨팅 장치(408)는 DRAM 메모리 모듈을 비휘발성인 것으로 적극적으로 식별하도록 구성될 수 있다. 이와 같이, 컴퓨팅 장치(408)를 위한 예비 에너지 부분(402)은 다른 예비 에너지 부분(404, 406)보다 크도록 구성될 수 있다. 예비 에너지의 양 내에 통합될 수 있는 다른 요소는 위험 허용치, 유틸리티 전원이 중단될 추정된 확률, 배터리 상태 등일 수 있다. 메모리의 콘텐츠를 이송하는 데 필요한 에너지의 모델은 배터리의 에너지 공급 모델과 함께 사용될 수 있다. 컴퓨팅 장치(408, 410, 412) 각각은 모델을 사용하여, 다른 컴퓨팅 장치(408, 410, 412)의 전력 요구사항을 간섭하지 않고 얼마나 많은 메모리가 비휘발성인 것으로 식별될 수 있는지를 결정할 수 있다.
배터리(400) 내의 에너지는 컴퓨팅 장치(408, 410 및 412)의 운영체제 또는 펌웨어에 의해 확보될 수 있다. 예를 들어, 컴퓨팅 장치(408)의 운영체제는 다른 도시된 컴퓨팅 장치(410, 412)와 같은 배터리(400)의 다른 사용자들에 관한 정보를 수신하거나 얻을 수 있다. 정보는 각 부분에 대해 예비된 에너지의 양에 영향을 줄 수 있는 요소를 포함할 수 있다. 유틸리티 전원이 중단되는 경우, 컴퓨팅 장치(408)는 자신의 할당된 "전력 예산(power budget)"내에서, 예를 들어 예비 에너지(402)의 양만을 사용하여, 비휘발성으로 식별된 메모리의 콘텐츠를 이송하도록 동작할 수 있다.
도 5는 비휘발성 메모리로서 식별된 휘발성 메모리를 갖는 컴퓨팅 장치를 동작시키기 위한 예시적인 프로세스를 나타내는 흐름도이다. 또한, 도 5가 블록들의 시퀀스로서 도시되었지만, 도시된 시퀀스는 도시된 시퀀스를 따르는 실시예들로 본 개시의 범위를 제한하는 것으로 해석되어서는 안됨을 이해할 것이다. 또한, 본 개시의 일부 실시예에서, 도시된 블록들에 의해 표시된 동작들 중 일부는 변경되거나, 재정렬되거나, 병렬로 수행되거나 또는 생략될 수 있다.
도 1에 도시된 컴퓨팅 장치(100)와 같은 컴퓨팅 장치의 동작 동안, 컴퓨팅 장치의 운영체제 또는 펌웨어는 메모리의 콘텐츠를 비휘발성 저장 장치에 이송하는 데 필요한 에너지의 양에 적어도 부분적으로 기초하여 얼마나 많은 메모리가 비휘발성인 것으로 식별될 수 있는지를 주기적으로 결정할 수 있다. 블록(500)은 휘발성 메모리 모듈을 비휘발성인 것으로 식별하기 위한 현재 용량을 결정하는 것을 도시하는데, 용량은 유틸리티 전원이 중단되는 경우에 메모리의 콘텐츠를 보존하기 위해 이용가능한 에너지의 양에 의해 제한될 수 있다.
블록(502)은 유틸리티 전원 단계 동안 비휘발성으로 식별된 다수의 휘발성 메모리 페이지와 함께 동작하는 컴퓨팅 장치를 도시한다. 유틸리티 전원 단계는 유틸리티 전원이 컴퓨팅 장치에 이용 가능한 때를 지칭할 수 있다. 일부 예에서, 유틸리티 전원 단계는 유틸리티 전원이 임계 기간 미만의 기간 동안에만 차단되는 기간을 포함할 수 있다. 임계 기간은 이 임계 기간이 경과하기 전에 전원이 복원될 것으로 예상되는 확률에 기초할 수 있다. 그런 다음 중단의 기간이 비교적 짧다면 유틸리티 전원 단계가 계속될 수 있다.
블록(504)의 동작은 유틸리티 전원 단계 동안 수행될 수 있다. 이 시간 동안, 블록(504)에 의해 도시된 바와 같이, 컴퓨팅 장치는 배터리 용량 및 전원 상태를 모니터링할 수 있다. 용량을 모니터링하는 것은 배터리에 저장된 전력량에 대한 정보를 수신하거나 획득하는 것을 포함할 수 있다. 또한, 컴퓨팅 장치는 배터리에 저장되어 있고 정전시에 컴퓨팅 장치에 의해 사용되도록 예비된 전력의 양을 모니터링할 수 있다. 전력 상태를 모니터링하는 것은 컴퓨팅 장치 및/또는 배터리가 현재 유틸리티 전원으로 전력을 공급받는지 여부, 또는 일부 다른 조건이 배터리의 가용 에너지의 양을 감소시키고 있는지 여부를 나타내는 정보를 수신하거나 획득하는 것을 포함할 수 있다.
블록(506)에 의해 도시된 바와 같이, 유틸리티 전원 단계가 계속되는 동안 블록(500 내지 504)의 동작이 반복될 수 있다. 유틸리티 전원이 실패하거나 중단되는 경우, 블록(508 및 510)의 동작이 수행될 수 있다.
도 5에 도시되고 본 명세서에서 설명되는 바와 같이, 유틸리티 전원 단계는 유틸리티 전원의 일시적인 중단과 연관될 수 있다. 그러나, 정전의 지속시간은 컴퓨팅 장치가 그 동작이 배터리 전원의 사용에 적응되는 단계에 진입할 수 있도록 할 수 있다. 블록(508)은 컴퓨팅 장치의 동작이 배터리 전원의 사용에 적응되는 배터리 전원 단계에 진입하는 것을 나타낸다. 휘발성 메모리를 비휘발성 메모리로서 식별하는 것과 관련하여, 컴퓨팅 장치의 동작은 다양한 방식으로 적응될 수 있다. 예를 들어, 컴퓨팅 장치는 휘발성 메모리의 새로운 페이지를 비휘발성으로 식별하는 것을 중단할 수 있고, 휘발성 메모리 페이지의 콘텐츠가 비휘발성 저장 장치로 이송되는 경우 비휘발성으로서의 휘발성 메모리 페이지를 편의적으로 선택해제할 수 있다. 이러한 상황이 발생하는 정도는 위험요소와 성능요소 간의 균형을 지정할 수 있는 조정 파라미터와 같은 다양한 요소에 기초할 수 있다.
블록(510)의 동작은 배터리에서 이용 가능한 에너지의 양이, 배터리 소모가 계속되는 경우, 비휘발성으로 식별된 휘발성 메모리의 콘텐츠를 보존하는데 이용 가능한 충분한 에너지가 없을 수도 있는 지점까지 감소될 때까지 지연될 수 있다. 블록(510)은 비휘발성으로 식별된 휘발성 메모리에 대한 메모리 보존 단계로 진입하는 것을 도시한다. 이 단계에서, 컴퓨팅 장치는 전력 소비가 주로 비휘발성으로 식별된 메모리의 콘텐츠의 보전에 직결되는 상태에 진입할 수 있다.
비휘발성 메모리로 식별되는 메모리의 양은 컴퓨팅 장치의 성능에 영향을 줄 수 있다. 애플리케이션 성능은, 일부 경우, 휘발성 메모리에 기록된 데이터가 보존되도록 보장하기 위해 보다 많은 양의 메모리를 비휘발성으로 식별하고 본 명세서에서 설명된 다양한 기술을 사용함으로써 증가될 수 있다. 도 6은 애플리케이션 성능 파라미터에 기초하여 비휘발성 메모리 식별을 조정하는 프로세스의 일례를 나타내는 흐름도이다. 블록들의 시퀀스로서 도시되었지만, 도시된 시퀀스는 도시된 시퀀스를 따르는 실시예에 본 개시의 범위를 제한하는 것으로 해석되어서는 안됨을 알 것이다. 또한, 본 개시의 일부 실시예에서, 도시된 블록들에 의해 표시된 동작들 중 일부는 변경되거나, 재정렬되거나, 병렬로 수행되거나 또는 생략될 수 있음을 알 것이다.
블록(600)은 이용 가능한 배터리 전원의 표시를 수신하는 컴퓨팅 장치를 도시한다. 표시는 도 5의 블록(510)에 의해 도시된 바와 같이, 컴퓨팅 장치가 메모리 보존 모드에 진입할 때 얼마나 많은 가용 전력이 신뢰성 있게 이용가능할지를 결정하기에 충분한 정보를 포함할 수 있다.
블록(602)은 전력 예산 및 전력 예산 편차를 결정하는 것을 도시한다. 전력 예산은 메모리 보존 모드에 진입한 경우 배터리 전원의 할당을 지칭할 수 있다. 예를 들어, 전력 예산은 비휘발성으로 식별된 메모리의 콘텐츠를 보존하기 위해 코어, 언코어, 하나 이상의 메모리 모듈 및 비휘발성 저장 장치를 작동시키는데 사용 가능한 배터리 전력의 할당을 포함할 수 있다. 전력 예산은 다른 장치에 대한 할당도 포함할 수 있다.
전력 예산 편차는 전력 예산의 추정된 신뢰도를 나타낼 수 있다. 여기에는 가용 전력량 및 메모리 보존 단계에서 전력 예산 항목이 실제로 소비할 수 있는 전력량과 같은 요소에 대한 조정이 포함될 수 있다. 예를 들어, 보다 적극적인 전력 예산은, 비휘발성으로 식별된 메모리 페이지의 일부 비율이 정상 작동 중에 이미 보존되었거나, 또는 기록된 적이 없어 보존할 것이 없을 수 있기 때문에, 메모리 보존 단계에서 실제로 보존될 필요가 없다고 가정할 수 있다. 그러나, 이러한 가정이 부정확한 것으로 판명되면, 메모리 예산이 초과될 수 있다.
블록(604)은 전력 예산을 개선하기 위해 조정 파라미터를 이용하는 것을 나타낸다. 예를 들어, 조정 파라미터는 컴퓨팅 시스템이 휘발성 메모리를 얼마나 적극적으로 비휘발성으로 식별해야 하는지를 나타내는 운영체제 또는 펌웨어의 구성 요소일 수 있다. 예를 들어, 일부 애플리케이션에서, 시스템 오류가 발생한 경우 데이터가 손실되는 위험을 감수할 수 있다. 그런 다음 전력 예산을 조정하여 더 많은 양의 휘발성 메모리를 비휘발성으로 식별할 수 있다. 다른 애플리케이션의 경우, 데이터 손실이 허용되지 않는 것으로 간주될 수 있다. 이들 애플리케이션의 경우, 운영체제 또는 펌웨어의 구성 요소는 메모리 보존 단계에서 전력 사용의 비관적 전망에 기초하여 전력 예산이 계산되어야 함을 나타낼 수 있다.
블록(606)에서, 컴퓨팅 장치는 휘발성 메모리의 페이지에 커밋 모드를 할당할 수 있다. 다시 말해, 컴퓨팅 장치는 휘발성 메모리의 특정 페이지를 비휘발성 커밋 모드를 갖는 것으로 식별하는 한편, 다른 페이지는 휘발성 커밋 모드로 유지할 수 있는 것으로 결정할 수 있다. 여기서, 커밋 모드는 메모리에 기록될 때 기록이 커밋된 것, 즉 영구적인 것으로 간주될 수 있는지 여부를 지칭할 수 있다.
컴퓨팅 시스템은 전력 예산에 기초하여 비휘발성 커밋 모드에 대한 메모리 페이지를 선택할 수 있다. 이것은 비휘발성 커밋 모드를 갖는 전력 예산에 의해 허용되는 최대 수의 메모리 페이지를 선택하는 것을 포함할 수 있다. 또한, 이것은 전력 예산과 일관성을 유지하면서 비휘발성 커밋 모드와 관련될 수 있는 페이지의 수를 최대화하도록 페이지를 선택하는 것을 포함할 수 있다. 일부 경우, 선택된 페이지는 메모리 모듈에 의해 그룹화될 수 있고, 그에 따라, 비휘발성 커밋 모드 페이지를 갖는 메모리 모듈의 총 개수는 감소될 수 있고, 전력 예산에 대한 적합성이 증가될 수 있다.
도 7은 휘발성 메모리의 콘텐츠를 보존하는 예를 제공하는 블록도이다. 휘발성 메모리 특성을 갖는 DRAM 메모리 모듈(700)은 다수의 메모리 페이지를 포함할 수 있다. 도시된 DRAM 메모리 모듈(700)은 휘발성이기 때문에, 그 구성 메모리 페이지 모두는 휘발성인데, 즉, DRAM 메모리 모듈(700)에 대한 전력이 차단되면 그 콘텐츠는 손실될 것이다. 그러나, 본 명세서에 언급된 바와 같이, 특정 페이지는 비휘발성으로 식별될 수 있고, 따라서 컴퓨팅 장치에서 실행되는 애플리케이션에 의해 비휘발성으로 취급될 수 있다. 도 7에 도시된 바와 같이, DRAM 메모리 모듈은 식별된 비휘발성 페이지(704, 706)를 포함할 수 있다. 이들 중, 일부 메모리 페이지(704)는 보존되지 않은 콘텐츠를 포함할 수 있는 반면, 다른 메모리 페이지(706)는 이미 보존된 콘텐츠를 포함할 수 있거나, 또는 등가적으로 메모리 페이지(706)는 자신에게 기록된 적이 없기 때문에 보존될 것을 가지지 않을 수 있다. DRAM 메모리 모듈(700)은 또한 현재 휘발성으로 식별되지 않은 메모리 페이지(708)를 포함할 수 있다.
도 7의 예에서, 식별된 비휘발성 페이지(706)의 콘텐츠는 페이지(706)의 콘텐츠를 비휘발성 저장 장치(702)로 이송함으로써 미리 보존될 수 있다. 페이지(706)의 콘텐츠는 보존된 페이지 레코드(712)에 의해 비휘발성 저장 장치(702)에 저장되는 것으로 표시된다.
비휘발성으로 식별되지만 아직 보존되지 않은 메모리의 하나 이상의 페이지(704)의 콘텐츠는 직접 메모리 이송 동작(714)에 의해 비휘발성 저장 장치 상에 보존될 수 있다. 예를 들어, 프로세서 및 메모리 제어기는 페이지의 콘텐츠를 비휘발성 저장 장치(702)로 이송하는 DMA 동작을 유발할 수 있다.
비휘발성 저장 장치(702)의 영역은 예비로 유지될 수 있다. 이것은 도 7에서 예비 저장소(710)로 명명된 요소로 도시된다. 예비 저장소(710)는 비휘발성(704, 706)으로 식별된 메모리 페이지의 콘텐츠를 저장하기에 충분한 공간 영역을 포함할 수 있다. 일부 실시예에서, 비휘발성으로 식별된 메모리의 양은 비휘발성 저장 장치(702)에서 이용가능한 저장 공간의 양에 부분적으로 기초할 수 있는데, 그 이유는 이용가능한 저장 공간의 부족은 비휘발성으로서 식별된 메모리의 콘텐츠가 보존되지 않게 할 수 있기 때문이다.
메모리 보존 단계는 휘발성 메모리의 콘텐츠를 보존하는 데 적합한 저전력 상태로 진입하는 것으로 시작될 수 있다. 저전력 상태는 가능하게 할 수 있다. 도 8은 비휘발성으로 식별된 휘발성 메모리의 콘텐츠를 보존하기 위한 예시적인 프로세스를 나타내는 흐름도이다. 블록들의 시퀀스로서 도시되었지만, 도시된 시퀀스는 도시된 시퀀스를 따르는 실시예로 본 개시의 범위를 제한하는 것으로 해석되어서는 안됨을 알 것이다. 또한, 본 개시의 일부 실시예에서, 도시된 블록들에 의해 표시된 동작들 중 일부는 변경되거나, 재정렬되거나, 병렬로 수행되거나 또는 생략될 수 있음을 알 것이다.
블록(800)은 가상 머신 또는 데이터베이스와 같은 다른 애플리케이션을 정지시키는 컴퓨팅 장치를 도시하며, 정지기간 동안에는 진행이 중단될 필요가 있다. 예를 들어, 컴퓨팅 장치가 메모리 보존 단계에 진입했거나 또는 진입하려 한다고 결정되면, 가상 머신과 같은 다양한 애플리케이션은 이 사실을 통보받을 수 있고 또한 이들 애플리케이션이 가능한 많은 커밋되지 않은 데이터를 저장할 수 있는 제어된 기간을 제공받을 수 있다. 운영체제 및/또는 펌웨어가 메모리 보존 단계 동안 메모리의 콘텐츠를 보존할 것이기 때문에, 비휘발성으로 식별된 메모리에 기록된 데이터는 일부 경우, 커밋된 상태인 것처럼 애플리케이션에 의해 취급될 수 있다.
블록(802)에서, 컴퓨팅 장치는 메모리 보존 단계의 나머지 동안에는 필요하지 않은 특정 장치들로의 전력 전달을 중지시킴으로써 저전력 상태로 진입하기 시작할 수 있다. 이러한 장치는 그래픽 카드, 사용자 인터페이스 버스, 네트워킹 카드 등을 포함할 수 있다.
블록(804)에 의해 묘사된 바와 같이, 컴퓨팅 장치는 또한 프로세서 인터럽트를 마스킹(mask)할 수 있다. 예를 들어, 모든 프로세서 인터럽트는 특정 오류에 관련된 것 및 DMA 동작과 같은 메모리 이송 동작을 처리하는 데 필요한 것을 제외하고는 마스킹될 수 있다.
블록(806)은 모든 관련 코어, 언코어 및 다른 프로세서 컴포넌트를 포함하여, 사용되지 않는 프로세서로의 전력 전달이 중단될 수 있음을 나타낸다. 이 문맥에서, 사용되지 않는(unused)은 메모리 보존을 수행하는 데 필요하지 않은 프로세서를 지칭할 수 있다. 예를 들어, 일부 경우, 단일 프로세서 또는 단일 프로세서의 단일 코어가 메모리 보존을 완료하는 데 충분할 수 있다. 따라서, 컴퓨팅 시스템의 나머지 프로세서에 대한 전력 전달은 메모리 보존 단계에서 중단될 수 있다. 일부 경우, 인터럽트는 프로세서를 깨우고 전원 공급이 재개될 수 있게 할 수 있다. 블록(804)에 의해 묘사된 인터럽트 마스킹은 이러한 발생을 방지하고 사용되지 않는 프로세서를 저전력 또는 무전력 상태로 유지할 수 있다.
블록(808)은 컴퓨팅 장치가 또한 비휘발성으로 식별된 페이지를 갖지 않는 휘발성 메모리 모듈로의 전력 전달을 중지할 수 있음을 나타낸다. 컴퓨팅 장치는 또한 그 콘텐츠가 이미 보존된 임의의 휘발성 메모리 모듈로의 전력을 중단할 수도 있다. 또한, 컴퓨팅 장치는 네거티브 AND 게이트("NAND") 메모리 모듈과 같이, 본질적으로 비휘발성인 임의의 메모리 모듈로의 전력을 중단할 수도 있다.
다양한 경우에, 컴퓨팅 장치는 가장 조기에 완료될 수 있는 휘발성 메모리 모듈에 관한 메모리 이송 동작을 우선적으로 수행할 수 있다. 예를 들어, 컴퓨팅 장치는 제1 메모리 모듈의 콘텐츠가 제2 메모리 모듈의 콘텐츠보다 신속히 보존될 수 있는 경우, 제2 메모리 모듈의 콘텐츠에 비해 제1 메모리 모듈의 콘텐츠를 우선적으로 이송할 수 있다. 이러한 접근법은 제2 메모리 모듈로의 전력 전달보다 제1 메모리 모듈로의 전력 전달이 더 빨리 중단되게 함으로써, 결과적으로 메모리 보존 단계에서 사용되는 에너지의 양은 전반적으로 감소될 수 있다.
블록(810)은 컴퓨팅 장치가 프로세서의 언코어로의 전력 전달을 유지하면서 프로세서의 코어로의 전력 전달을 중단시킬 수 있음을 나타낸다. 멀티코어 프로세서의 경우, 모든 코어로의 전력 전달은 중단될 수 있다. 메모리 보존 단계 동안, 하나 이상의 코어로의 전력 전달은 주기적으로 재개될 수 있다. 복구되면, 코어는 메모리 이송 동작을 시작하는 데 사용될 수 있으며 그 후에 전력 전달이 다시 중단될 수 있다. 이것은 블록(812)으로 표시된다. 한편, 프로세서의 언코어로의 전력 전달은 유지된다. 메모리 제어기를 포함하는 언코어는 메모리 이송 동작을 감독할 수 있고, 이송이 완료되면 프로세서의 코어로의 전력 전달을 재개할 수 있다.
블록(814)에 의해 도시된 바와 같이, 비휘발성 저장 장치뿐만 아니라, 저장 장치에 기록하기 위해 요구되는 임의의 인터페이스 또는 통신 버스로의 전력 전달은 메모리 이송 동작이 완료될 수 있도록 메모리 보존 단계 동안 유지될 수 있다.
도 9는 메모리 보존 동안 프로세서 코어로의 전력 전달을 제어하는 예를 도시하는 흐름도이다. 블록들의 시퀀스로서 도시되었지만, 도시된 시퀀스는 도시된 시퀀스를 따르는 실시예에 본 개시의 범위를 제한하는 것으로 해석되어서는 안됨을 알 것이다. 또한, 본 개시의 일부 실시예에서, 도시된 블록들에 의해 표시된 동작들 중 일부는 변경되거나, 재정렬되거나, 병렬로 수행되거나 또는 생략될 수 있음을 알 것이다.
블록(900)은 프로세서의 코어가 휘발성 메모리 모듈로부터 비휘발성 저장 장치로 직접 메모리 이송 동작을 개시하기 위한 명령을 실행할 수 있음을 나타낸다. 직접 메모리 이송 동작은 비휘발성으로 식별된 휘발성 메모리 모듈의 페이지를 비휘발성 저장 장치에 복사할 수 있다.
블록(902)은 직접 메모리 이송 동작을 개시한 후 프로세서의 코어로의 전력을 중단시키는 것을 도시한다. 전력이 중단된 동안 직접 메모리 전송 작업은 진행 중일 수 있다. 이 시간 동안 프로세서의 언코어로의 전력 전달은 유지될 수 있다.
블록(904)에 의해 표시된 바와 같이, 메모리 이송 동작이 완료되었음을 나타 내기 위한 인터럽트가 생성될 수 있다. 인터럽트는 언코어의 메모리 제어기에 의해 생성될 수 있다. 인터럽트 신호의 처리는 적어도 코어로의 전력 전달을 재개함으로써 코어가 재가동되도록하는 것을 포함할 수 있다. 이러한 동작은 블록(900)에 의해 도시된다.
블록(908)에서, 가동된 코어는 이전에 비휘발성으로 식별된 모든 휘발성 메모리가 보존되었는지 여부를 결정하기 위한 명령을 실행할 수 있다. 이는 비휘발성으로 식별된 휘발성 메모리 페이지의 레코드를 조사하고, 대응 페이지의 콘텐츠가 이미 보존되었는지, 기록된 적이 없기 때문에 보존될 필요가 없는지, 또는 여전히 보존될 필요가 있는지 여부를 나타내는 정보를 조사하는 명령어를 실행하는 것을 포함할 수 있다.
비휘발성 메모리로 식별된 모든 휘발성 메모리가 보존되었거나 보존될 필요가 없는 경우, 블록(910)에 도시된 바와 같이 시스템은 중단될 수 있다. 그렇지 않으면, 프로세싱은 블록(900)에서 재개될 수 있고, 여기서 가동된 프로세서는 추가적인 메모리 이송 동작을 개시할 수 있다.
도 10은 비휘발성으로 식별된 휘발성 메모리 모듈을 갖는 컴퓨팅 장치를 동작시키는 예를 도시하는 흐름도이다. 블록들의 시퀀스로서 도시되었지만, 도시된 시퀀스는 도시된 시퀀스를 따르는 실시예에 본 개시의 범위를 제한하는 것으로 해석되어서는 안됨을 알 것이다. 또한, 본 개시의 일부 실시예에서, 도시된 블록들에 의해 표시된 동작들 중 일부는 변경되거나, 재정렬되거나, 병렬로 수행되거나 또는 생략될 수 있음을 알 것이다.
블록(1000)은 휘발성 메모리의 페이지의 콘텐츠를 비휘발성 저장 장치로 이송하는데 사용될 수 있는 추정된 에너지의 양을 나타내는 정보를 얻는 것을 도시한다. 이 정보는 컴퓨팅 장치의 작동 중에 기록된 관측치, 실험치, 측정치 등을 포함할 수 있다. 정보는 일부 경우, 구성 파라미터에 의해 제공될 수 있다. 정보는 비휘발성 저장 장치로의 DMA 이송 동작을 수행하는데 사용되는 에너지의 양을 포함할 수 있다. 정보는 또한 DMA 이송을 시작하기 위해 프로세서 코어에 의해 사용되는 에너지, 및 비휘발성 저장 장치에 의해 소비되는 에너지의 양을 포함할 수 있다. 다른 전력 소비 요소도 포함될 수 있다.
블록(1002)은 배터리에서 이용가능한 에너지의 양을 나타내는 정보를 얻는 것을 나타낸다. 정보는 예를 들어 배터리로부터 컴퓨팅 장치로 전송된 메시지로부터, 또는 컴퓨팅 장치에 의해 개시된 폴링 메커니즘으로부터 획득될 수 있다. 이러한 예는 예시적인 것으로서 제한적으로 해석되어서는 안된다.
블록(1004)은 메모리 페이지의 콘텐츠가 배터리에서 이용가능한 에너지의 양을 사용하여 비휘발성 저장 장치로 이송될 수 있다고 결정하는 것을 나타낸다.
이러한 결정은 성능 모드 또는 데이터 안전 모드와 같은 동작 모드에 기초할 수 있다. 동작 모드는 파라미터 또는 구성 데이터에 의해 지정될 수 있는데, 예를 들어, 동작 모드는 비휘발성으로 식별하기 위한 휘발성 메모리의 최대 페이지 수를 계산할 때 허용되는 것으로 간주되는 위험 수준을 나타낼 수 있다.
결정은 또한 현재 비휘발성으로 식별된 페이지의 총 수, 또는 비휘발성으로 식별되고 현재 보존이 필요한 데이터를 갖는 페이지의 수에 기초할 수 있다. 운영체제 또는 펌웨어는 페이지 당 사용가능한 에너지의 양을 결정하고 해당 값을 메모리 페이지를 보존하는 데 필요한 에너지와 비교할 수 있다. 그 양이 충분한 양보다 많은 경우, 더 많은 수의 페이지가 비휘발성으로 식별될 수 있다. 양이 충분하지 않으면, 운영체제 또는 펌웨어는 유틸리티 전원을 사용하는 동안 다양한 단계를 거쳐 충분한 수의 페이지를 휘발성으로 다시 식별할 수 있다. 컴퓨팅 시스템은 비휘발성으로 식별될 수 있는 휘발성 메모리의 최대 수의 페이지를 유사하게 결정할 수 있다. 최대 수는 주기적으로 다시 계산될 수 있다.
결정은 유틸리티 전원이 중단된 경우 휘발성 메모리의 일부가 이용가능한 에너지의 양을 사용하여 비휘발성 메모리로 이송가능할 것이라는 통계적 확률의 계산에 기초할 수 있다.
블록(1006)은 결정에 기초하여 휘발성 메모리의 페이지를 비휘발성 메모리로서 취급하도록 컴퓨팅 장치의 운영체제를 구성하는 것을 나타낸다. 휘발성 메모리의 페이지를 비휘발성으로 취급하는 것은 컴퓨팅 장치에서 실행되는 애플리케이션에, 메모리에 의해 지원되는 커밋 모드를 식별하는 정보를 제공하는 것을 포함할 수 있다. 예를 들어, 커밋 모드는 메모리에 기록된 데이터가 즉시 커밋됨을, 즉 애플리케이션의 개입에 대해 즉시 내구성을 가질 수 있음을 나타낼 수 있다(운영체제 또는 펌웨어는 비휘발성으로 식별된 메모리 콘텐츠를 보존할 책임을 맡을 것이기 때문이다).
운영체제를 구성하는 것은 페이지가 휘발성이 아닌 비휘발성임을 나타내는 정보로 구성 인터페이스 데이터를 업데이트하는 것을 포함할 수 있다. 예를 들어, 펌웨어는 메모리가 비휘발성인 것으로 사용자에게 설명되도록 ACPI 테이블을 업데이트할 수 있다.
블록(1008)은 메모리 보존 단계로 들어가는 것을 나타내는 정보를 수신하는 것을 도시한다. 정보는 예를 들어 유틸리티 전원이 차단된 경우 배터리로부터 얻어지거나 전송될 수 있다. 유틸리티 전원이 중단되는 것에 응답하여, 컴퓨팅 장치는 배터리 전원을 사용하는 것으로 전환될 수 있고 정상 동작을 계속할 수 있다. 그러나, 시간이 지남에 따라, 배터리에서 사용가능한 전력은 사용가능한 에너지 양이 더 감소할 경우 현재 비휘발성 메모리로 식별되고 보존될 콘텐츠를 갖는 모든 휘발성 메모리 페이지의 콘텐츠를 보존하기에 충분하지 않을 수도 있는 지점까지 떨어질 수 있다. 이 때, 컴퓨팅 장치는 메모리 보존 단계에 진입할 수 있으며, 이메모리 보존 단계는 메모리 보존에 필요하지 않은 전력 소비를 차단하고, 비휘발성으로 식별된 휘발성 메모리의 콘텐츠를 보존하는 데 필요한 메모리 이송을 개시하는 것을 포함할 수 있다.
페이지의 콘텐츠는 배터리에서 이용가능한 에너지의 양의 감소를 나타내는 정보를 수신하는 것에 응답하여 이송될 수 있다. 이러한 감소는 예를 들어, 유틸리티 전원의 손실, 배터리 수명의 감소, 배터리에 연결된 추가 장치 등으로 발생할 수 있다.
메모리 보존 단계에 들어가기 전에, 컴퓨팅 장치의 운영체제 또는 펌웨어는 비휘발성으로 식별된 휘발성 메모리의 페이지를 폐기하기 시작할 수 있다. 여기에는 메모리의 콘텐츠를 보존하고 페이지를 휘발성으로 다시 식별하는 작업이 포함될 수 있다. 예를 들어, 배터리 전원을 사용하지만 정상적으로 작동하는 동안, 운영체제 또는 펌웨어는 유틸리티 전원이 차단된 이후 경과된 시간 또는 사용가능한 배터리 전력의 양과 같은 요소를 모니터링하고, 메모리 보존 단계가 증가하고 있지만 확실하지는 않다는 가정하에 시뮬레이팅된 비휘발성 페이지를 폐기하기 시작할 수 있다. 조정 파라미터 또는 성능 파라미터를 사용하여 이것이 얼마나 신속하게 발생해야하는지를 조정할 수 있다. 안전보다 성능이 중요한 경우, 파라미터는 시스템이 휘발성 메모리를 가능한 한 오랫동안 비휘발성으로 처리해야 함을 나타낼 수 있다.
블록(1010)은 페이지의 콘텐츠를 비휘발성 저장 장치로 이송함으로써 메모리 페이지의 콘텐츠를 보존하는 단계를 포함한다. 콘텐츠는 예를 들어, 본 명세서에 설명된 바와 같이 DMA 동작에 의해 이송될 수 있다. 컴퓨팅 장치는 페이지의 콘텐츠가 저장될 수 있는 예비 공간을 비휘발성 저장 장치 상에 유지할 수 있다.
일 실시예에서, 컴퓨팅 장치는:
복수의 페이지로 논리적으로 분할된 휘발성 메모리와,
비휘발성 저장 장치- 복수의 페이지 중의 페이지의 콘텐츠가 메모리 이송 동작에 의해 비휘발성 저장 장치로 이송가능함 -와,
컴퓨팅 장치의 운영체제와,
하나 이상의 프로세서를 포함하되,
하나 이상의 프로세서는 컴퓨팅 장치로 하여금 적어도
컴퓨팅 장치에 의해 사용가능한 배터리 내의 에너지의 양을 나타내는 정보를 수신하고,
메모리 이송 동작을 수행하는데 필요한 에너지의 양을 결정하고,
메모리 이송 동작을 수행하는데 필요한 에너지의 양에 적어도 부분적으로 기초하여, 컴퓨팅 장치에 의해 이용가능한 에너지의 양을 사용하여 비휘발성 저장 장치로 이송가능한 콘텐츠를 갖는 복수의 페이지 중의 페이지의 수를 결정하며,
휘발성 메모리의 복수의 페이지 중 하나 이상의 페이지를 비휘발성 메모리로 취급하도록 운영체제를 구성하게 하되, 하나 이상의 페이지의 개수는 결정된 페이지의 수에 기초한다.
실시예에서, 하나 이상의 프로세서는 또한 컴퓨팅 장치로 하여금 적어도:
하나 이상의 페이지의 콘텐츠를 비휘발성 저장 장치의 예비 부분으로 이송하게 한다.
실시예에서, 하나 이상의 페이지의 콘텐츠는 배터리의 에너지량의 감소를 나타내는 정보를 수신하는 것에 응답하여 이송된다.
실시예에서, 운영체제 구성하는 것은 휘발성 메모리의 하나 이상의 페이지에 대응하는 비휘발성 메모리의 하나 이상의 페이지를 나타내는 정보로 구성 인터페이스 데이터를 업데이트하는 것을 포함한다.
실시예에서, 컴퓨팅 장치의 메모리를 사용하는 방법은:
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보를 얻는 단계와,
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 이용 가능한 에너지의 양을 나타내는 정보를 수신하는 단계와,
필요한 에너지의 양에 적어도 부분적으로 기초하여, 휘발성 메모리의 페이지의 콘텐츠가 이용가능한 에너지의 양을 사용하여 비휘발성 메모리로 이송가능하다는 것을 결정하는 단계와,
휘발성 메모리의 페이지를 비휘발성 메모리의 페이지로서 처리하도록 컴퓨팅 장치의 운영체제를 구성하는 단계를 포함한다.
실시예에서, 방법은:
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리의 예비 부분으로 이송하는 단계를 더 포함한다.
실시예에서, 방법은:
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 이용 가능한 에너지량의 감소를 나타내는 정보를 수신하는 것에 응답하여 휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리의 예비 부분으로 이송하는 단계를 더 포함한다.
실시예에서, 운영체제를 구성하는 단계는 휘발성 메모리의 하나 이상의 페이지에 대응하는 비휘발성 메모리의 하나 이상의 페이지를 나타내는 정보로 구성 인터페이스 데이터를 업데이트하는 단계를 포함한다.
실시예에서, 방법은:
컴퓨팅 장치의 성능 모드 및 안전 모드 중 적어도 하나를 나타내는 정보에 적어도 부분적으로 기초하여 휘발성 메모리의 페이지의 콘텐츠가 비휘발성 메모리로 이송가능한 것으로 결정하는 단계를 더 포함한다.
실시예에서, 방법은:
유틸리티 전원에서 배터리 전원으로 전환된 컴퓨팅 장치를 나타내는 정보를 수신하는 단계와,
컴퓨팅 장치가 유틸리티 전원에서 배터리 전원으로 전환된 이후 경과된 시간의 길이에 적어도 부분적으로 기초하여 휘발성 메모리의 페이지를 비휘발성 메모리로 취급하도록 운영체제를 구성하는 단계와,
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는 단계를 더 포함한다.
실시예에서, 휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보는 휘발성 메모리의 페이지로부터 비휘발성 메모리로의 직접 메모리 액세스 이송을 수행함으로써 소모된 에너지에 적어도 부분적으로 기초한다.
실시예에서, 휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보는 프로세서가 페이지의 콘텐츠를 이송하기 위한 동작을 개시함으로써 소비된 에너지에 적어도 부분적으로 기초한다.
실시예에서, 방법은:
운영체제에 의해 비휘발성 메모리 페이지로 취급되도록 구성된 휘발성 메모리의 다른 페이지의 수에 적어도 부분적으로 기초하여 휘발성 메모리의 페이지의 콘텐츠가 이송가능하다고 결정하는 단계를 더 포함한다.
실시예에서, 방법은,
휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 이용 가능한 에너지를 사용하여 비휘발성 메모리로 이송가능한 휘발성 메모리의 페이지의 최대 수를 결정하는 단계를 더 포함한다.
실시예에서, 컴퓨터 판독가능 저장 매체는 컴퓨터 실행가능 명령어를 저장하며, 이 컴퓨터 실행가능 명령어는 컴퓨터에 의해 실행되는 경우 컴퓨터로 하여금 적어도:
휘발성 메모리의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보를 획득하고,
휘발성 메모리의 콘텐츠를 비휘발성 메모리로 이송하는데 이용가능한 에너지의 양을 나타내는 정보를 수신하고,
필요한 에너지의 양에 적어도 부분적으로 기초하여, 이용가능한 에너지의 양을 이용하여 비휘발성 메모리로 이송가능한 휘발성 메모리의 일부를 식별하고,
휘발성 메모리의 일부를 비휘발성 메모리로 취급하도록 컴퓨터의 운영체제를 구성하게 한다.
실시예에서, 컴퓨터 판독가능 저장 매체는 컴퓨터에 의한 실행시 컴퓨터로 하여금 적어도:
이용가능한 에너지의 양을 이용하여 비휘발성 메모리로 이송될 수 있는 메모리의 양을 적어도 결정함으로써 비휘발성 메모리로 이송가능한 휘발성 메모리의 부분을 식별하게 하는 명령어를 더 포함한다.
실시예에서, 컴퓨터 판독가능 저장 매체는 컴퓨터에 의한 실행시에 컴퓨터로 하여금 적어도:
유틸리티 전원이 중단된 경우, 휘발성 메모리의 일부분이 이용가능한 에너지의 양을 사용하여 비휘발성 메모리로 이송가능할 통계적 확률을 계산하게 하는 명령어를 더 포함한다.
실시예에서, 컴퓨터 판독가능 저장 매체는 컴퓨터에 의한 실행시에 컴퓨터로 하여금 적어도:
휘발성 메모리의 콘텐츠를 비휘발성 메모리로 이송하는데 이용가능한 에너지량의 감소를 나타내는 정보를 수신하는 것에 응답하여 휘발성 메모리의 일부를 비휘발성 메모리의 예비 부분으로 이송하게 하는 명령어를 더 포함한다.
실시예에서, 운영체제는 적어도 운영체제에 의해 액세스되는 구성 및 인터페이스 데이터를 업데이트함으로써 휘발성 메모리의 일부분을 비휘발성 메모리로서 취급하도록 구성된다.
실시예에서, 휘발성 메모리의 일부분은 휘발성 메모리의 일부에 저장된 데이터와 호환가능한 커밋 모드를 나타내는 정보를 컴퓨터상에서 실행되는 애플리케이션에 적어도 제공함으로써 운영체제에 의해 비휘발성 메모리로서 취급된다.
본 개시의 양상들은 하나 이상의 컴퓨팅 장치 또는 환경상에서 구현될 수 있다. 도 11은 본 명세서에 설명된 기술 중 일부가 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한다. 컴퓨팅 장치(1102)는 적절한 컴퓨팅 환경의 일 예일 뿐이며, 본 개시된 주제의 사용 또는 기능의 범위에 대한 임의의 제한을 제시하려는 것은 아니다. 컴퓨팅 환경에 대한 설명은 예시적인 컴퓨팅 장치(1102)에 도시된 컴포넌트 중 임의의 하나 또는 조합과 관련된 임의의 의존성 또는 요구사항을 암시하는 것으로 해석되어서는 안된다. 일부 실시예에서, 다양한 도시된 컴퓨팅 요소들은 본 개시의 특정 양상들을 인스턴스화하도록 구성된 회로를 포함할 수 있다. 예를 들어, 본 명세서에 사용된 회로라는 용어는 펌웨어 또는 스위치에 의해 기능(들)을 수행하도록 구성된 특수 하드웨어 컴포넌트를 포함할 수 있다. 다른 실시예에서, 회로라는 용어는 기능(들)을 수행하도록 동작 가능한 로직을 구현하는 소프트웨어 명령어에 의해 구성된 범용 프로세싱 유닛, 메모리 등을 포함할 수 있다. 회로가 하드웨어와 소프트웨어의 조합을 포함하는 예시적인 실시예에서, 구현자는 로직을 구현하는 소스 코드를 작성할 수 있고 이 소스 코드는 범용 프로세싱 유닛에 의해 처리될 수 있는 머신 판독가능 코드로 컴파일될 수 있다. 당업자는 하드웨어, 소프트웨어, 또는 하드웨어/소프트웨어의 조합 사이의 차이가 거의 없는 지점까지 기술이 진화되었음을 알 수 있으므로, 특정 기능을 수행하기 위한 하드웨어 대 소프트웨어의 선택은 구현자에게 남겨진 설계 선택사항이다. 보다 구체적으로, 당업자라면, 소프트웨어 프로세스가 등가의 하드웨어 구조로 변형될 수 있고, 하드웨어 구조 자체가 등가의 소프트웨어 프로세스로 변형될 수 있음을 알 수 있다. 따라서, 하드웨어 구현 대 소프트웨어 구현의 선택은 설계 선택 중 하나이며 구현자의 몫이다.
이동 장치, 스마트폰, 태블릿, 랩톱, 데스크톱 컴퓨터 등을 포함할 수 있는 컴퓨팅 장치(1102)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨팅 장치(1102)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있고 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 본 명세서에서 사용된 바와 같이, 매체 및 컴퓨터 판독가능 매체는 전파되는 또는 일시적인 신호 그 자체를 포함하지 않는다.
시스템 메모리(1122)는 판독 전용 메모리("ROM")(1123) 및 랜덤 액세스 메모리("RAM")(1160)와 같은 메모리의 형태의 컴퓨터 판독가능 저장 매체를 포함한다. RAM 메모리(1160)는 듀얼 인라인 메모리 모듈("DFMM")과 같은 휘발성 메모리 모듈을 포함할 수 있다. 시스템 메모리(1122)의 RAM(1160) 부분은 때때로 메인 메모리로 지칭될 수 있다. RAM(1160)은 전형적으로 프로세서(1159)에 즉시 액세스가능하고 및/또는 현재 프로세서(1159)에 의해 동작되는 데이터 및/또는 프로그램 모듈을 포함한다. 제한이 아닌 예로서, 도 11은 운영체제(1025), 애플리케이션 프로그램(1126), 다른 프로그램 모듈(1127) 및 프로그램 데이터(1128)를 도시한다.
프로세서(1159)는 전형적으로 때때로 코어라고 불리는 적어도 하나의 1차 프로세싱 유닛 및 때로는 언코어라고 불리는 적어도 하나의 시스템 에이전트를 포함한다. 프로세서(1159)의 코어는 일반적으로 컴퓨터 실행가능 명령어를 실행하는 반면, 언코어는 메모리 전송을 감독하고 프로세서 캐시를 유지하는 것을 포함할 수 있는 관련 태스크를 수행한다. 언코어는 프로세서(1159)의 코어와 시스템 메모리(1122) 사이를 인터페이싱하기 위한 메모리 제어기를 포함할 수 있다.
예를 들어 시동 중일 때 컴퓨팅 장치(1102) 내의 컴포넌트들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(1124)("BIOS")은 일반적으로 ROM(1123)에 저장된다. BIOS(1124)는 다양한 실시 예에서 다른 펌웨어로 대체될 수 있다.
컴퓨팅 장치(1102)는 또한 비휘발성 저장 장치를 포함할 수 있다. 단지 예로서, 도 11은 비분리형의 비휘발성 자기 매체에 대해 판독 또는 기록 동작을 행하는 하드 디스크 드라이브(1138), 및 CD ROM 또는 다른 광학 매체와 같은 분리형의 비휘발성 광학 디스크(1153)에 대해 판독 또는 기록 동작을 행하는 광학 디스크 드라이브(1114)를 도시한다. 예시적인 동작 환경에서 사용될 수 있는 다른 비휘발성 저장 장치는 플래시 메모리, 디지털 다기능 디스크, 고체 상태 디스크 드라이브 등을 포함하지만 이에 한정되지는 않는다. 하드 디스크 드라이브(1138)는 전형적으로 인터페이스(1134)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(1121)에 연결되고, 광학 디스크 드라이브(1104)는 전형적으로 인터페이스(1135)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(1121)에 연결된다.
앞서 설명되고 도 11에 도시된 드라이브 및 관련 컴퓨터 저장 매체는 컴퓨팅 장치(1102)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(1138)는 운영체제(1158)의 명령어, 애플리케이션 프로그램(1157), 다른 프로그램 모듈(1156) 및 프로그램 데이터(1155)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 운영체제(1125), 애플리케이션 프로그램(1126), 다른 프로그램 모듈(1127) 및 프로그램 데이터(1128)와 동일하거나 상이할 수 있음을 알아야 한다. 운영체제(1158), 애플리케이션 프로그램(1157), 다른 프로그램 모듈(1156) 및 프로그램 데이터(1155)는 최소한 이들이 상이한 사본임을 나타내기 위해 본 명세서에서는 상이한 참조번호가 주어진다. 사용자는 사용자 입력 장치(1152)를 통해 명령 및 정보를 컴퓨팅 장치(1102)에 입력할 수 있다. 사용자 인터페이스 장치(1152)는 키보드, 터치 패드, 컴퓨터 마우스, 트랙볼 등을 포함할 수 있지만, 이에 한정되는 것은 아니다. 도시되어 있지 않은 다른 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 이들 및 그 밖의 다른 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(1136)를 통해 프로세싱 유닛(1159)에 연결되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스 및 버스 구조에 의해 연결될 수 있다. 스크린(1142) 또는 다른 유형의 디스플레이 장치도 GPU(1129)를 통해 접속되지만, 일부 경우 스크린(1142)은 시스템 버스(1121) 또는 다른 인터페이스를 통해 구동될 수 있다. 모니터 외에, 컴퓨터는 또한 입/출력 인터페이스(1133)를 통해 접속될 수 있는 스피커, 프린터 등과 같은 다른 주변 입/출력 장치를 포함할 수 있다. 배터리(1184)는 또한 입/출력 인터페이스(1133)에 의해 시스템에 접속될 수 있다. 배터리(1184)는 입/출력 인터페이스(1133)를 통해 정보를 송신 및 수신할 수 있다. 이 정보는 배터리(1134)에서 이용 가능한 에너지의 양, 유틸리티 전원(1182)의 상태, 배터리(1134)의 수명 등과 같은 상태 정보를 포함할 수 있다.
전원 공급장치(1180)는 컴퓨팅 장치(1102)의 컴포넌트에 대한 전력 전달을 제어할 수 있다. 전력 전달은 때로는 다른 컴포넌트에 대해서는 유지하면서 특정 컴포넌트에 대해 중단될 수 있다. 전력의 중단은 유효 컴포넌트에 대한 에너지의 흐름에서 전체적인 또는 부분적인 중단을 수반할 수 있으며, 따라서 컴포넌트가 저전력 상태가 되게 하는 것을 포함할 수 있다.
전원 공급장치(1180)는 유틸리티 전원(1182) 또는 배터리(1184)로부터 전력을 수신할 수 있다. 유틸리티 전원(1182)은 컴퓨팅 장치(1102)의 동작 기간 동안 일반적으로 이용가능하다고 여겨질 수 있는 임의의 전원을 지칭할 수 있다. 배터리(1184)는 유틸리티 전원(1182)이 중단되는 경우 백업 전력을 제공하도록 의도된 임의의 전원을 포함할 수 있다.
컴퓨팅 장치(1102)는 원격 컴퓨터(1146)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(1146)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 컴퓨팅 노드일 수 있으며, 전형적으로 컴퓨팅 장치(1102)와 관련하여 전술한 요소들 중 다수 또는 전부를 포함한다. 도 11에 도시된 연결은 근거리 통신망, 광역 통신망, 셀룰러 통신망 및 메쉬 통신망 또는 그 밖의 다른 유형의 네트워크를 포함할 수 있는 네트워크(1145)를 포함한다.
또한, 다양한 항목들이 사용되는 동안 메모리 또는 저장 장치에 저장되는 것으로 도시되고, 이들 항목 또는 그 일부는 메모리 관리 및 데이터 무결성의 목적으로 메모리와 다른 저장 장치들 사이에서 전송될 수 있음을 이해할 것이다. 대안적으로, 다른 실시예에서, 소프트웨어 모듈들 및/또는 시스템들 중 일부 또는 전부는 다른 장치상의 메모리에서 실행될 수 있고, 컴퓨터 간 통신을 통해 도시된 컴퓨팅 시스템들과 통신할 수 있다. 또한, 일부 실시예에서, 시스템 및/또는 모듈의 일부 또는 전부는 적어도 부분적으로는 펌웨어 방식 및/또는 하드웨어 방식과 같은 다른 방식으로 구현되거나 제공될 수 있되, 이러한 펌웨어 및/또는 하드웨어는 하나 이상의 애플리케이션 특정 집적 회로(ASIC), (예를 들어, 적절한 명령어를 실행하고 마이크로제어기 및/또는 내장형 제어기를 포함하는) 제어기, 필드 프로그램가능 게이트 어레이(FPGA), 복합 프로그램가능 로직 장치(Complex Programmable Logic Device:CPLD) 등을 포함하되 이에 제한되지는 않는다. 또한, 모듈, 시스템 및 데이터 구조 중 일부 또는 전부는 적절한 드라이브에 의해 또는 적절한 연결을 통해 판독될 하드 디스크, 메모리, 네트워크 또는 휴대용 매체 물품과 같은 컴퓨터 판독 가능 매체 상에 (예를 들어, 소프트웨어 명령어 또는 구조화된 데이터로서) 저장될 수 있다. 시스템, 모듈 및 데이터 구조는 또한 무선 기반 및 유선/케이블 기반 매체를 포함하는 다양한 컴퓨터 판독가능 전송 매체 상에서 생성된 데이터 신호로서 (예를 들어, 반송파 또는 다른 아날로그 또는 디지털 전파 신호의 일부로서) 전송될 수 있고, 다양한 형식(예를 들어, 단일 또는 다중화된 아날로그 신호의 일부 또는 다수의 개별 디지털 패킷 또는 프레임)을 취할 수 있다. 이러한 컴퓨터 프로그램 제품은 다른 실시예에서는 다른 형태를 취할 수도 있다. 따라서, 본 개시는 다른 컴퓨터 시스템 구성으로 실시될 수 있다.
본 명세서에서 설명된 프로세스들, 방법들 및 알고리즘들 각각은 메모리에 로딩되고 컴퓨팅 장치의 하나 이상의 프로세서들에 의해 실행되는 컴퓨터 실행가능 명령어들을 포함하는 모듈들로 구현될 수 있고, 이들 모듈에 의해 완전히 또는 부분적으로 자동화될 수 있다. 프로세스 및 알고리즘은 또한 애플리케이션 특정 회로로 전체적으로 또는 부분적으로 구현될 수 있다. 개시된 프로세스 및 프로세스 단계의 결과는 예를 들어 휘발성 또는 비휘발성 저장 장치와 같은 임의의 유형의 컴퓨터 저장 장치에 지속적으로 또는 그와 다른 방식으로 저장될 수 있다. 본 명세서에 사용된 휘발성 및 비휘발성 저장 장치는 전파 신호 또는 일시적 신호 그 자체는 제외한다.
본 명세서에서 설명된 다양한 특징 및 프로세스는 서로 독립적으로 사용될 수 있거나, 다양한 방식으로 결합될 수 있다. 모든 가능한 조합 및 부 조합은 본 개시의 범위 내에 속한다. 또한, 일부 구현예에서는 프로세스, 방법 및 알고리즘의 특정 요소가 생략될 수도 있다. 본원에 기술된 방법 및 프로세스는 또한 임의의 특정 시퀀스로 제한되지 않으며 그에 관련된 블록 또는 상태를 포함하는 설명은 적절한 다른 시퀀스로 수행될 수 있다. 예를 들어, 설명된 블록 또는 상태는 구체적으로 개시된 순서 이외의 순서로 수행될 수 있거나, 다수의 블록 또는 상태가 단일 블록 또는 상태로 결합될 수 있다. 예시적인 블록들 또는 상태들은 직렬, 병렬 또는 다른 방식으로 수행될 수 있다. 블록들 또는 상태들은 개시된 예시적인 실시 예들에 추가되거나 제거될 수 있다. 본원에 기술된 예시적인 시스템 및 컴포넌트는 설명된 것과 다르게 구성될 수 있다. 예를 들어, 개시된 예시적인 실시예와 비교하여 구성요소가 추가되거나 제거되거나 재배열될 수 있다.
"할 수 있다", "할 수도 있다", "할 수도 있을 것이다", "할 수 있을지도 모른다", "예를 들어" 등의 조건부 언어는, 특별히 다르게 언급하지 않는다면, 또는 사용되는 문맥 내에서 다르게 이해되지 않는다면, 특정 실시예가 어떤 특징, 요소 및/또는 단계를 포함하지만 다른 실시예는 포함하지 않는다는 것을 일반적으로 전달하고자 한다. 따라서, 그러한 조건부 언어는 일반적으로, 특징, 요소 및/또는 단계가 하나 이상의 실시예에 대해 요구되는 임의의 방식 내에 있다는 것, 또는 하나 이상의 실시예가 이들 특징, 요소 및/또는 단계는 임의의 특정 실시예에 포함되거나 그 실시예에서 수행되어야 하는지 여부를, 저자 입력 또는 프롬프트 있이 또는 없이 결정하기 위한 논리를 반드시 포함한다는 것을 암시하려는 것은 아니다. "포함하는(comprising)", "포함하는(including)", "갖는" 등의 용어는 동의어이며 제한없는 방식으로 포괄적으로 사용되며, 추가적인 요소, 특징, 행위, 동작 등을 배제하지 않는다. 또한, "또는"이라는 용어는 포괄적인 의미로 사용되며(배타적인 의미는 아님), 따라서 예를 들어 요소들 목록을 연결하는 데 사용될 때, "또는"이라는 용어는 그 목록 내의 요소들 중 하나, 일부 또는 전부를 의미한다.
본 명세서에 제시된 실시예는 예로서 제시된 것이며, 본 개시의 범위를 제한하고자 하는 것은 아니다. 따라서, 전술한 설명에서 임의의 특정 특징, 특성, 단계, 모듈 또는 블록이 요구되고, 필요하며 필수적이라는 것을 암시하는 것은 아니다. 본원에 기술된 방법 및 시스템은 다양한 형태로 구현될 수 있다. 본원에 기재된 방법 및 시스템의 형태에서 다양한 생략, 대체 및 변경이 본 명세서에 개시된 것의 사상을 벗어나지 않고 이루어질 수 있다. 첨부된 청구 범위 및 그 등가물은 본 명세서에 개시된 특정 실시 예의 범위 및 사상 내에 있는 그러한 형태 또는 수정을 포괄하고자 한다.
본 발명이 구조적 특징들 및/또는 동작들에 특정한 언어로 기술되었지만, 첨부된 청구항에 정의된 주제가 반드시 상술한 특정 특징들 또는 동작들에 제한되는 것은 아니라는 것을 이해해야 한다. 오히려, 상술한 특정 특징 및 동작은 청구범위를 구현하는 예로서 개시되고 다른 동등한 특징 및 동작은 청구범위의 범위 내에 있는 것으로 의도된다.

Claims (15)

  1. 컴퓨팅 장치로서,
    복수의 페이지로 논리적으로 분할된 휘발성 메모리와,
    비휘발성 저장 장치- 상기 복수의 페이지 중의 페이지의 콘텐츠는 메모리 이송 동작에 의해 상기 비휘발성 저장 장치로 이송가능함 -와,
    상기 컴퓨팅 장치의 운영체제와,
    하나 이상의 프로세서를 포함하되,
    상기 하나 이상의 프로세서는 상기 컴퓨팅 장치로 하여금 적어도:
    상기 컴퓨팅 장치에 의해 사용가능한 배터리 내의 에너지의 양을 나타내는 정보를 수신하고,
    상기 메모리 이송 동작을 수행하는데 필요한 에너지의 양을 결정하고,
    상기 메모리 이송 동작을 수행하는데 필요한 상기 에너지의 양에 적어도 부분적으로 기초하여, 상기 컴퓨팅 장치에 의해 이용가능한 상기 에너지의 양을 사용하여 상기 비휘발성 저장 장치로 이송가능한 콘텐츠를 갖는 상기 복수의 페이지 중의 페이지의 수를 결정하며,
    상기 휘발성 메모리의 상기 복수의 페이지 중 하나 이상의 페이지를 비휘발성 메모리로 취급하도록 상기 운영체제를 구성하게 하되, 상기 하나 이상의 페이지의 개수는 상기 결정된 페이지의 수에 기초하는
    컴퓨팅 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 프로세서는 또한 상기 컴퓨팅 장치로 하여금 적어도:
    상기 하나 이상의 페이지의 콘텐츠를 상기 비휘발성 저장 장치의 예비 부분으로 이송하게 하는
    컴퓨팅 장치.
  3. 제2항에 있어서,
    상기 하나 이상의 페이지의 콘텐츠는 상기 배터리의 에너지량의 감소를 나타내는 정보를 수신하는 것에 응답하여 이송되는
    컴퓨팅 장치.
  4. 제1항에 있어서,
    상기 운영체제 구성하는 것은 휘발성 메모리의 하나 이상의 페이지에 대응하는 비휘발성 메모리의 하나 이상의 페이지를 나타내는 정보로 구성 인터페이스 데이터를 업데이트하는 것을 포함하는
    컴퓨팅 장치.
  5. 컴퓨팅 장치의 메모리를 사용하는 방법으로서,
    휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보를 얻는 단계와,
    상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리로 이송하는데 이용 가능한 에너지의 양을 나타내는 정보를 수신하는 단계와,
    상기 필요한 에너지의 양에 적어도 부분적으로 기초하여, 상기 휘발성 메모리의 페이지의 콘텐츠가 상기 이용가능한 에너지의 양을 사용하여 상기 비휘발성 메모리로 이송가능하다는 것을 결정하는 단계와,
    상기 휘발성 메모리의 페이지를 비휘발성 메모리의 페이지로서 처리하도록 상기 컴퓨팅 장치의 운영체제를 구성하는 단계를 포함하는
    방법.
  6. 제5항에 있어서,
    상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리의 예비 부분으로 이송하는 단계를 더 포함하는
    방법.

  7. 제5항에 있어서,
    상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리로 이송하는데 이용 가능한 에너지량의 감소를 나타내는 정보를 수신하는 것에 응답하여 상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리의 예비 부분으로 이송하는 단계를 더 포함하는
    방법.
  8. 제5항에 있어서,
    상기 운영체제를 구성하는 단계는 휘발성 메모리의 하나 이상의 페이지에 대응하는 비휘발성 메모리의 하나 이상의 페이지를 나타내는 정보로 구성 인터페이스 데이터를 업데이트하는 단계를 포함하는
    방법.
  9. 제5항에 있어서,
    컴퓨팅 장치의 성능 모드 및 안전 모드 중 적어도 하나를 나타내는 정보에 적어도 부분적으로 기초하여 상기 휘발성 메모리의 페이지의 콘텐츠가 상기 비휘발성 메모리로 이송가능한 것으로 결정하는 단계를 더 포함하는
    방법.
  10. 제5항에 있어서,
    유틸리티 전원에서 배터리 전원으로 전환된 상기 컴퓨팅 장치를 나타내는 정보를 수신하는 단계와,
    상기 컴퓨팅 장치가 상기 유틸리티 전원에서 상기 배터리 전원으로 전환된 이후 경과된 시간의 길이에 적어도 부분적으로 기초하여 상기 휘발성 메모리의 페이지를 비휘발성 메모리로 취급하도록 운영체제를 구성하는 단계와,
    상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리로 이송하는 단계를 더 포함하는
    방법.
  11. 제5항에 있어서,
    휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 상기 정보는 상기 휘발성 메모리의 페이지로부터 상기 비휘발성 메모리로의 직접 메모리 액세스 이송을 수행함으로써 소모된 에너지에 적어도 부분적으로 기초하는
    방법.
  12. 제5항에 있어서,
    휘발성 메모리의 페이지의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 상기 정보는 프로세서가 상기 페이지의 콘텐츠를 이송하기 위한 동작을 개시함으로써 소비된 에너지에 적어도 부분적으로 기초하는
    방법.
  13. 제5항에 있어서,
    상기 운영체제에 의해 비휘발성 메모리 페이지로 취급되도록 구성된 휘발성 메모리의 다른 페이지의 수에 적어도 부분적으로 기초하여 상기 휘발성 메모리의 페이지의 콘텐츠가 이송가능하다고 결정하는 단계를 더 포함하는
    방법.
  14. 제5항에 있어서,
    상기 휘발성 메모리의 페이지의 콘텐츠를 상기 비휘발성 메모리로 이송하는데 이용 가능한 에너지를 사용하여 상기 비휘발성 메모리로 이송가능한 휘발성 메모리의 페이지의 최대 수를 결정하는 단계를 더 포함하는
    방법.
  15. 컴퓨터 실행가능 명령어를 저장한 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는 컴퓨터에 의해 실행되는 경우 상기 컴퓨터로 하여금 적어도:
    휘발성 메모리의 콘텐츠를 비휘발성 메모리로 이송하는데 필요한 에너지의 양을 나타내는 정보를 획득하고,
    상기 휘발성 메모리의 콘텐츠를 상기 비휘발성 메모리로 이송하는데 이용가능한 에너지의 양을 나타내는 정보를 수신하고,
    상기 필요한 에너지의 양에 적어도 부분적으로 기초하여, 상기 이용가능한 에너지의 양을 이용하여 상기 비휘발성 메모리로 이송가능한 상기 휘발성 메모리의 일부를 식별하며,
    상기 휘발성 메모리의 상기 일부를 비휘발성 메모리로 취급하도록 상기 컴퓨터의 운영체제를 구성하게 하는
    컴퓨터 판독가능 저장 매체.
KR1020187015412A 2016-01-22 2017-01-20 휘발성 메모리를 비휘발성 메모리로 사용하는 기법 KR20180102057A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/004,830 US9746895B2 (en) 2016-01-22 2016-01-22 Use of volatile memory as non-volatile memory
US15/004,830 2016-01-22
PCT/US2017/014377 WO2017127709A1 (en) 2016-01-22 2017-01-20 Use of volatile memory as non-volatile memory

Publications (1)

Publication Number Publication Date
KR20180102057A true KR20180102057A (ko) 2018-09-14

Family

ID=57956418

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187015412A KR20180102057A (ko) 2016-01-22 2017-01-20 휘발성 메모리를 비휘발성 메모리로 사용하는 기법

Country Status (18)

Country Link
US (2) US9746895B2 (ko)
EP (1) EP3405858A1 (ko)
JP (1) JP7054384B2 (ko)
KR (1) KR20180102057A (ko)
CN (1) CN108369488B (ko)
AU (1) AU2017210226B2 (ko)
BR (1) BR112018010704A8 (ko)
CA (1) CA3003486C (ko)
CL (1) CL2018001390A1 (ko)
CO (1) CO2018005630A2 (ko)
HK (1) HK1256100A1 (ko)
IL (1) IL259104B (ko)
MX (1) MX2018006388A (ko)
PH (1) PH12018550054A1 (ko)
RU (1) RU2739722C2 (ko)
SG (1) SG11201803670UA (ko)
WO (1) WO2017127709A1 (ko)
ZA (1) ZA201802763B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9760147B2 (en) 2016-01-22 2017-09-12 Microsoft Technology Licensing, Llc Power control for use of volatile memory as non-volatile memory
US10496443B2 (en) 2017-05-03 2019-12-03 Vmware, Inc. OS/hypervisor-based persistent memory
US10474550B2 (en) 2017-05-03 2019-11-12 Vmware, Inc. High availability for persistent memory

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01241653A (ja) * 1988-03-24 1989-09-26 Matsushita Graphic Commun Syst Inc メモリー・バックアップ・システム
JPH0467219A (ja) * 1990-07-09 1992-03-03 Fujitsu Ltd 停電時における半導体記憶装置のデータ保護方式
JPH07271683A (ja) * 1994-03-31 1995-10-20 Fanuc Ltd データ保持方式
JPH07306839A (ja) * 1994-05-11 1995-11-21 Hitachi Ltd ネットワークファイルのアクセス高速化方法
US6957355B2 (en) 2002-09-18 2005-10-18 Sun Microsystems, Inc. Method and system for dynamically adjusting storage system write cache based on the backup battery level
GB0320142D0 (en) * 2003-08-28 2003-10-01 Ibm Data storage systems
US7051223B2 (en) * 2003-09-30 2006-05-23 International Business Madnine Corporation System, apparatus, and method for limiting non-volatile memory
US7805523B2 (en) * 2004-03-15 2010-09-28 Mitchell David C Method and apparatus for partial updating of client interfaces
EP1643506B1 (en) * 2004-10-04 2006-12-06 Research In Motion Limited System and method for automatically saving memory contents of a data processing device on power failure
JP4842563B2 (ja) * 2005-05-16 2011-12-21 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
JP2006323739A (ja) * 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7451348B2 (en) 2005-08-04 2008-11-11 Dot Hill Systems Corporation Dynamic write cache size adjustment in raid controller with capacitor backup energy source
CZ200627A3 (cs) * 2006-01-13 2007-09-12 Ažd Praha S. R. O. Způsob zachování bezpečného stavu elektronických bezpečnostně relevantních zařízení se složenou bezpečností při poruše
US9081669B2 (en) * 2006-04-27 2015-07-14 Avalanche Technology, Inc. Hybrid non-volatile memory device
US8200885B2 (en) * 2007-07-25 2012-06-12 Agiga Tech Inc. Hybrid memory system with backup power source and multiple backup an restore methodology
US8281169B2 (en) 2008-08-27 2012-10-02 Wireless Silicon Group, Inc. Method and system for power management for a handheld mobile electronic device executing-in-place an application kernel from execute-in-place non-volatile memory (XIP NVM)
US8468370B2 (en) * 2009-09-16 2013-06-18 Seagate Technology Llc Systems, methods and devices for control of the operation of data storage devices using solid-state memory and monitoring energy used therein
US8437808B2 (en) 2010-05-03 2013-05-07 Hewlett-Packard Development Company, L.P. Apparatus and methods for power management on mobile devices
US9037820B2 (en) * 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9317212B2 (en) 2012-12-18 2016-04-19 Intel Corporation Method and apparatus for controlling a storage device
US9098280B2 (en) 2012-12-28 2015-08-04 Intel Corporation Staged power distribution control
US20140229657A1 (en) * 2013-02-08 2014-08-14 Microsoft Corporation Readdressing memory for non-volatile storage devices
US9335809B2 (en) 2013-03-15 2016-05-10 Seagate Technology Llc Volatile memory storing system data during low power mode operation and monitoring the voltage supplied to the memory during low power mode
US9372759B2 (en) * 2014-06-16 2016-06-21 Samsung Electronics Co., Ltd. Computing system with adaptive back-up mechanism and method of operation thereof

Also Published As

Publication number Publication date
ZA201802763B (en) 2019-07-31
AU2017210226B2 (en) 2021-07-22
JP2019510284A (ja) 2019-04-11
SG11201803670UA (en) 2018-08-30
RU2018119717A3 (ko) 2020-06-30
AU2017210226A1 (en) 2018-05-17
CA3003486A1 (en) 2017-07-27
HK1256100A1 (zh) 2019-09-13
CA3003486C (en) 2024-01-16
IL259104B (en) 2021-09-30
US20170212573A1 (en) 2017-07-27
CO2018005630A2 (es) 2018-05-31
EP3405858A1 (en) 2018-11-28
US9746895B2 (en) 2017-08-29
US10359826B2 (en) 2019-07-23
JP7054384B2 (ja) 2022-04-13
BR112018010704A2 (pt) 2018-11-21
US20170329379A1 (en) 2017-11-16
NZ742061A (en) 2021-09-24
CN108369488B (zh) 2021-11-02
RU2739722C2 (ru) 2020-12-28
MX2018006388A (es) 2018-09-05
BR112018010704A8 (pt) 2019-02-26
RU2018119717A (ru) 2019-12-02
CN108369488A (zh) 2018-08-03
WO2017127709A1 (en) 2017-07-27
CL2018001390A1 (es) 2018-09-14
IL259104A (en) 2018-07-31
PH12018550054A1 (en) 2018-11-12

Similar Documents

Publication Publication Date Title
US10115442B2 (en) Demand-based provisioning of volatile memory for use as non-volatile memory
US10521006B2 (en) Report updated threshold level based on parameter
US10936038B2 (en) Power control for use of volatile memory as non-volatile memory
JP5075274B2 (ja) 電力認識スレッドスケジューリングおよびプロセッサーの動的使用
EP3649536B1 (en) Core frequency management using effective utilization for power-efficient performance
KR20180102057A (ko) 휘발성 메모리를 비휘발성 메모리로 사용하는 기법
US8959371B2 (en) Techniques for reducing processor power consumption through dynamic processor resource allocation
NZ742061B2 (en) Use of volatile memory as non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal