KR20160148689A - 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들 - Google Patents

비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들 Download PDF

Info

Publication number
KR20160148689A
KR20160148689A KR1020167033687A KR20167033687A KR20160148689A KR 20160148689 A KR20160148689 A KR 20160148689A KR 1020167033687 A KR1020167033687 A KR 1020167033687A KR 20167033687 A KR20167033687 A KR 20167033687A KR 20160148689 A KR20160148689 A KR 20160148689A
Authority
KR
South Korea
Prior art keywords
nvdimm
command
assertion
controller
volatile memory
Prior art date
Application number
KR1020167033687A
Other languages
English (en)
Other versions
KR101946458B1 (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 KR20160148689A publication Critical patent/KR20160148689A/ko
Application granted granted Critical
Publication of KR101946458B1 publication Critical patent/KR101946458B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

예들은 SMBus(system management bus) 인터페이스를 통하여 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하는 것을 포함할 수 있다. 일부 예들에서, SMBus 인터페이스를 통하여 액세스 가능한 레지스터들에 유지된 비트들의 선택적인 어설션은 제어기와의 통신을 가능하게 한다. 선택적인 어설션은 레지스터 맵에 기초할 수 있다.

Description

비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들{TECHNIQUES TO COMMUNICATE WITH A CONTROLLER FOR A NON-VOLATILE DUAL IN-LINE MEMORY MODULE}
본 명세서에 설명된 예들은 일반적으로 비휘발성 이중 인-라인 메모리 모듈(NVDIMM: non-volatile dual in-line memory module)에 관한 것이다.
서버로서 구성된 것들과 같은 컴퓨팅 플랫폼들 또는 시스템들과 연결된 메모리 모듈들은 이중 인-라인 메모리 모듈(DIMM)들을 포함할 수 있다. DIMM들은 휘발성 메모리의 타입들의 동적 랜덤 액세스 메모리(DRAM)를 포함할 수 있다. DRAM 기술들이 더욱더 높은 밀도를 갖는 메모리 셀들을 포함하도록 진보함에 따라, DIMM들의 메모리 용량은 실질적으로 증가되었다. DRAM은 휘발성 메모리이므로, 전원 공급 중단 또는 리셋(reset)은, DRAM에 유지된 데이터 전부는 아니더라도 대부분의 손실을, 전원 공급 중단 또는 리셋 시에 초래할 것이다. 또한, DRAM들을 위한 큰 메모리 용량은, 전원 공급 중단을 감지하고 데이터 손실을 방지 또는 감소시키려고 하는 운영 체제(OS) 또는 애플리케이션(예를 들어, 디바이스 드라이버)에 대해 도전과제를 제시한다.
전원 공급 중단 또는 리셋의 경우에, 데이터 손실을 완화하거나 감소시키기 위해, 휘발성 및 비휘발성 메모리 둘 다를 포함하는 타입의 메모리 모듈이 개발되었다. 이런 타입의 메모리 모듈은 일반적으로 비휘발성 DIMM(NVDIMM)으로서 지칭된다. 전형적으로, NVDIMM들은 DRAM 및 NAND 플래시의 조합체이다. NVDIMM들은, 전원 공급 중단 또는 갑작스러운 시스템 리셋의 경우에, NAND 플래시와 같은 비휘발성 메모리에 DRAM 콘텐츠를 백업함으로써 지속적인 저장을 제공할 수 있다. DRAM으로부터 비휘발성 메모리에 데이터를 백업하도록 충분히 오랫동안, NVDIMM에 전력을 유지하기 위해, 슈퍼-커패시터 패키지가 NVDIMM과 연결될 수 있다.
NVDIMM은, NVDIMM 활동들을 관리하거나 제어하기 위해 NVDIMM에 상주하거나, 또는 그것과 함께 존재하는 제어기를 가질 수 있다. NVDIMM 제어기는, NVDIMN에 있는 비휘발성 메모리로의 DRAM 콘텐츠의 저장(saving)을 관리할 수 있다. NVDIMM 제어기는 또한, 일단 시스템 전력이 복원되면, 비휘발성 메모리로부터 DRAM으로의 DRAM 콘텐츠의 복원(restoration)을 관리할 수 있다. NVDIMM 제어기는, DRAM 콘텐츠를 저장 또는 복원하기 위해, NVDIMM과 연결된 컴퓨팅 플랫폼을 위한 OS, 디바이스 드라이버, 애플리케이션 또는 기본 입력/출력 시스템(BIOS)과 협동하여 동작하도록 준비될 수 있다.
도 1은 예시적인 시스템을 도시한다.
도 2는 예시적인 제1 레지스터 맵 일부를 도시한다.
도 3은 예시적인 제2 레지스터 맵 일부를 도시한다.
도 4는 예시적인 제3 레지스터 맵 일부를 도시한다.
도 5는 예시적인 제4 레지스터 맵 일부를 도시한다.
도 6은 예시적인 제5 레지스터 맵 일부를 도시한다.
도 7은 예시적인 제6 레지스터 맵 일부를 도시한다.
도 8은 예시적인 제7 레지스터 맵 일부를 도시한다.
도 9는 예시적인 제8 레지스터 맵 일부를 도시한다.
도 10은 예시적인 제1 시퀀스를 도시한다.
도 11은 예시적인 제2 시퀀스를 도시한다.
도 12는 예시적인 제3 시퀀스를 도시한다.
도 13은 제1 장치의 예시적인 블록도를 도시한다.
도 14는 제1 논리 흐름의 예를 도시한다.
도 15는 제1 저장 매체의 예를 도시한다.
도 16은 제2 장치의 예시적인 블록도를 도시한다.
도 17은 제2 논리 흐름의 예를 도시한다.
도 18은 제2 저장 매체의 예를 도시한다.
도 19는 예시적인 컴퓨팅 플랫폼을 도시한다.
도 20은 예시적인 비휘발성 이중 인-라인 메모리 모듈 제어기를 도시한다.
본 개시내용에서 고려된 바와 같이, NVDIMM은, NVDIMM과 연결된 컴퓨팅 플랫폼을 위한 OS, 디바이스 드라이버, 애플리케이션 또는 BIOS와 협동하여 동작하도록 준비된 NVDIMM 제어기를 가질 수 있다. 일부 예들에서, 애플리케이션, 디바이스 드라이버 및/또는 BIOS는 NVDIMM 제어기와의 하나 이상의 통신 인터페이스를 통해 인터페이싱하거나 통신한다. NVDIMM 제어기와 인터페이싱하거나 통신할 때, 애플리케이션, 디바이스 드라이버 및/또는 BIOS는 NVDIMM에서 DRAM 콘텐츠를 비휘발성 메모리에 저장하기 위해서, 비휘발성 메모리의 콘텐츠를 DRAM에 복원하기 위해서, 기타 등등을 위해서, 커맨드들을 NVDIMM 제어기에 발행할 수 있다. NVDIMM들의 수많은 제조업자는, 그들 자신의 독점적(proprietary) 인터페이스들을 구현하여, 애플리케이션, 디바이스 드라이버 및/또는 BIOS와 같은 컴퓨팅 플랫폼 요소들과 통신할 수 있다. 수많은 독점적 인터페이스들의 사용은, NVDIMM들을 지원하도록 설계된 애플리케이션, 디바이스 드라이버 및/또는 BIOS와 같은 컴퓨팅 플랫폼 요소들의 상호운용성에 장애가 될 수 있고, 그것들의 설계자들에게 문제가 될 수 있다. 이러한 또는 다른 도전과제들에 관련해서, 본 명세서에 설명된 예들이 필요한 것이다.
NVDIMM을 위한 제어기와 통신하기 위한 기법들은 하나 이상의 예시적인 방법을 통해 구현될 수 있다. 제1 예시적인 방법은 상태 요청(status request)을 수신하는 제어기를 포함할 수 있다. 제어기는 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 것일 수 있고, 비휘발성 및 휘발성 메모리는 NVDIMM에 상주한다. 상태는 상태 요청에 응답하여 제어기에 의해 결정될 수 있고, 해당 상태는 제1 레지스터 세트(first set of registers)에 유지된 제1 비트 세트(first set of bits)의 선택적인 어설션(assertion)을 통해 지시될 수 있다. 이런 예시적인 제1 방법을 위해, 제1 레지스터 세트는 SMBus(system management bus) 인터페이스를 통하여 상태 요청의 요청자(requestor)(예를 들어, 애플리케이션, 디바이스 드라이버 또는 BIOS)에 의해 액세스 가능할 수 있다.
제2 예는 호스트 컴퓨팅 디바이스에서의 회로에 의해 구현되도록 준비된 디바이스 드라이버를 포함할 수 있다. 디바이스 드라이버는 상태 요청을 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에게 송신할 수 있고, 비휘발성 및 휘발성 메모리는 호스트 컴퓨팅 플랫폼과 연결된 NVDIMM에 상주할 수 있다. 이런 제2 예시적인 방법을 위해, 디바이스 드라이버는 SMBus 인터페이스를 통하여 제1 레지스터 세트에 유지된 제1 비트 세트에 액세스할 수 있다. 제1 비트 세트는, 상태 요청에 응답하여 레지스터 맵에 기초하여 제1 비트 세트의 선택적인 어설션을 통해 제어기에 의해 제공되는 상태를 지시할 수 있다.
도 1은 예시적인 시스템(100)을 도시한다. 도 1에 도시된 바와 같이, 시스템(100)은 통신 채널(115)을 통해 비휘발성 이중 인-라인 메모리 모듈(NVDIMM)(105)에 결합된 호스트 컴퓨팅 플랫폼(110)을 포함한다. 또한, 도 1에 도시된, 커패시터 팩(170)은 전력 링크(177)를 통해 NVDIMM(105)과 연결될 수 있다. 일부 예들에서, 도 1에 도시된 바와 같이, NVDIMM(105)은 또한, 호스트 인터페이스(120), NVDIMM 제어기(130), 제어 스위치(140), 휘발성 메모리(150) 또는 비휘발성 메모리(160)를 포함할 수 있다.
일부 예들에서, 호스트 컴퓨팅 플랫폼(110)은 호스트 컴퓨팅 플랫폼(110)의 다양한 기능적 요소들을 실행할 수 있는 회로(112)를 포함할 수 있고, 이 호스트 컴퓨팅 플랫폼은 기본 입력/출력 시스템(BIOS)(114), 디바이스 드라이버(116) 또는 애플리케이션(들)(앱(들))(118)을 포함하지만 이에 한정되지 않는다. 이러한 예들에서, 호스트 컴퓨팅 플랫폼(110)은 서버, 서버 어레이 또는 서버 팜(server farm), 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 가전기기, 웹 가전기기, 분산 컴퓨팅 시스템, 멀티프로세서 시스템들, 프로세서 기반의 시스템들 또는 그것들의 조합을 포함할 수 있지만 이에 한정되지 않는다.
일부 예들에 따르면, 도 1에 도시된 바와 같이, NVDIMM(105)에서의 호스트 인터페이스(120)는 시스템 관리 버스(SMBus) 인터페이스(122) 및 메모리 인터페이스(124)를 포함할 수 있다. SMBus 인터페이스(122)는 2000년 8월에 공개된 SMBus 사양, 버전 2.0("SMBus 사양")을 포함하기 위해 하나 이상의 표준들 또는 사양들(후계들 및 변형들을 포함함)에 따라 설계되거나 작동된다. 이하 더 설명된 바와 같이, 호스트 컴퓨팅 플랫폼(110)의 요소들은 SMBus 인터페이스(122)를 통하여 NVDIMM 제어기(130)와 통신할 수 있다. 또한, 컴퓨팅 플랫폼(110)의 요소들은 메모리 인터페이스(124)를 통하여 제어 채널(127)을 지나서 제어 스위치(140)를 통하고 나서 제어 채널(147)을 지나서 휘발성 메모리(150)에 액세스할 수 있다. 일부 예들에서, 휘발성 메모리(150)와 비휘발성 메모리(160) 사이에 연결된 메모리 채널(155)을 이용하여 비휘발성 메모리(160)로 또는 그것으로부터 휘발성 메모리(150)의 콘텐츠를 저장 또는 복원하기 위해, 휘발성 메모리(150)에 대한 액세스가 제어 채널(137)을 통해 NVDIMM 제어기(130)로 제어 스위치(140)에 의해 전환될 수 있다.
일부 예들에 따르면, 도 1에 도시된 바와 같이, NVDIMM 제어기(130)는 레지스터들(132) 및 회로(134)를 포함할 수 있다. 회로(134)는 호스트 컴퓨팅 플랫폼(110)의 요소들로부터 상태 요청을 수신하기 위해 컴포넌트들 또는 피처(feature)들을 실행할 수 있다. 이하 더 설명된 바와 같이, 상태 요청은 NVDIMM(105)의 다른 요소들(예를 들어, 비휘발성 메모리(160)) 또는 NVDIMM 제어기(130)의 상태와 관련될 수 있다. 컴포넌트들 또는 피처들은 또한, 상태 요청에 응답하여 상태를 결정할 수 있고, 그 후 레지스터 맵에 기초하여 레지스터들(132)에 유지된 비트들의 선택적인 어설션을 통해 해당 상태를 지시할 수 있다. 디바이스 드라이버(116)(요청자)와 같은 호스트 컴퓨팅 플랫폼(110)의 요청하는 요소는, 어느 비트들이 어설션되었는지를 결정하기 위해, SMBus 인터페이스(122)를 통하여 통신 링크(125)를 지나서 레지스터들(132)에 액세스할 수 있다. 그 후, 요청자는, 회로(134)에 의해 구현된 컴포넌트들 또는 피처들에 의해 어떤 상태가 지시되는지를 결정하기 위해, 레지스터 맵을 이용할 수 있다.
일부 예들에서, 휘발성 메모리(150)는, DRAM과 같은 다양한 타입들의 휘발성 메모리와 관련된 하나 이상의 표준들 또는 사양들(후계들 및 변형들을 포함함)과 협력하여 설계되거나 작동되는 휘발성 메모리를 포함할 수 있다. 예를 들어, 동기(synchronous) DDR DRAM(double data rate DRAM)과 같은 타입들의 DRAM이, 휘발성 메모리(150)에 포함될 수 있고, DDR DRAM과 관련된 표준들 또는 사양들이, DDR2, DDR3, DDR4 또는 미래의 DDR 세대들과 같은 다양한 세대들의 DDR을 위해 JEDEC Solid State Technology Association("JEDEC")에 의해 공표된 것들을 포함할 수 있다. 일부 예시적인 표준들 또는 사양들은 2012년 7월에 공개된 JESD79-3F - "DDR3 SDRAM 표준", 또는 2012년 9월에 공개된 JESD79-4 - "DDR4 SDRAM 표준"을 포함할 수 있지만 이에 한정되지 않는다.
일부 예들에 따르면, 비휘발성 메모리(160)는, NAND 플래시 메모리, NOR 플래시 메모리, 3-D 교차점 메모리(3-D cross-point memory), 강유전성 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 강유전성 폴리머 메모리와 같은 폴리머 메모리, 강유전성 트랜지스터 랜덤 액세스 메모리(FeTRAM 또는 FeRAM), 오보닉(ovonic) 메모리 또는 나노와이어를 포함하지만 이에 한정되지 않는 하나 이상의 타입의 비휘발성 메모리들을 포함할 수 있다. 또한, 일부 예들에서, 비휘발성 메모리(160)는 휘발성 메모리(150)의 전체 콘텐츠, 또는 가능하게는 휘발성 메모리(150)의 콘텐츠의 다중 복사본을 수신하기 위한 충분한 메모리 용량을 포함할 수 있다. 이러한 예들을 위해, 다중 복사본에 따라 사이즈 조정된 비휘발성 메모리(160)는, 휘발성 메모리(150)에 유지된 시간 기반의 데이터의 이미지들이 비휘발성 메모리(160)의 영역들에 저장되는 것을 허용할 수 있다. 이하 더 설명된 바와 같이, GUID(global unique identifier)들은 비휘발성 메모리(160)와 같은 비휘발성 메모리로부터 저장 또는 복원될 데이터를 할당받거나, 또는 그것과 관련될 수 있다. NVDIMM 제어기(130)는 휘발성 메모리(150)로부터, 또는 그것에, 시간 기반의 데이터를 저장 또는 복원하는 것을 용이하기 위해, 이러한 할당받은 GUID들을 사용할 수 있다.
일부 예들에서, 커패시터 팩(170)은 전력 링크(177)를 통해 적어도 일시적인 전력을 NVDIMM(105)에 제공하기 위해 하나 이상의 커패시터를 포함할 수 있다. 갑작스러운 전원 공급 중단 또는 시스템 리셋이 원인이 되어 NVDIMM(105)으로의 메인 전원이 중단 또는 차단되면, NVDIMM 제어기(130)가 휘발성 메모리(150)에 유지된 데이터를 비휘발성 메모리(160)에 저장되게 할 충분한 시간 동안 하나 이상의 커패시터는 NVDIMM(105)에 전력을 공급할 만큼 충분한 에너지를 저장할 수 있다. 갑작스러운 전원 공급 중단 또는 시스템 리셋으로 인한 비휘발성 메모리(160)로의 데이터 콘텐츠의 저장은, "재앙적 저장"으로 지칭될 수 있다.
도 2는 예시적인 제1 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 2에 도시된 바와 같이, 예시적인 제1 레지스터 맵 일부는 레지스터 맵 일부(200)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은, NVDIMM(105)를 위한 NVDIMM 제어기(130)와 같은, NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해, 레지스터 맵 일부(200)를 이용할 수 있다. 이러한 예들을 위해, 레지스터들(예를 들어, 레지스터들(132)로 유지됨)의 대응하는 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(200)에 기초할 수 있다. 또한, 시스템의 요소들은 SMBus 인터페이스(122)와 같은 SMBus 인터페이스를 통하여 레지스터들에의 판독 전용(RO) 또는 판독/기입(RW) 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들(예를 들어, 운영 체제)이 또한, NVDIMM 제어기와 통신하기 위해 레지스터 맵 일부(200)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 맵 일부(200)는 헤더와 관련될 수 있다. 헤더는, 예를 들어, NVDIMM 제어기 및/또는 NVDIMM의 능력들 및/또는 동작 파라미터들을 지시하는 데에 사용될 수 있다. 헤더는, 요청들 또는 커맨드들을 NVDIMM 제어기에 전달하는 데에 사용하기 위해, 전체 레지스터 맵의 하나 이상의 다른 부분을 해석(interpret)하기 위한 정보도 포함할 수 있다. 도 2에 도시된 바와 같이, 다양한 비트 세트들은, 특정한 오프셋들, 길이들(byte로 나타냄), 및 호스트 컴퓨팅 플랫폼(요청자)의 요소들의 관점에서 판독/기입(RW) 또는 판독 전용(RO)과 같은 액세스 권한들을 갖는 대응하는 필드명들과 관련될 수 있다. 또한, 도 2에는 개별적으로(예를 들어, 단일 비트) 또는 그룹으로(예를 들어, 다중 비트) 중 어느 하나로, 선택적인 어설션이 이루어질 수 있는 비트 세트 각각에 대한 설명이 도시된다.
일부 예들에서, 도 2에 도시된 바와 같이, PAGE_NUM은 0x00(16진수)의 오프셋 값을 갖고, 길이는 1이고, RW 액세스를 갖는다. 이러한 예들을 위해, PAGE_NUM 필드의 비트들은, 요청자가 BIT[2:0]에서 페이지 번호와, BIT[5:0]에서 최대 페이지 수(maximum number of pages)를 지시하도록 허용하고, 가능한 미래의 변경들을 위한 BIT[7:6]를 예약하는 RW 액세스를 갖는, 레지스터 맵 일부(200) 내의 유일한 비트들이다.
일부 예들에 따르면, 도 2에 도시된 바와 같이, 오프셋 0x01 내지 0x03과 관련된 필드들은 하드웨어 및 펌웨어 개정 정보를 각각 지시한다. 오프셋 0x04 내지 0x19와 관련된 필드들은 NVDIMM 제어기, 비휘발성 메모리, 휘발성 메모리 및 커패시터 패키지와 같은 NVDIMM의 요소들과 관련된 동작 파라미터들을 지시하는 데에 사용될 수 있다.
일부 예들에서, SAVE 영역들의 수(Number of SAVE regions) 필드는, 다양한 시점에 휘발성 메모리(DRAM) 콘텐츠의 다중 복사본을 저장하기 위한, NVDIMM에서의 저장 영역들의 수를 특정할 수 있다. 이러한 예들을 위해, NVDIMM은 적어도 하나의 영역(예를 들어, REGION-0으로 식별됨)을 지원할 수 있다. 다시 말해서, 비휘발성 메모리(예를 들어, NAND 플래시)는 적어도 하나의 영역에서 DRAM의 모든 콘텐츠의 복사본을 저장할 만큼 충분히 큰 메모리 용량을 가질 수 있다. 또한, 오프셋 0x08 및 0x0A에 지시된 SAVE 대기 시간 및 RESTORE 대기 시간은, 각각 REGION-0에 대한 최악의 경우의 SAVE 대기 시간 및 RESTORE 대기 시간을 초(second) 및 초(sec)로 지시한다. 최악의 경우의 SAVE 및 RESTORE 대기 시간들은, 일차적으로 비휘발성 메모리와 관련된 기입 또는 판독 대기시간들을 고려할 수 있다.
도 3은 예시적인 제2 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 3에 도시된 바와 같이, 예시적인 제2 레지스터 맵 일부는, 레지스터 맵 일부(300)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(300)를 이용할 수 있다. 이러한 예들을 위해, 레지스터들의 대응하는 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(300)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(300)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(300)는, NVDIMM의 상태를 수신하기 위해서 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 요청들의 NVDIMM 상태(STATE) 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 3에 도시된 바와 같이, GET_NVDIMM_STATE 필드의 비트들은, 요청자가 NVDIMM 상태(status) 또는 상태(state)와 관련된 요청을 지시하도록 허용하기 위해, RW 액세스를 갖는, 레지스터 맵 일부(300) 내의 유일한 비트들이다.
일부 예들에서, GET_NVDIMM_STATE 필드의 BIT7은 이 요청을 발행하면서 요청자에 의해 클리어(clear)될 수 있다(예를 들어, 비트를 디어설션한다(de-assert)). 이러한 예들을 위해, NVDIMM 제어기는, 요청이 수락되었고 도 3에 도시된 T(NvState.SV)와 관련된 비트들이 파퓰레이트(populate)되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정(예를 들어, 어설션)한다. T(NvState.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 요청을 완료하도록, 요청자가 대기하기 위한 타임-아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, GET_NVDIMM_STATE 필드의 BIT6은 요청자가 이 요청을 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 요청이 완료된 것을 지시하기 위해 BIT6를 설정하고, 레지스터 맵 일부(300)에 기초하여 NVDIMM_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, NVDIMM 상태가 지시된다. 일부 예들에서, NVDIMM_STATUS 필드에서 BIT0이 설정 또는 어설션되면, 이는 NVDIMM 제어기가 이전에 수신된 커맨드(예를 들어, SAVE, ERASE, 또는 RESTORE 등)를 실행하는 데에 사용 중임(busy)을 지시할 수 있다. 하지만, NVDIMM은 여전히 새로운 요청 또는 커맨드를 수신할 수 있고, 이전 요청 또는 커맨드를 완료한 후에 실행하기 위해, 해당 새로운 요청 또는 커맨드를 큐(queue)에 넣을 수 있다.
일부 예들에서, BUSY_TIMEOUT T(사용 중)은, NVDIMM 제어기가 로크 업(locked-up)되거나, 또는 오작동한다는 것을 결정하기 전에, 요청자가 NVDIMM 제어기가 더 이상 사용 중이 아닐 때까지 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 대응하는 NVDIMM_STATUS.BUSY 비트(예를 들어, NVDIMM_STATUS 필드의 BIT0)를 설정하기 전에, 이 필드와 관련된 비트들을 파퓰레이트하거나, 또는 선택적으로 어설션할 수 있다. NVDIMM 제어기는 GET_NVDIMM_STATUS 요청이 요청자로부터 수신될 때마다 BUSY_TIMEOUT T(사용 중) 필드를 업데이트할 수 있다.
도 4는 예시적인 제3 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 4에 도시된 바와 같이, 예시적인 제3 레지스터 맵 일부는, 레지스터 맵 일부(400)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(400)를 이용할 수 있다. 이러한 예들을 위해, 레지스터들의 대응하는 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(400)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(400)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(400)는, NVDIMM 제어기가 휘발성 메모리에 저장된 콘텐츠를 비휘발성 메모리에 저장하게 하기 위해, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 커맨드들의 SAVE 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 4에 도시된 바와 같이, 레지스터 맵 일부(400)의 SAVE_CMD 및 ABORT_SAVE 필드들 둘 다의 비트들은, 요청자가 SAVE 동작 또는 SAVE 동작 중단(ABORT) 중 어느 하나를 실행하라는 커맨드를 지시하도록 허용하기 위해서, RW 액세스를 갖는다. 또한, SAVE_IMAGE_GUID 필드는, 요청자가 비휘발성 메모리에 저장할 콘텐츠 또는 이미지를 위한 GUID(global unique identifier)를 지시하기 위해, RW 액세스를 허용할 수 있다.
일부 예들에서, SAVE_CMD 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 커맨드가 수락되었고, 도 4에 도시된 T(Save.SV) 필드와 관련된 비트들이 파퓰레이트되거나 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Save.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 SAVE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, SAVE_CMD 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(400)에 기초하여 SAVE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, SAVE 동작 상태가 지시된다.
일부 예들에서, SAVE_CMD 필드의 BIT5는, SAVE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 비휘발성 메모리에 저장될 콘텐츠와 관련되는지를 지시하기 위해, 어설션될 수 있다. 이러한 예들을 위해, NVDIMM 제어기가 비휘발성 메모리에 저장될 콘텐츠와 관련시키도록, 요청자는 SAVE_IMAGE_GUID에서 GUID를 지시할 수 있다. GUID가 유효한(예를 들어, 또 다른 이미지에 대한 이전에 관련된 GUID와 매칭되지 않는) 경우에, BIT5가 어설션될 수 있고, NVDIMM 제어기는 비휘발성 메모리의 이용가능한 영역에 이미지/콘텐츠를 저장할 수 있다. 이 GUID에 대해 ERASE 커맨드가 발행될 때까지, NVDIMM 제어기는 GUID와 저장 영역 간의 관련성(association)을 보존할 수 있다. GUID가 무효한 경우에, BIT5는 어설션되지 않고, 콘텐츠는 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)에 저장될 수 있다.
일부 예들에서, ABORT_SAVE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료되었고, 도 4에 도시된 T(Save.SV) 필드와 관련된 비트들이 파퓰레이트되거나 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Save.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ABORT_SAVE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ABORT_SAVE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(400)에 기초하여 SAVE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, ABORT SAVE 동작 상태가 지시된다.
일부 예들에서, ABORT_SAVE 필드의 BIT5는, SAVE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 비휘발성 메모리로의 SAVE 동작을 중단하기 위한 콘텐츠와 관련되는지를 지시하기 위해 어설션될 수 있다. GUID가 유효한(예를 들어, 또 다른 이미지에 대하여 이전에 관련된 GUID와 매칭되지 않는) 경우에, BIT5가 어설션될 수 있고, NVDIMM 제어기는 비휘발성 메모리의 이용가능한 영역으로의 이미지/콘텐츠의 SAVE 동작을 중단할 수 있다. GUID가 무효한 경우에, BIT5는 어설션될 수 있고, NVDIMM 제어기는 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)에 저장될 콘텐츠에 대한 SAVE 동작을 중단할 수 있다.
도 5는 예시적인 제4 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 5에 도시된 바와 같이, 예시적인 제4 레지스터 맵 일부는, 레지스터 맵 일부(500)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(500)를 이용할 수 있다. 이러한 예들을 위해, 레지스터들의 대응하는 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(500)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(500)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(500)는, NVDIMM 제어기가 비휘발성 메모리에 저장된 콘텐츠를 휘발성 메모리에 복원(RESTORE)하게 하기 위해, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 커맨드들의 RESTORE 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 5에 도시된 바와 같이, 레지스터 맵 일부(500)의 RESTORE_CMD 및 ABORT_RESTORE 필드들 둘 다의 비트들은, 요청자가 RESTORE 동작 또는 RESTORE 동작 중단(ABORT) 중 어느 하나를 실행하라는 커맨드를 지시하도록 허용하기 위해, RW 액세스를 갖는다. 또한, RESTORE_IMAGE_GUID 필드는, 요청자가 휘발성 메모리에 복원할 이미지 또는 콘텐츠에 대한 GUID를 지시하도록, RW 액세스를 허용할 수 있다. RESTORE_CMD 또는 ABORT_RESTORE의 요청자 또는 호출기(caller)는 커맨드를 호출하기 전에 이미지 GUID를 셋업(setup)할 수 있다.
일부 예들에서, RESTORE_CMD 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 5에 도시된 T(Restore.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Restore.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 RESTORE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중의 어느 하나로 지시할 수 있다.
일부 예들에 따르면, RESTORE_CMD 필드의 BIT6은, 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6를 설정하고, 레지스터 맵 일부(500)에 기초하여 RESTORE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, RESTORE 동작 상태가 지시된다.
일부 예들에서, RESTORE_CMD 필드의 BIT5는, RESTORE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 휘발성 메모리에 복원될 콘텐츠와 관련되는지를 지시하기 위해, 어설션될 수 있다. 이러한 예들을 위해, 요청자는, 휘발성 메모리에 복원될 콘텐츠와 관련시키기 위해, NVDIMM 제어기를 위한 RESTORE_IMAGE_GUID에서 GUID를 지시할 수 있다. GUID가 유효한(이전에 관련된 GUID와 매칭되는) 경우에, BIT5는 어설션될 수 있고, NVDIMM 제어기는 휘발성 메모리에 이미지/콘텐츠를 복원할 수 있다. GUID가 무효한 경우에, BIT5는 어설션되지 않고, 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)으로부터 휘발성 메모리에 콘텐츠가 복원될 수 있다.
일부 예들에서, ABORT_RESTORE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락된 것을 지시하기 위해 BIT7를 설정하고, 도 5에 도시된 T(RESTORE.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된다. T(RESTORE.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ABORT_RESTORE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ABORT_RESTORE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6를 설정하고, 레지스터 맵 일부(500)에 기초하여 RESTORE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, ABORT RESTORE 동작 상태가 지시된다.
일부 예들에서, ABORT_RESTORE 필드의 BIT5는, RESTORE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 휘발성 메모리로의 RESTORE 동작을 중단하기 위한 콘텐츠와 관련되는지를 지시하기 위해, 어설션될 수 있다. GUID가 유효한(이전에 관련된 GUID와 매칭되는) 경우에, BIT5는 어설션될 수 있고, NVDIMM 제어기는 휘발성 메모리로의 이미지/콘텐츠의 복원 동작을 중단할 수 있다. GUID가 무효한 경우에, BIT5가 어설션되지 않고, 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)으로부터 휘발성 메모리에 복원 중인 콘텐츠의 복원 동작이 중단된다.
도 6은 예시적인 제5 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 6에 도시된 바와 같이, 예시적인 제5 레지스터 맵 일부는, 레지스터 맵 일부(600)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(600)를 이용할 수 있다. 이러한 예들을 위해, 대응하는 레지스터 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(600)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(600)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(600)는, NVDIMM 제어기가 비휘발성 메모리에 저장된 콘텐츠를 소거(ERASE)하게 하기 위해, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 커맨드들의 ERASE 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 6에 도시된 바와 같이, 레지스터 맵 일부(600)의 ERASE_CMD 및 ABORT_ERASE 필드들 둘 다의 비트들은, 요청자가 ERASE 동작 또는 ERASE 동작 중단(ABORT) 중 어느 하나를 실행하라는 커맨드를 지시하도록 허용하기 위해, RW 액세스를 갖는다. 또한, ERASE_IMAGE_GUID 필드는, 요청자가 비휘발성 메모리로부터 소거할 이미지 또는 콘텐츠에 대한 GUID를 지시하도록, RW 액세스를 허용할 수 있다.
일부 예들에서, ERASE_CMD 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 6에 도시된 T(Erase.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Erase.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ERASE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ERASE_CMD 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(600)에 기초하여 ERASE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, ERASE 동작 상태가 지시된다.
일부 예들에서, ERASE_CMD 필드의 BIT5는 ERASE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 비휘발성 메모리로부터 소거될 콘텐츠와 관련되는지를 지시하기 위해, 어설션될 수 있다. 이러한 예들을 위해, 요청자는, 어떤 콘텐츠 및/또는 영역들을 비휘발성 메모리로부터 소거할 것인지를 결정하는 NVDIMM 제어기를 위해, ERASE_IMAGE_GUID에서 GUID를 지시할 수 있다. GUID가 유효한(예를 들어, 이전에 관련된 GUID와 매칭되는) 경우에, BIT5가 어설션될 수 있고, NVDIMM 제어기는 유효한 GUID와 관련된 비휘발성 메모리의 영역으로부터 이미지/콘텐츠를 소거(ERASE)할 수 있다. GUID가 무효한 경우에, BIT5는 어설션되지 않고, 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)으로부터 콘텐츠가 소거될 수 있다.
일부 예들에서, ABORT_ERASE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 6에 도시된 T(Erase.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Erase.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ABORT_ERASE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ABORT_ERASE 필드의 BIT6은, 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(600)에 기초하여 ERASE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, ABORT ERASE 동작 상태가 지시된다.
일부 예들에서, ABORT_ERASE 필드의 BIT5는, SAVE_IMAGE_GUID 필드들에서 선택적으로 어설션된 비트들에 지시된 바와 같이, 유효한 이미지 GUID가 비휘발성 메모리로의 ERASE 동작을 중단하기 위한 콘텐츠와 관련되는지를 지시하기 위해, 어설션될 수 있다. GUID가 유효한(예를 들어, 이전에 관련된 GUID와 매칭되는) 경우에, BIT5는 어설션될 수 있고, NVDIMM 제어기는 유효한 GUID와 관련된 비휘발성 메모리의 영역으로의 이미지/콘텐츠의 소거(ERASE) 동작을 중단할 수 있다. GUID가 무효한 경우에, BIT5는 어설션되지 않고, NVDIMM 제어기는 비휘발성 메모리의 디폴트 영역(예를 들어, REGION-0)으로부터 소거될 콘텐츠의 ERASE 동작을 중단할 수 있다.
도 7은 예시적인 제6 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 7에 도시된 바와 같이, 예시적인 제6 레지스터 맵 일부는 레지스터 맵 일부(700)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(700)를 이용할 수 있다. 이러한 예들을 위해, 대응하는 레지스터 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(700)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(700)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(700)는, NVDIMM 제어기가 NVDIMM의 재앙적 저장 능력들을 인에이블하여, 전력 손실 또는 예기치 않은 시스템 리셋에 근거하여 휘발성 메모리에 저장된 콘텐츠를 비휘발성 메모리로 저장하게 하기 위해서, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 커맨드들의 ARM/DISARM 클래스와 관련될 수 있다. 재앙적 저장 능력들을 인에이블하는 것은, NVDIMM에 연결된 하나 이상의 커패시터가 재앙적 저장 이벤트에 대해 "아밍(arming)"하거나 에너지 저장을 개시하게 할 수 있기 때문에, ARM 동작으로서 지칭될 수 있다. 이러한 예들을 위해, 도 7에 도시된 바와 같이, 레지스터 맵 일부(700)의 ENABLE_CATASTROPHIC_SAVE 및 DISABLE_CATASTROPHIC_SAVE 필드들 둘 다의 비트들은, 요청자가 ARM 동작을 실행하라는 것, 또는 ARM 동작을 디스에이블(disable)하라는 것 중의 어느 하나의 커맨드를 지시하도록 허용하기 위해, RW 액세스를 갖는다.
일부 예들에서, ENABLE_CATASTROPHIC_SAVE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 7에 도시된 T(Arm.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Arm.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ENABLE_CATASTROPHIC_SAVE 또는 ARM 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ENABLE_CATASTROPHIC_SAVE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6를 설정하고, 레지스터 맵 일부(700)에 기초하여 CATASTROPHIC_SAVE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, ARM 동작 상태가 지시된다.
일부 예들에서, DISABLE_CATASTROPHIC_SAVE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 7에 도시된 T(Arm.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(Arm.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 DISABLE_CATASTROPHIC_SAVE 또는 DISARM 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, DISABLE_CATASTROPHIC_SAVE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6를 설정하고, 레지스터 맵 일부(700)에 기초하여 CATASTROPHIC_SAVE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, DISARM 동작 상태가 지시된다.
도 8은 예시적인 제7 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 8에 도시된 바와 같이, 예시적인 제7 레지스터 맵 일부는 레지스터 맵 일부(800)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(800)를 이용할 수 있다. 이러한 예들을 위해, 대응하는 레지스터 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(800)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(800)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(800)는, NVDIMM 제어기가 자동-새로고침(self-refresh) 시에 저장(예를 들어, 자동-새로고침 모드로 들어가면서 휘발성 메모리 상에서 휘발성 대 비휘발성 복사를 개시)하게 하기 위해, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신되는 커맨드들의 자동-새로고침 저장 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 8에 도시된 바와 같이, 레지스터 맵 일부(800)의 ENABLE_SELFREFRESH_SAVE 및 DISABLE_SELFREFRESH_SAVE 필드들 둘 다의 비트들은, 요청자가 자동 새로고침 저장 동작을 실행하라는 것, 또는 자동 새로고침 저장 동작을 디스에이블하라는 것 중의 어느 하나의 커맨드를 지시하도록 허용하기 위해, RW 액세스를 갖는다.
일부 예들에서, ENABLE_SELFREFRESH_SAVE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 8에 도시된 T(SrSave.SV) 필드에 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(SrSave.SV)에서 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 ENABLE_SELFREFRESH_SAVE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, ENABLE_SELFREFRESH_SAVE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(800)에 기초하여 SR_SAVE STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, 자동-새로고침 저장 동작 상태가 지시된다.
일부 예들에서, DISABLE_SELFREFRESH_SAVE 필드의 BIT7은 이 커맨드를 발행하면서 요청자에 의해 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 수락되었고, 도 7에 도시된 T(SrSave.SV) 필드와 관련된 비트들이 파퓰레이트되거나, 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정한다. T(SrSave.SV)에서 선택적으로 어설션된 비트들은, NVDIMM 제어기가 DISABLE_SELFREFRESH_SAVE 커맨드를 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, DISABLE_SELFREFRESH_SAVE 필드의 BIT6은 요청자가 이 커맨드를 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는, 이 커맨드가 완료된 것을 지시하기 위해 BIT6을 설정하고, 레지스터 맵 일부(800)에 기초하여 SRSAVE_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해, 디스에이블 자동 새로고침 저장 동작 상태가 지시된다.
도 9는 예시적인 제8 레지스터 맵 일부를 도시한다. 일부 예들에서, 도 3에 도시된 바와 같이, 예시적인 제8 레지스터 맵 일부는 레지스터 맵 일부(900)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은 NVDIMM을 위한 NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(900)를 이용할 수 있다. 이러한 예들을 위해, 대응하는 레지스터 세트들에 유지된 다양한 비트 세트들의 선택적인 어설션은, 적어도 부분적으로, 레지스터 맵 일부(900)에 기초할 수 있다. 이전에 언급된 바와 같이, 시스템의 요소들은 SMBus 인터페이스를 통하여 레지스터들에의 RO 또는 RW 액세스를 가질 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 컴퓨팅 플랫폼의 다른 요소들이 또한, NVDIMM 제어기와 정보를 통신 또는 교환하기 위해 레지스터 맵 일부(900)를 이용할 수 있다.
일부 예들에 따르면, 레지스터 일부(900)는 NVDIMM의 요소들 및 또는 NVDIMM의 건강 상태를 수신하기 위해, 호스트 컴퓨팅 플랫폼(요청자)의 요소들로부터 NVDIMM 제어기에 의해 수신된 요청들의 건강 체크(Heath Check) 클래스와 관련될 수 있다. 이러한 예들을 위해, 도 9에 도시된 바와 같이, GET_HEALTH_STATUS 필드의 비트들은, 요청자가 건강 상태 취득(get health status) 동작과 관련된 요청을 지시하도록 허용하기 위해, RW 액세스를 갖는, 레지스터 맵 일부(900) 내의 유일한 비트들이다.
일부 예들에서, GET_HEALTH_STATUS 필드의 BIT7은 이 요청을 발행하면서 요청자에 의해 클리어되거나 디어설션될 수 있다. 이러한 예들에서, NVDIMM 제어기는, 요청이 수락되었고, 도 9에 도시된 T(Health.SV) 필드와 관련된 비트들이 파퓰레이트되거나 또는 선택적으로 어설션된 것을 지시하기 위해 BIT7을 설정 또는 어설션한다. T(Health.SV)에 대해 선택적으로 어설션된 비트들은, NVDIMM 제어기가 GET_HEALTH_STATUS 요청을 완료하도록, 요청자가 대기하기 위한 타임 아웃을 밀리초(ms) 또는 초(sec) 중 어느 하나로 지시할 수 있다.
일부 예들에 따르면, GET_HEALTH_STATUS 필드의 BIT6은, 요청자가 요청을 발행하면서 클리어될 수 있다. 이러한 예들을 위해, NVDIMM 제어기는 이 요청이 완료된 것을 지시하기 위해 BIT6을 설정하고, 건강 상태는 레지스터 맵 일부(900)에 기초하여 HEALTH_STATUS 필드와 관련된 비트들의 선택적인 어설션에 의해 지시된다.
도 10은 제1 예시적인 시퀀스를 도시한다. 일부 예들에서, 도 10에 도시된 바와 같이, 제1 예시적인 시퀀스는 시퀀스(1000)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은, 도 2 내지 도 4에 도시된 레지스터 맵 일부(200, 300 또는 400)와 같은 레지스터 맵을 사용하여 SAVE_CMD를 발행하기 위한 시퀀스(1000)를 구현할 수 있다. 이러한 예들을 위해, BIOS(114), 디바이스 드라이브(116) 또는 앱(들)(118)과 같은 시스템(100)의 요소들은, SMBus 인터페이스(122)를 통하여 레지스터들(132)에 액세스함으로써 NVDIMM 제어기(130)에 SAVE_CMD가 발행되게 할 수 있다. 예들은, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 호스트 컴퓨팅 플랫폼(예를 들어, 운영 체제)의 다른 요소들이 또한, NVDIMM 제어기(130)와 통신하기 위해 레지스터 맵 일부(200, 300 또는 400)들을 사용할 수 있다. 또한, 레지스터 맵의 다른 예시적인 부분들이 SAVE_CMD을 발행하기 위해 사용될 수 있다.
SAVE_CMD로 개시하여 블록(1010)(GET_NVDIMM_STATE 호출)으로 이동하면, 디바이스 드라이버(116)와 같은 호스트 컴퓨팅 플랫폼(110)에서의 로직 및/또는 피처들은, 우선 레지스터 맵 일부(300)에서 지시된 바와 같은 GET_NVDIMM_STATE 필드의 BIT7 및 BIT6 둘 다를 클리어함으로써 NVDIMM 제어기(130)의 상태에 대한 요청을 할 수 있다. 일부 예들에서, 이하 도 11에 도시된 시퀀스(1100)는 NVDIMM 제어기(130)로부터 상태를 수신하도록 구현될 수 있다.
블록(1010)에서 판정 블록(1015)(제어기 에러인가?)으로 진행하면, 시퀀스(1100)(이하 더 상세히 설명됨)에 기초하여 디바이스 드라이버(116)는, NVDIMM 제어기(130)의 상태를 수신하거나 제어기 에러가 발생했는지를 결정하는 것 중 어느 하나를 행할 수 있다. 제어기 에러가 결정되면, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 판정 블록(1020)으로 이동한다.
판정 블록(1015)에서 판정 블록(1020)(제어기 사용 중인가?)으로 이동하면, 디바이스 드라이버(116)는 레지스터 맵 일부(300)의 NVDIMM_STATUS 필드의 BIT0이 어설션되어 있는지를 결정할 수 있다. 어설션되어 있다면, 프로세스는 판정 블록(1025)으로 이동한다. 그렇지 않으면, 프로세스는 블록(1030)으로 이동한다.
판정 블록(1020)에서 판정 블록(1025)(T(사용 중)에 도달했는가?)으로 이동하면, 디바이스 드라이버(116)는 레지스터 맵 일부(300)의 BUSY-TIMOUT T(사용 중) 필드의 BIT[14:0]에 지시된 타임 아웃 값이 초과되었는지를 결정할 수 있다. 타임 아웃 값이 초과되지 않은 경우, NVDIMM 제어기(130)의 상태에 대한 또 다른 요청을 야기하는 디바이스 드라이버(116)에 의해 또 다른 SAVE_CMD가 개시될 수 있다. 타임 아웃 값이 초과되면, 제어기 에러가 결정되고 프로세스는 종료된다.
판정 블록(1020)에서 블록(1030)으로 이동하면(SAVE_CMD.CA = 0 SAVE_CMD.SV = 0 SAVE_IMAGE_GUID = x CMD = 0x01 를 갖는 SAVE 커맨드를 송신), 디바이스 드라이버(116)는, SAVE_CMD.CA = 0 및 SAVE_CMD.SV = 0을 초래하기 위해서, 레지스터 맵 일부(400)의 SAVE_CMD 필드의 BIT7 및 BIT6을 디어설션 또는 클리어할 수 있다. 디바이스 드라이버(116)는 또한, 비휘발성 메모리(160)에 저장할, 휘발성 메모리(150)의 이미지 또는 콘텐츠에 대한 GUID를 제공하기 위해서는, SAVE_IMAGE_GUID의 비트들을 선택적으로 어설션할 수 있다. 디바이스 드라이버(116)는 또한, SAVE 동작 개시 커맨드를 지시하기 위해 SAVE_CMD 필드의 BIT[4:0]를 선택적으로 어설션할 수 있다.
블록(1030)에서 판정 블록(1035)(SAVE_CMD.CA==1?)으로 진행하면, 디바이스 드라이버(116)는 NVDIMM 제어기(130)가 SAVE 커맨드를 완료했는지를 결정하기 위해, SAVE_CMD 필드의 BIT7을 체크할 수 있다. BIT7이 어설션되면, SAVE_CMD는 발행되고, NVDIMM 제어기(130)에 의해 수락된다. 그리고 나서, 디바이스 드라이버(116)는 나중에 SAVE_CMD 필드의 BIT6을 체크할 수 있고, 프로세스가 판정 블록(1045)으로 이동한다. BIT7이 어설션되지 않았으면, 프로세스는 판정 블록(1040)으로 이동한다.
판정 블록(1035)에서 판정 블록(1040)(T(CA) 도달했는가?)으로 이동하면, 디바이스 드라이버(116)는 SAVE 커맨드를 위한 커맨드 수락 지시를 수신하기 위한 대기 시간이 레지스터 맵 일부(200)의 커맨드 수락 대기 시간(Command Accepted Latency) T(CA) 필드의 BIT[14:0]에 지시된 타임 아웃 값을 초과했는지를 결정할 수 있다. 대기 시간이 타임 아웃 값을 초과했다면, 제어기 에러가 결정되고, 프로세스는 종료된다. 대기 시간이 타임 아웃 값을 초과하지 않았다면, 디바이스 드라이버(116)는 또한, 대기 시간이 타임 아웃 값을 초과할 때까지, 또는 NVDIMM 제어기(130)가 BIT7을 어설션함으로써 SAVE 커맨드의 수락을 지시할 때까지 중 어느 한 때까지 반복해서 BIT7을 체크할 수 있다.
판정 블록(1035)에서 판정 블록(1045)(SAVE_CMD.SV==1?)으로 이동하고, 디바이스 드라이버(116)는, NVDIMM 제어기(130)가 SAVE 커맨드를 완료했는지를 결정하기 위해 SAVE_CMD 필드의 BIT6을 체크할 수 있다. BIT6이 어설션되지 않았으면, 프로세스는 블록(1055)으로 이동한다. 그렇지 않으면, 프로세스는 판정 블록(1050)으로 이동한다.
판정 블록(1045)에서 판정 블록(1050)(SAVE_CMD==1 이래로 T(Save.SV) 경과했는가?)으로 이동하면, 디바이스 드라이버(116)는, SAVE 커맨드에 대한 커맨드 완료 지시를 수신하기 위한 대기 시간이 레지스터 맵 일부(400)의 T(Save.SV) 필드의 BIT[14:0]에 지시된 타임 아웃 값을 초과했는지를 결정할 수 있다. 대기 시간이 타임 아웃 값을 초과했다면, 제어기 에러가 결정되고, 프로세스는 종료된다. 대기 시간이 타임 아웃 값을 초과하지 않았다면, 디바이스 드라이버(116)는, 대기 시간이 타임 아웃 값을 초과할 때까지, 또는 NVDIMM 제어기(130)가 BIT6을 어설션함으로써 SAVE 커맨드의 완료를 지시할 때까지 중 어느 한 때까지 반복해서 BIT6을 체크할 수 있다.
판정 블록(1045)에서 블록(1055)(SAVE 완료됨, SAVE_STATUS 판독)으로 이동하면, 디바이스 드라이버(116)는, 완료된 SAVE 동작의 상태를 지시하기 위해 NVDIMM 제어기(130)에 의해 선택적으로 어설션될 수 있는, 레지스터 맵 일부(400)의 SAVE_STATUS 필드의 비트들에 의해 지시된 SAVE_STATUS를 판독할 수 있다. 일부 예들에서, 도 10에 도시된 바와 같이, SAVE_STATUS는, 그 지시된 상태에 기초하여 호스트 컴퓨팅 플랫폼(110)의 운영 체제 또는 소프트웨어(예를 들어, 앱(들)(118))에, 또는 디바이스 드라이버(116)에 반환될 수 있다. 그 후, 프로세스가 종료된다.
도 11은 예시적인 제2 시퀀스를 도시한다. 일부 예들에서, 도 11에 도시된 바와 같이, 예시적인 제2 시퀀스는 시퀀스(1100)를 포함한다. 상기 언급한 바와 같이, 시퀀스(1100)는 NVDIMM 제어기(130)로부터 상태를 수신하기 위한 디바이스 드라이버(116)에 의해 구현될 수 있다. 예들은 시퀀스(1100)를 구현하는 디바이스 드라이버(116)에 한정되지 않는다. 호스트 컴퓨팅 플랫폼의 다른 요소들은 NVDIMM 제어기(130)로부터 상태를 수신하기 위해 시퀀스(1110)를 구현할 수 있다. 또한, 시퀀스(1100)는 SAVE 커맨드를 위해 NVDIMM 제어기로부터 상태를 획득하는 것에 한정되지 않는다. RESTORE, ERASE, ARM/DISARM, 자동-새로고침(Self-Refresh) 저장 또는 건강 체크(Health Check)와 같은 다른 커맨드 또는 요청 클래스들은 또한, NVDIMM 제어기에 커맨드를 발행하기 전에, NVDIMM 제어기로부터의 상태를 획득하기 위한 시퀀스(1110)를 구현할 수 있다.
시퀀스(1000)로부터 블록(1010)(GET_NVDIMM_STATE)으로 시작할 때, 디바이스 드라이버(116)는 NVDIMM 제어기(130)로부터 상태를 요청하는 프로세스를 개시할 수 있다.
블록(1010)에서 블록(1120)(GET_NVDIMM_STATE 요청 송신)으로 진행하면, 디바이스 드라이버(116)는 레지스터 맵 일부(300)에서 지시된 바와 같은 GET_NVDIMM_STATE 필드의 BIT7 및 BIT6 둘 다를 클리어함으로써, NVDIMM 제어기(130)의 상태에 대한 요청을 송신할 수 있다.
블록(1120)에서 판정 블록(1130)(GET_NVDIMM_STATE.RA == 1?)으로 진행하면, 디바이스 드라이버는, NVDIMM 제어기(130)가 NVDIMM 제어기(130)로부터의 상태에 대한 요청을 수락했는지를 결정하기 위해, 레지스터 맵 일부(300)의 GET_NVDIMM_STATE 필드의 BIT7을 체크할 수 있다. BIT7이 어설션되었다면, 프로세스는 판정 블록(1150)으로 이동한다. 그렇지 않으면, 프로세스는 판정 블록(1140)으로 이동한다.
판정 블록(1130)에서 판정 블록(1140)(Timeout T(CA)에 도달했는가?)으로 이동하면, 디바이스 드라이버(116)는, NVDIMM 제어기(130)로부터, 요청이 수락되었다(GET_NVDIMM_STATE 필드의 BIT7이 어설션되어 있다)는 지시를 시간 기간(a period of time) 동안 대기할 수 있다. 일부 예들에서, 디바이스 드라이버(116)가 대기할 수 있는 시간 기간은, 레지스터 맵 일부(200)의 커맨드 수락 대기 시간(Command Accepted Latency) (T(CA)) 필드에 지시된 최악의 경우의 값에 기초할 수 있다. 대기 시간 기간이 최악의 경우의 값을 초과하면, Timeout T(CA)에 도달되고, 프로세스는 블록(1170)으로 이동한다. 도달되지 않으면, 프로세스는 판정 블록(1130)으로 되돌아 간다.
판정 블록(1130)에서 판정 블록(1150)(GET_NVDIMM_STATE.SV==1?)으로 이동하면, 디바이스 드라이버(116)는 NVDIMM 제어기(130)가 요청을 완료했는지를 결정하기 위해 GET_NVDIMM_STATE 필드의 BIT6을 체크할 수 있다. BIT6이 어설션되지 않았으면, 프로세스는 블록(1160)으로 이동한다. 그렇지 않으면, 프로세스는 판정 블록(1180)으로 이동한다.
판정 블록(1150)에서 판정 블록(1160)(Timeout T(NvState.SV)에 도달했는가?)으로 이동하면, 디바이스 드라이버(116)는, 상태 요청을 위한 요청 완료 지시를 수신하기 위한 대기 시간이 레지스터 맵 일부(300)의 T(NvState.SV) 필드의 BIT[14:0]에 지시된 타임 아웃 값을 초과했는지를 결정할 수 있다. 대기 시간이 타임 아웃 값을 초과했다면, 프로세스는 블록(1170)으로 이동한다. 대기 시간이 타임 아웃 값을 초과하지 않으면, 프로세스는 판정 블록(1150)으로 되돌아 간다.
판정 블록(1140 또는 1160)들 중의 어느 하나에서 블록(1170)(Set STATUS = 제어기 에러/응답 없음)으로 이동하면, 디바이스 드라이버(116)는 NVDIMM 제어기(130)가 에러 상태에 있거나, 또는 응답하지 않는다는 것을 결정할 수 있다. 해당 에러 또는 응답 없음 상태는 시퀀스(1000)의 판정 블록(1015)에 반환될 수 있고, NVDIMM 제어기(130)의 에러 또는 응답 없음 상태로 인해 해당 시퀀스의 종료를 초래한다.
판정 블록(1150)에서 블록(1180)(STATUS = NVDIMM_STATUS)으로 이동하면, 디바이스 드라이버(116)는, NVDIMM의 상태를 결정하기 위해, 레지스터 맵 일부(300)의 NVDIMM_STATUS 필드에서 NVDIMM 제어기(130)에 의해 선택적으로 어설션된 비트들에 액세스할 수 있다. 이러한 비트들에 지시된 해당 상태는, SAVE 커맨드를 계속하기 위해 시퀀스(1000)의 판정 블록(1015)에 반환될 수 있다. 다른 예들에서, 이러한 비트들에 지시된 상태는, RESTORE, ERASE, ARM/DISARM, Self-Refresh 저장 or Health Check와 같은 다른 커맨드들 또는 요청들과 관련된 다른 시퀀스들에 반환될 수 있다.
도 12는 예시적인 제3 시퀀스를 도시한다. 일부 예들에서, 도 12에 도시된 바와 같이, 예시적인 제2 시퀀스는 시퀀스(1200)를 포함한다. 일부 예들에서, 도 1에 도시된 시스템(100)과 같은 시스템의 요소들은, 도 2, 도 3 및 도 5에 도시된 레지스터 맵 일부(200, 300 또는 500)들과 같은 레지스터 맵을 이용하여 RESTORE_CMD를 발행하기 위한 시퀀스(1200)를 구현할 수 있다. 이러한 예들을 위해, BIOS(114), 디바이스 드라이브(116) 또는 앱(들)(118)과 같은 시스템(100)의 요소들은, SMBus 인터페이스(122)를 통하여 레지스터(132)에 액세스함으로써 NVDIMM 제어기(130)에게 RESTORE_CMD가 발행되게 할 수 있다. 예들은 도 1에 도시된 시스템(100)과 같은 시스템의 요소들에 한정되지 않고, 호스트 컴퓨팅 플랫폼(예를 들어, 운영 체제)의 다른 요소들이 또한, NVDIMM 제어기(130)와 통신하기 위해 레지스터 맵 일부(200, 300 또는 500)들을 이용할 수 있다. 또한, 레지스터 맵의 다른 예시적인 부분들은 RESTORE_CMD를 발행하는데 사용될 수 있다.
RESTORE_CMD으로 시작하여 블록(1210)(GET_NVDIMM_STATE 호출)으로 이동하면, BIOS(114)와 같은 호스트 컴퓨팅 플랫폼(110)에 있는 로직 및/또는 피처들은, 우선 레지스터 맵 일부(300)에서 지시된 바와 같은, GET_NVDIMM_STATE 필드의 BIT7 및 BIT6 둘 다를 클리어함으로써, NVDIMM 제어기(130)의 상태에 대한 요청을 할 수 있다. 일부 예들에서, 상기 도 11에 도시된 바와 같은 시퀀스(1100)는, NVDIMM 제어기(130)로부터 상태를 수신하도록 구현될 수 있다.
블록(1210)에서 판정 블록(1215)(제어기 에러인가?)으로 진행하면, 시퀀스(1100)에 기초하여(도 11에 대해서 전술됨) BIOS(114)는, NVDIMM 제어기(130)의 상태를 수신하는 것, 또는 제어기 에러가 발생했음을 결정하는 것 중 어느 하나를 행할 수 있다. 제어기 에러가 결정되면, 프로세스는 종료된다. 그렇지 않으면, 프로세스는 판정 블록(1220)으로 이동한다.
판정 블록(1215)에서 판정 블록(1220)(이전 부팅 동안에 재앙적 SAVE가 발생하고 성공했는가?)으로 이동하면, BIOS(114)는 우선 이전 부팅 시에 SAVE# 핀이 어설션되었는지의 여부를 결정하기 위해, 레지스터 맵 일부(300)에 대한 NVDIMM_STATUS 필드의 BIT7에 액세스할 수 있다. BIT7이 어설션되었다면, BIOS(114)는 재앙적 SAVE 동작이 성공했는지(BIT8이 어설션되었는지) 여부를 결정할 수 있다. BIT7 및 BIT8 둘 다가 어설션된 것이 결정되면, 프로세스는 판정 블록(1225)으로 이동한다. BIT7 또는 BIT8 중의 적어도 하나도 어설션되어 있지 않으면, BIOS(114)는 RESTORE 커맨드를 중지할 것이다. 그 후, 호스트 컴퓨팅 플랫폼(110)을 위한 운영 체제 또는 소프트웨어(예를 들어, 앱(들)(118))가 비휘발성 메모리(160)의 Non-Region0(만약 존재하면)을 휘발성 메모리(150)에 복원할 수 있고, RESTORE 프로세스는 BIOS(114)의 종료로 갈 수 있다.
판정 블록(1220)에서 판정 블록(1225)(제어기 사용 중인가?)으로 이동하면, BIOS(114)는 레지스터 맵 일부(300)의 NVDIMM_STATUS 필드의 BIT0이 어설션되어 있는지를 결정할 수 있다. 어설션되어 있으면, 프로세스는 판정 블록(1230)으로 이동한다. 그렇지 않으면, 프로세스는 블록(1235)으로 이동한다.
판정 블록(1225)에서 판정 블록(1230)(T(사용 중)에 도달했는가?)으로 이동하면, BIOS(114)는 레지스터 맵 일부(300)의 BUSY-TIMOUT T(사용 중) 필드의 BIT[14:0]에 지시된 타임 아웃 값이 초과되었는지를 결정할 수 있다. 타임 아웃 값이 초과되지 않았다면, NVDIMM 제어기(130)의 상태에 대한 또 다른 요청을 야기하는 BIOS(114)에 의해 또 다른 RESTORE_CMD가 개시될 수 있다. 타임 아웃 값이 초과되었다면, 제어기 에러가 결정되고, 프로세스는 종료된다.
판정 블록(1225)에서 블록(1235)(RESTORE_CMD.CA = 0 RESTORE_CMD.SV = 0 RESTORE_IMAGE_GUID = x CMD = 0x01 를 갖는 RESTORE 커맨드를 송신)으로 이동하면, BIOS(114)는, RESTORE_CMD.CA = 0 및 RESTORE_CMD.SV = 0을 초래하기 위해서, 레지스터 맵 일부(500)의 RESTORE_CMD 필드의 BIT7 및 BIT6을 디어설션 또는 클리어할 수 있다. BIOS(114)는 또한, 비휘발성 메모리(160)로부터 휘발성 메모리(150)에 복원(RESTORE)할, 휘발성 메모리(150)의 이미지 또는 콘텐츠에 대한 GUID를 제공하기 위해서, RESTORE_IMAGE_GUID에서 비트들을 선택적으로 어설션할 수 있다. BIOS(114)는 또한, RESTORE 동작 개시 커맨드를 지시하기 위해, RESTORE_CMD 필드의 BIT[4:0]의 비트들을 선택적으로 어설션할 수 있다.
블록(1235)에서 판정 블록(1240)(RESTORE_CMD.CA==l?)으로 진행하면, BIOS(114)는 NVDIMM 제어기(130)가 RESTORE 커맨드를 수락했는지 결정하기 위해서, RESTORE_CMD 필드의 BIT7을 체크할 수 있다. BIT7이 어설션되었다면, RESTORE_CMD가 발행되고 NVDIMM 제어기(130)에 의해 수락된다. 그러고 나서 BIOS(114)는 나중에 RESTORE_CMD 필드의 BIT6을 체크할 수 있고, 프로세스가 판정 블록(1250)으로 이동한다. BIT7이 어설션되지 않았으면, 프로세스는 판정 블록(1245)으로 이동한다.
판정 블록(1240)에서 판정 블록(1245)(T(CA)에 도달했는가)으로 이동하면, BIOS(114)는 SAVE 커맨드에 대한 커맨드 수락 지시를 수신하기 위한 대기 시간이 레지스터 맵 일부(200)의 커맨드 수락 대기 시간(Command Accepted Latency) T(CA) 필드의 BIT[14:0]에 지시된 타임 아웃 값을 초과했는지 결정할 수 있다. 대기 시간이 타임 아웃 값을 초과했다면, 제어기 에러가 결정되고 프로세스는 종료된다. 대기 시간이 타임 아웃 값을 초과하지 않았다면, BIOS(114)는 또한, 대기 시간이 타임 아웃 값을 초과할 때까지, 또는 NVDIMM 제어기(130)가 BIT7을 어설션함으로써 SAVE 커맨드의 수락을 지시할 때까지 중의 어느 한 때까지 반복해서 BIT7을 체크할 수 있다.
판정 블록(1240)에서 판정 블록(1250)(SAVE_CMD.SV==1?)으로 이동하면, BIOS(114)는 NVDIMM 제어기(130)가 RESTORE 커맨드를 완료했는지를 결정하기 위해 RESTORE_CMD 필드의 BIT6을 체크할 수 있다. BIT6이 어설션되지 않았으면 프로세스는 블록(1260)으로 이동한다. 그렇지 않으면, 프로세스는 판정 블록(1255)으로 이동한다.
판정 블록(1250)에서 판정 블록(1255)(SAVE_CMD==1 이래로 T(Save.SV)가 경과했는가?)으로 이동하고, BIOS(114)는 SAVE 커맨드에 대한 커맨드 완료 지시를 수신하기 위한 대기 시간이 레지스터 맵 일부(500)의 T(RESTORE.SV) 필드의 BIT[14:0]에 지시된 타임 아웃 값을 초과했는지를 결정할 수 있다. 대기 시간이 타임 아웃 값을 초과했다면, 제어기 에러가 결정되고, 프로세스는 종료된다. 대기 시간이 타임 아웃 값을 초과하지 않았다면, BIOS(114)는 또한, 대기 시간이 타임 아웃 값을 초과할 때까지, 또는 NVDIMM 제어기(130)가 BIT6을 어설션함으로써 RESTORE 커맨드의 완료를 지시할 때까지 중 어느 한 때까지 반복해서 BIT6를 체크할 수 있다.
판정 블록(1250)에서 블록(1260)(RESTORE 완료됨, RESTORE_STATUS 판독)으로 이동하면, BIOS(114)는, 완료된 RESTORE 동작의 상태를 지시하기 위해 NVDIMM 제어기(130)에 의해 선택적으로 어설션될 수 있는, 레지스터 맵 일부(500)의 RESTORE_STATUS 필드의 비트들에 의해 지시된 RESTORE_STATUS를 판독할 수 있다. 일부 예들에서, 도 12에 도시된 바와 같이, RESTORE_STATUS는 해당 지시된 상태에 기초하여 호스트 컴퓨팅 플랫폼(110)의 운영 체제 또는 소프트웨어(예를 들어, 앱(들)(118))에, 또는 BIOS(114)에 반환될 수 있다. 그 후, 프로세스는 종료된다.
도 13은 제1 장치(1300)의 예시적인 블록도를 도시한다. 도 13에 도시된 바와 같이, 제1 장치는 장치(1300)를 포함한다. 도 13에 도시된 장치(1300)는 특정 토폴로지에서 제한된 수의 요소들을 갖지만, 장치(1300)는 주어진 구현에서 원하는 바에 따라 대안적인 토폴로지들에서 더 많거나 더 적은 요소들을 포함할 수 있다는 것이 인식될 수 있다.
장치(1300)는 호스트 컴퓨팅 플랫폼에 결합될 수 있는 NVDIMM 제어기에 유지된 회로(1320)에 의해 지원될 수 있다. 회로(1320)는 하나 이상의 소프트웨어 또는 펌웨어 구현 컴포넌트(1322-a)를 실행하기 위해 준비될 수 있다. 본 명세서에서 사용된 "a" 및 "b" 및 "c" 및 유사한 지정어들은 임의의 양의 정수를 나타내는 변수들인 것으로 의도된다는 점에 주목할 가치가 있다. 따라서, 예를 들어, 구현이 a = 7의 값을 설정하면, 컴포넌트들(1322-a)에 대한 소프트웨어 또는 펌웨어의 완전 세트는 컴포넌트들(1322-1, 1322-2, 1322-3, 1322-4, 1322-5, 1322-6 또는 1322-7)을 포함할 수 있다. 제시된 예들은 이러한 문맥에 한정되지 않고, 전체에 걸쳐 사용된 상이한 변수들은 동일하거나 상이한 정수 값들을 나타낼 수 있다.
일부 예들에 따르면, 회로(1320)는 프로세서 또는 프로세서 회로를 포함할 수 있다. 프로세서 또는 프로세서 회로는, 다양한 상업적으로 이용 가능한 프로세서들 중 임의의 것일 수 있으며, AMD® Athlon®, Duron® 및 Opteron® 프로세서들; ARM® 애플리케이션, 임베디드 및 보안 프로세서들; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서들; IBM 및 Sony® 셀 프로세서들; Intel® Atom® Celeron®, Core(2) Duo®, Core i3, Core i5, Core i7, Itanium®, Pentium®, Xeon®, Xeon Phi® 및 XScale® 프로세서들; 및 유사 프로세서들을 제한 없이 포함한다. 일부 예들에 따르면, 회로(1320)는 또한, 주문형 집적 회로(ASIC)일 수 있고 적어도 일부 컴포넌트들(1322-a)은 ASIC의 하드웨어 요소들로서 구현될 수 있다.
일부 예들에 따르면, 장치(1300)는 수신 컴포넌트(1322-1)를 포함할 수 있다. 수신 컴포넌트(1322-1)는 상태 요청을 수신하기 위해 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 상태 요청은, 상태 요청(1305)에 포함될 수 있고 호스트 컴퓨팅 플랫폼에서 요청자로부터 수신될 수 있다. 요청자는 SMBus 인터페이스를 통하여 NVDIMM 제어기와 통신하여 연결될 수 있다. 요청자는, 예를 들어, NVDIMM과 연결된 호스트 컴퓨팅 플랫폼을 위한 호스트 회로에 의해 구현된 BIOS, 디바이스 드라이버 또는 애플리케이션을 포함할 수 있다.
일부 예들에서, 장치(1300)는 상태 컴포넌트(1322-2)를 더 포함할 수 있다. 상태 컴포넌트(1322-2)는 상태 요청에 응답하여 상태를 결정하기 위해 회로(1320)에 의해 실행될 수 있다. 상태는 비휘발성 또는 휘발성 메모리 모듈들과 같은 NVDIMM의 하나 이상의 요소에 대한 건강 체크 상태, 또는 NVDIMM 제어기의 상태일 수 있다.
일부 예들에서, 장치(1300)는 지시 컴포넌트(1322-3)를 더 포함할 수 있다. 지시 컴포넌트(1322-3)는, 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상태 컴포넌트(1322-2)에 의해 결정된 상태를 지시하여 상태(1340)를 나타내도록, 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 선택적인 어설션은 레지스터 맵(1323-a)(예를 들어, 룩업 테이블(LUT)과 같은 데이터 구조에 유지됨)에 기초할 수 있다. 제1 레지스터 세트는 SMBus 인터페이스를 통하여 상태 요청의 요청자에 의해 액세스 가능할 수 있다. 또한, 일부 예들에서, 지시 컴포넌트(1322-3)는 요청자로부터 수신된 가능한 커맨드들(예를 들어, 커맨드(들)(1310)) 또는 요청에 대한 수락 및 완료 상태를 지시할 수 있다. 예를 들어, 수락(1330) 및 완료(1335)는, 요청 또는 커맨드와 관련된 레지스터 맵(1323-a)의 필드들에 대한 비트들의 어설션을 통해, 요청 또는 커맨드의 수락, 및 해당 요청 또는 커맨드의 후속 완료에 대한 레지스터 맵(1323-a)에 기초하여 지시될 수 있다. 어설션된 비트들에 대한 레지스터들은, 요청자가 이 요청 또는 커맨드가 수락 및/또는 완료되었는지를 결정하도록, SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
일부 예들에서, 장치(1300)는 저장 컴포넌트(1322-4)를 더 포함할 수 있다. 저장 컴포넌트(1322-4)는, NVDIMM을 위한 비휘발성 메모리의 제1 영역에 데이터를 저장하고 SAVE 커맨드를 발행하는 요청자에 의해 지시된 제1 GUID와 제1 영역 사이의 관련성을 유지하기 위해, 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 제1 GUID는 커맨드(들)(1310)에 포함된 커맨드로 지시될 수 있다. 저장 컴포넌트(1322-4)는 제1 GUID와 제1 영역과의 관련성을 유지하기 위해 GUID 관련들(1324-b)에 액세스하거나, 또는 이들을 유지할 수 있다(예를 들어, LUT을 통하여).
일부 예들에서, 장치(1300)는 RESTORE 컴포넌트(1322-5)를 더 포함할 수 있다. 복원 컴포넌트(1322-5)는, 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위해, 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 제1 영역은 이전에 제1 GUID와 관련될 수 있다(예를 들어, 저장 컴포넌트(1322-4)에 의해서). 제1 GUID는 RESTORE 커맨드를 발행하는 요청자에 의해 지시될 수 있다. 복원 컴포넌트(1322-5)는, 제1 영역이 제1 GUID와 관련되며, RESTORE 커맨드를 실행한다는 것을 결정하기 위해서, GUID 관련들(1324-b)에 액세스할 수 있다.
일부 예들에서, 장치(1300)는 소거 컴포넌트(1322-6)를 더 포함할 수 있다. 소거 컴포넌트(1322-6)는, 비휘발성 메모리의 제1 영역에서 데이터를 소거하기 위해, 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 제1 영역은 이전에 제1 GUID와 관련될 수 있다(예를 들어, 저장 컴포넌트(1322-4)에 의해서). 제1 GUID는 ERASE 커맨드를 발행하는 요청자에 의해 지시될 수 있다. 소거 컴포넌트(1322-6)는 제1 영역이 제1 GUID와 관련되며, 비휘발성 메모리의 제1 영역에서 데이터를 소거하기 위해 ERASE 커맨드를 실행한다는 것을 결정하기 위해서, GUID 관련들(1324-b)에 액세스할 수 있다.
일부 예들에서, 장치(1300)는 암(Arm) 컴포넌트(1322-7)를 더 포함할 수 있다. 암 컴포넌트(1322-7)는, NVDIMM에 연결된 하나 이상의 커패시터가 충전하게 하거나 ARM(암)하게 하기 위해, 회로(1320)에 의해 실행될 수 있다. 이러한 예들을 위해, 호스트 컴퓨팅 플랫폼(예를 들어, BIOS 또는 디바이스 드라이버)의 요소 또는 NVDIMM 제어기에 의해 직류 전원 손실(current power supply loss)이 감지되거나 예상되면, 저장 컴포넌트(1322-4)는, NVDIMM의 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여 재앙적 SAVE 동작을 구현할 수 있다.
개시된 아키텍처의 신규한 양태들을 수행하기 위한 예시적인 방법론들을 나타내는 논리 흐름들의 세트가 본 명세서에 포함된다. 설명의 단순함을 위해서, 본 명세서에 도시된 하나 이상의 방법론이 일련의 동작으로서 도시되고 설명되었지만, 본 기술분야의 통상의 기술자는 방법론들이 동작들의 순서에 의해 제한되지 않는다는 것을 인식하고 이해할 것이다. 그에 따라, 일부 동작들은 상이한 순서로 발생할 수 있고 및/또는 본 명세서에 도시되고 설명된 다른 동작들과 동시에 발생할 수 있다. 예를 들면, 본 기술분야의 통상의 기술자는 방법론이 대안적으로, 상태도에서와 마찬가지로, 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 인식하고 이해할 것이다. 또한, 방법론에서 예시된 모든 동작들이 신규한 구현을 위해 요구되지 않을 수 있다.
논리 흐름은 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기 또는 반도체 스토리지와 같은 적어도 하나의 비일시적인 컴퓨터 판독 가능한 매체 또는 머신 판독 가능한 매체 상에 저장된 컴퓨터 실행가능 명령어들에 의해 구현될 수 있다. 실시예들은 이러한 문맥에 한정되지 않는다.
도 14는 제1 논리 흐름의 예를 도시한다. 도 14에 도시된 바와 같이, 제1 논리 흐름은 논리 흐름(1400)을 포함한다. 논리 흐름(1400)은 장치(1300)와 같은, 본 명세서에서 설명된 하나 이상의 로직, 피처들 또는 디바이스들에 의해 실행되는 동작들의 일부 또는 전부를 나타낼 수 있다. 더 상세하게는, 논리 흐름(1400)은 수신 컴포넌트(1322-1), 상태 컴포넌트(1322-2), 지시 컴포넌트(1322-3), 저장 컴포넌트(1322-4), 복원 컴포넌트(1322-5), 소거 컴포넌트(1322-6) 또는 암 컴포넌트(1322-7)에 의해 구현될 수 있다.
일부 예들에 따르면, 논리 흐름(1400)은, 블록(1402)에서, 상태 요청을 제어기에서 수신할 수 있고, 비휘발성 메모리를 위한 제어기는 휘발성 메모리에 유지된 데이터를 보존할 수 있고, 비휘발성 및 휘발성 메모리는 NVDIMM에 상주한다. 이러한 예들을 위해, 수신 컴포넌트(1322-1)는 요청자로부터 상태 요청을 수신할 수 있고, 이 요청자는 NVDIMM에 연결된 호스트 컴퓨팅 플랫폼에 있는 회로에 의해 구현된 디바이스 드라이버, 애플리케이션 또는 BIOS를 포함할 수 있다.
일부 예들에서, 논리 흐름(1400)은, 블록(1404)에서, 상태 요청에 응답하여 상태를 결정할 수 있다. 이러한 예들을 위해, 상태 컴포넌트(1322-2)는 상태를 결정할 수 있다.
일부 예들에 따르면, 논리 흐름(1400)은, 블록(1406)에서, 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상태를 지시할 수 있다. 선택적인 어설션은 레지스터 맵에 기초할 수 있다. 제1 레지스터 세트는 SMBus 인터페이스를 통하여 상태 요청의 요청자에 의해 액세스 가능할 수 있다. 이러한 예들을 위해, 지시 컴포넌트(1322-3)는 상태를 지시할 수 있다.
일부 예들에서, 논리 흐름(1400)은, 블록(1408)에서, 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해, 요청자로부터 제1 커맨드를 수신할 수 있다. 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 이러한 예들을 위해, 수신 컴포넌트(1322-1)는 커맨드를 수신할 수 있다.
일부 예들에 따르면, 논리 흐름(1400)은, 블록(1410)에서, 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해 제1 커맨드의 수락 및 완료 상태를 지시할 수 있다. 제3 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 이러한 예들을 위해, 지시 컴포넌트(1322-3)는 수락 및 완료 상태를 지시할 수 있다.
일부 예들에서, 논리 흐름(1400)은, 블록(1412)에서, 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해 제1 커맨드의 제1 완료 상태를 지시할 수 있다. 제4 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제1 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드의 완료 실패를 포함할 수 있다. 제4 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 이러한 예들을 위해, 지시 컴포넌트(1322-3)는 제1 커맨드의 제1 완료 상태를 지시할 수 있다.
도 15는 제1 저장 매체의 예를 도시한다. 도 15에 도시된 바와 같이, 제1 저장 매체는 저장 매체(1500)를 포함한다. 저장 매체(1500)는 제조물을 포함할 수 있다. 일부 예들에서, 저장 매체(1500)는, 광학, 자기 또는 반도체 스토리지와 같은 임의의 비일시적인 컴퓨터 판독 가능한 매체 또는 머신 판독 가능한 매체를 포함할 수 있다. 저장 매체(1500)는 논리 흐름(1400)을 구현하기 위한 명령어들과 같은, 다양한 타입들의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독 가능한 또는 머신 판독 가능한 저장 매체의 예들은, 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거 가능 또는 소거 불가능 메모리, 기입 가능 또는 재기입 가능 메모리 등을 비롯하여, 전자 데이터를 저장할 수 있는 임의의 유형의 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일된 코드(compiled code), 해석된 코드(interpreted code), 실행가능 코드(executable code), 정적 코드(static code), 동적 코드(dynamic code), 객체 지향 코드(object-oriented code), 비주얼 코드(visual code) 및 기타 등등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 예들은 이러한 문맥에 한정되지 않는다.
도 16은 제2 장치의 예시적인 블록도를 도시한다. 도 16에 도시된 바와 같이, 제2 장치는 장치(1600)를 포함한다. 도 16에 도시된 장치(1600)는 특정 토폴로지 또는 구성에서 제한된 수의 요소들을 갖지만, 장치(1600)는 주어진 구현에서 원하는 바에 따라, 대안적인 구성들에서 더 많거나 더 적은 요소들을 포함할 수 있다는 것이 인식될 수 있다.
장치(1600)는 호스트 컴퓨팅 플랫폼에 유지된 회로(1620)에 의해서 지원될 수 있다. 회로(1620)는 하나 이상의 소프트웨어 또는 펌웨어 구현 컴포넌트(1622-a)를 실행하기 위해 준비될 수 있다. 본 명세서에서 사용된 "a" 및 "b" 및 "c" 및 유사한 지정어들은 임의의 양의 정수를 나타내는 변수들인 것으로 의도된다는 점에 주목할 가치가 있다. 따라서, 예를 들어, 구현이 a = 4의 값을 설정하면, 컴포넌트들(1622-a)에 대한 소프트웨어 또는 펌웨어의 완전 세트는 컴포넌트들(1622-1, 1622-2, 1622-3 또는 1622-4)을 포함할 수 있다. 제시된 예들은 이러한 문맥에 한정되지 않고, 전체에 걸쳐 사용된 상이한 변수들은 동일하거나 상이한 정수 값들을 나타낼 수 있다.
일부 예들에서, 도 16에 도시된 바와 같이, 장치(1600)는 회로(1620)를 포함한다. 회로(1620)는 하나 이상의 소프트웨어 및/또는 펌웨어 컴포넌트들(1622-a)을 실행하기 위해 일반적으로 준비될 수 있다. 회로(1620)는 프로세싱 코어(예를 들어, 중앙 처리 유닛(CPU)으로서 사용됨)를 포함한 호스트 컴퓨팅 플랫폼의 회로의 일부일 수 있다. 선택적으로 회로(1620)는, 호스트 컴퓨팅 플랫폼을 위한 칩셋 회로의 일부일 수 있다. 어느 한 시나리오에서, 회로(1620)는 장치(1300)를 위한 회로(1320)에 대해 이전에 언급한 것들을 포함하지만 이에 한정되지 않는 다양한 상업적으로 이용 가능한 프로세서들 중의 어느 하나의 일부일 수 있다. 회로(1620)는 또한, 이중 마이크로프로세서들, 다중-코어 프로세서들, 및 다른 다중-프로세서 아키텍처들의 일부일 수 있다. 일부 예들에 따르면, 회로(1620)는 또한, ASIC일 수 있고, 컴포넌트들(1622-a)은 ASIC의 하드웨어 요소들로서 구현될 수 있다.
일부 예들에 따르면, 장치(1600)는 요청 컴포넌트(1622-1)를 포함할 수 있다. 요청 컴포넌트(1622-1)는, 장치(1600)를 포함하는 호스트 컴퓨팅 플랫폼과 연결된 NVDIMM을 위한 NVDIMM 제어기에 상태 요청을 송신하기 위해, 회로(1620)에 의해 실행될 수 있다. 이러한 예들을 위해, 요청 컴포넌트(1622-1)는, SMBus 인터페이스를 통하여 NVDIMM 제어기에 있는 레지스터들에 액세스할 수 있고, 예를 들어, 요청 컴포넌트(1622-1)에 의해 액세스 가능한 룩업 테이블(LUT)과 같은 데이터 구조에 유지되는 레지스터 맵(1623-a)에 포함된 레지스터 맵의 하나 이상의 부분들을 이용하여 상태 요청(1605)을 송신할 수 있다.
일부 예들에서, 장치(1600)는 상태 컴포넌트(1622-2)를 더 포함할 수 있다. 상태 컴포넌트(1622-2)는, SMBus 인터페이스를 통하여 NVDIMM 제어기에 있는 레지스터들에 유지된 비트들에 액세스하기 위해, 회로(1620)에 의해 실행될 수 있다. 이 비트들은, 예를 들어, 상태 컴포넌트(1622-2)에 의해 액세스 가능한 LUT에 유지된 레지스터 맵(1623-a)에 포함된 레지스터 맵에 기초하여 비트들의 선택적인 어설션을 통해, 상태 요청에 응답하여 NVDIMM 제어기에 의해 지시된 상태를 나타낼 수 있다. 이러한 예들을 위해, 상태는 상태(1615)에 포함될 수 있고, 상태 컴포넌트(1622-2)는 NVDIMM 제어기에 의해 지시된 상태를 결정하기 위해 레지스터 맵의 하나 이상의 부분을 이용할 수 있다.
일부 예들에 따르면, 장치(1600)는 커맨드 컴포넌트(1622-3)를 더 포함할 수 있다. 커맨드 컴포넌트(1622-3)는, NVDIMM 제어기에 있는 레지스터들에 유지된 비트의 어설션을 통해 커맨드들을 송신하기 위해, 회로(1620)에 의해 실행될 수 있다. 비트들의 어설션은, 예를 들어, 커맨드 컴포넌트(1622-3)에 의해 액세스 가능한 LUT에 유지된 레지스터 맵(1623-a)에 포함된 레지스터 맵의 하나 이상의 부분에 따를 수 있다. 이러한 예들을 위해, 사용된 레지스터 맵의 일부는 SAVE, RESTORE, Self-Refresh 저장 또는 ERASE 커맨드와 같은 커맨드(들)(1630)에 포함된 커맨드에 기초할 수 있다. 커맨드 컴포넌트(1622-3)는 수락(1635)을 통해 커맨드가 수락되었다는 지시를 수신할 수 있고, 수락되면, 완료(1640)를 통해 커맨드의 완료의 지시를 수신할 수 있다. 이 지시들은, 커맨드 컴포넌트(1622-3)에 의해 송신된 커맨드에 기초하고 레지스터 맵의 하나 이상의 부분에 기초하여 비트들을 선택적으로 어설션하는 NVDIMM 제어기에 의해 지시될 수 있다.
일부 예들에서, 장치(1600)는 GUID 컴포넌트(1622-4)를 더 포함할 수 있다. GUID 컴포넌트(1622-4)는 비휘발성 메모리의 영역에 이미지를 저장하기 위해 휘발성 메모리에 유지된 이미지 또는 콘텐츠에 대한 GUID(들)(1645)에서 GUID를 지시하고, 지시된 GUID와 비휘발성 메모리의 영역 사이의 관련성을 보존 또는 유지하기 위해, 회로(1620)에 의해 실행될 수 있다. 이러한 예들을 위해, GUID 컴포넌트(1622-4)는 또한, GUID들(1624-4)(예를 들어, LUT에 유지됨)에서 ERASE 또는 RESTORE 커맨드들의 가능한 향후 사용을 위해 관련성을 보존할 수 있다. 이러한 GUID들은, 송신될 때, 이러한 타입들의 ERASE 또는 RESTORE 커맨드들에 포함되도록 커맨드 컴포넌트(1622-3)에게 제공될 수 있다.
장치(1600)의 다양한 컴포넌트들 및 장치(1600)를 포함하는 호스트 컴퓨팅 플랫폼은, 다양한 타입의 통신 매체에 의해 서로 통신가능하게 연결되어 동작들을 조정할 수 있다. 조정(coordination)은 단방향 또는 양방향 정보 교환을 수반할 수 있다. 예를 들면, 컴포넌트들은 통신 매체를 통하여 전달되는 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인에 할당된 신호들로서 구현될 수 있다. 그러한 할당들에서, 각각의 메시지는 신호이다. 하지만, 추가적 실시예들은, 대안으로서 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은, 다양한 접속들에 걸쳐 송신될 수 있다. 예시적인 접속들은 병렬 인터페이스들, 직렬 인터페이스들, 및 버스 인터페이스들을 포함한다.
개시된 아키텍처의 신규한 양태들을 수행하기 위한 예시적인 방법론들을 나타내는 논리 흐름들의 세트가 본 명세서에 포함된다. 설명의 단순함을 위해서, 본 명세서에 예시된 하나 이상의 방법론이 일련의 동작으로서 예시되고 설명되지만, 본 기술분야의 통상의 기술자는 방법론들이 동작들의 순서에 의해 제한되지 않는다는 것을 인식 및 이해할 것이다. 그에 따라, 일부 동작들은 상이한 순서로 발생할 수 있고 및/또는 본 명세서에 도시되고 설명된 다른 동작들과 동시에 발생할 수 있다. 예를 들면, 본 기술분야의 통상의 기술자들은 방법이 대안적으로, 상태도에서와 마찬가지로, 일련의 상호 관련된 상태들 또는 이벤트들로서 표현될 수 있다는 것을 인식하고 이해할 것이다. 또한, 방법론에서 예시된 모든 동작들이 신규한 규현을 위해 요구되지 않을 수 있다.
논리 흐름은 소프트웨어, 펌웨어, 및/또는 하드웨어로 구현될 수 있다. 소프트웨어 및 펌웨어 실시예들에서, 논리 흐름은, 광학, 자기 또는 반도체 스토리지와 같은 적어도 하나의 비일시적인 컴퓨터 판독 가능한 매체 또는 머신 판독 가능한 매체 상에 저장된 컴퓨터 실행가능 명령어들에 의해 구현될 수 있다. 실시예들은 이러한 문맥에 한정되지 않는다.
도 17은 제2 논리 흐름의 예를 도시한다. 도 17에 도시된 바와 같이, 제2 논리 흐름은 논리 흐름(1700)을 포함한다. 논리 흐름(1700)은 장치(1600)와 같은, 본 명세서에서 설명된 하나 이상의 로직, 피처들 또는 디바이스들에 의해 실행되는 동작들의 일부 또는 전부를 나타낼 수 있다. 더 상세하게는, 논리 흐름(1700)은 요청 컴포넌트(1622-1), 상태 컴포넌트(1622-2), 커맨드 컴포넌트(1622-3) 또는 GUID 컴포넌트(1622-4)에 의해 구현될 수 있다.
도 17에 도시된 예시적인 설명에서, 논리 흐름(1700)은, 블록(1702)에서, 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에게 상태 요청을 송신할 수 있다. 비휘발성 및 휘발성 메모리는 호스트 컴퓨팅 플랫폼과 연결된 NVDIMM에 상주할 수 있다. 이러한 예들을 위해, 요청 컴포넌트(1622-1)는 상태 요청이 송신되게 할 수 있다.
일부 예들에 따르면, 논리 흐름(1700)은, 블록(1704)에서, SMBus 인터페이스를 통하여 제1 레지스터 세트에 유지된 제1 비트 세트에 액세스할 수 있다. 제1 비트 세트는, 레지스터 맵에 기초하여 제1 비트 세트의 선택적인 어설션을 통해, 상태 요청에 응답하여 제어기에 의해 지시된 상태를 나타낼 수 있다. 이러한 예들을 위해, 상태 컴포넌트(1622-2)는 SMBus 인터페이스를 통하여 제1 비트 세트에 액세스할 수 있고, 레지스터 맵에 기초하여 제어기에 의해 지시된 상태를 결정할 수 있다.
일부 예들에 따르면, 논리 흐름(1700)은, 블록(1706)에서, 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 제1 커맨드를 송신할 수 있다. 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 또한, SMBus 인터페이스를 통하여 액세스 가능할 수 있다. 이러한 예들을 위해, 커맨드 컴포넌트(1622-2)는 레지스터 맵에 기초하여 제2 비트 세트를 어설션함으로써 커맨드가 송신되게 할 수 있다.
일부 예들에서, 논리 흐름(1700)은, 블록(1708)에서, 제3 레지스터 세트에 유지된 제3 비트 세트의 제어기에 의한 어설션을 통해 제1 커맨드의 수락 및 완료 상태의 지시를 수신한다. 제3 비트 세트는 레지스터 맵에 기초하여 어설션될 수 있다. 제3 레지스터 세트는 또한, SMBus 인터페이스를 통하여 액세스 가능할 수 있다. 이러한 예들을 위해, 커맨드 컴포넌트(1622-3)는, 어느 비트들이 어설션되었는지를 결정하고, 커맨드의 수락 및 완료가 레지스터 맵에 기초하여 지시되는지를 결정하기 위해 제3 레지스터 세트에 액세스할 수 있다.
도 18은 제2 저장 매체의 예를 도시한다. 도 18에 도시된 바와 같이, 제2 저장 매체는 저장 매체(1800)를 포함한다. 저장 매체(1800)는 제조물을 포함할 수 있다. 일부 예들에서, 저장 매체(1800)는, 광학, 자기 또는 반도체 스토리지와 같은 임의의 비일시적인 컴퓨터 판독 가능한 매체 또는 머신 판독 가능한 매체를 포함할 수 있다. 저장 매체(1800)는 논리 흐름(1500)을 구현하기 위한 명령어들과 같은, 다양한 타입들의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 컴퓨터 판독 가능한 또는 머신 판독 가능한 저장 매체의 예들은 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거 가능 또는 소거 불가능 메모리, 기입 가능 또는 재기입 가능 메모리 등을 비롯하여, 전자 데이터를 저장할 수 있는 임의의 유형의 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은, 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 및 기타 등등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 예들은 이러한 문맥에 한정되지 않는다.
도 19는 예시적인 컴퓨팅 플랫폼(1900)을 도시한다. 일부 예들에서, 도 19에 도시된 바와 같이, 컴퓨팅 플랫폼(1900)은 프로세싱 컴포넌트(1940), 다른 플랫폼 컴포넌트들 또는 통신 인터페이스(1960)를 포함할 수 있다. 일부 예들에 따르면, 컴퓨팅 플랫폼(1900)은 전술된 바와 같이 호스트 컴퓨팅 플랫폼의 일부일 수 있다.
일부 예들에 따르면, 프로세싱 컴포넌트(1940)는 장치(1600) 및/또는 저장 매체(1800)를 위한 처리 동작 또는 로직을 실행할 수 있다. 프로세싱 컴포넌트(1940)는 다양한 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은, 디바이스들, 로직 디바이스들, 컴포넌트들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 회로들, 회로 소자들(예를 들어, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 및 기타 등등), 집적 회로들, ASIC(application specific integrated circuit)들, PLD(programmable logic device)들, DSP(digital signal processor)들, FPGA(field programmable gate array), 메모리 유닛들, 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩셋들 및 기타 등등을 포함할 수 있다. 소프트웨어 요소들의 예들은, 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 디바이스 드라이버들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 메소드들, 프로시저들, 소프트웨어 인터페이스들, API(application program interface)들, 명령어 세트들, 컴퓨팅 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것들의 임의의 조합을 포함할 수 있다. 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 예를 구현할지 결정하는 것은, 주어진 예에서 원하는 바에 따라, 원하는 계산 속도, 전력 레벨들, 내열성(heat tolerances), 처리 사이클 비용(processing cycle budget), 입력 데이터 속도들, 출력 데이터 속도들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약조건들과 같은 임의의 수의 인자들에 따라 가변될 수 있다.
일부 예들에서, 다른 플랫폼 컴포넌트들(1950)은, 하나 이상의 프로세서, 다중-코어 프로세서들, 코-프로세서들(co-processors), 메모리 유닛들, 칩셋들, 제어기들, 주변 장치들, 인터페이스들, 발진기들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 입/출력(I/O) 컴포넌트들(예를 들어, 디지털 디스플레이들), 전원 및 기타 등등과 같은 통상적인 컴퓨팅 요소들을 포함할 수 있다. 메모리 유닛들의 예들은, ROM(read-only memory), RAM(random-access memory), 다이내믹 RAM(dynamic RAM), DDRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), SRAM(Static RAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 강유전성 폴리머 메모리, 오보닉 메모리, 상(phase) 변화 또는 강유전성 메모리와 같은 폴리머 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광 카드들, RAID(Redundant Array of Independent Disks) 드라이브들, 고체 상태(solid state) 메모리 디바이스들(예를 들어, USB 메모리), SSD(solid state drives) 및 정보 저장에 적합한 임의의 다른 타입의 저장 매체와 같은, 하나 이상의 고속 메모리 유닛의 형태인, 다양한 타입들의 컴퓨터 판독 가능한 저장 매체 및 머신 판독 가능한 저장 매체를 제한 없이 포함할 수 있다.
일부 예들에서, 통신 인터페이스(1960)는 통신 인터페이스를 지원하기 위한 로직 및/또는 피처들을 포함할 수 있다. 이러한 예들을 위해, 통신 인터페이스(1960)는, 직접 또는 네트워크 통신 링크들을 통해 통신하기 위해 다양한 통신 프로토콜들 또는 표준들에 따라 동작하는 하나 이상의 통신 인터페이스를 포함할 수 있다. 직접 통신은, SMBus 사양 또는 PCI 익스프레스(Express) 사양과 관련된 것들과 같은 하나 이상의 산업 표준들(후계들 및 변형들을 포함함)에 기술된 통신 프로토콜들 또는 표준들의 이용을 통해 일어날 수 있다. 네트워크 통신은 IEEE에 의해 공표된 하나 이상의 이더넷 표준들에 기술된 것들과 같은 통신 프로토콜들 또는 표준들의 이용을 통해 일어날 수 있다. 예를 들어, 하나의 그러한 이더넷 표준은 2008년 12월에 공개된 IEEE 802.3-2008, CSMA/CD(Carrier sense Multiple access with Collision Detection) 액세스 방법 및 물리적 계층 사양들(이하에서 "IEEE 802.3")을 포함할 수 있다.
컴퓨팅 플랫폼(1900)은, 예를 들어, 서버, 서버 어레이 또는 서버 팜(server farm), 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 가전기기, 웹 가전기기, 분산 컴퓨팅 시스템, 멀티프로세서 시스템들, 프로세서 기반의 시스템들 또는 그것들의 조합일 수 있는 컴퓨팅 디바이스의 일부일 수 있다. 따라서, 본 명세서에 설명된 컴퓨팅 플랫폼(1900)의 기능들 및/또는 특정 구성들이, 적합하게 원하는 바에 따라, 컴퓨팅 플랫폼(1900)의 다양한 실시예들에서 포함되거나 생략될 수 있다.
컴퓨팅 플랫폼(1900)의 컴포넌트들 및 피처들은, 이산 회로, 주문형 집적 회로(ASIC)들, 로직 게이트들 및/또는 단일 칩 아키텍처들의 임의의 조합을 이용하여 구현될 수 있다. 또한, 컴퓨팅 플랫폼(1900)의 피처들은 마이크로컨트롤러들, 프로그래머블 로직 어레이들 및/또는 마이크로프로세서들, 또는 적합하게는 전술한 것들의 적합한 임의의 조합을 이용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 요소들은 통합적으로 또는 개별적으로 본 명세서에서 "로직" 또는 "회로"로서 지칭될 수 있다는 점에 주목해야 한다.
도 19의 블록도에 도시된 예시적인 컴퓨팅 플랫폼(1900)은 많은 잠재적인 구현들 중의 기능적으로 기술하는 일 예를 나타낼 수 있다는 것이 인식되어야 한다. 따라서, 첨부 도면들에 예시된 블록 기능들의 분할, 생략 또는 포함은, 이러한 기능들을 구현하기 위한 하드웨어 컴포넌트들, 회로들, 소프트웨어 및/또는 요소들이 실시예들에서 반드시 분할되거나, 생략되거나 또는 포함될 것임을 암시하지는 않는다.
도 20은 예시적인 NVDIMM 제어기(2000)를 도시한다. 일부 예들에서, 도 20에 도시된 바와 같이, NVDIMM 제어기(2000)는 프로세싱 컴포넌트(2040), 다른 플랫폼 컴포넌트들(2050) 또는 통신 인터페이스(2060)를 포함할 수 있다. 일부 예들에 따르면, NVDIMM 제어기(2000)는 전술된 바와 같이 호스트 컴퓨팅 플랫폼에 상주하거나, 또는 그것과 연결된 NVDIMM 제어기로 구현될 수 있다.
일부 예들에 따르면, 프로세싱 컴포넌트(2040)는 장치(1300) 및/또는 저장 매체(1500)에 대한 처리 동작들 또는 로직을 실행할 수 있다. 프로세싱 컴포넌트(2040)는 다양한 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은, 디바이스들, 로직 디바이스들, 컴포넌트들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 회로들, 회로 소자들(예를 들어, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 및 기타 등등), 집적 회로들, ASIC(application specific integrated circuit)들, PLD(programmable logic device)들, DSP(digital signal processor)들, FPGA(field programmable gate array), 메모리 유닛들, 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩셋들 및 기타 등등을 포함할 수 있다. 소프트웨어 요소들의 예들은, 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 디바이스 드라이버들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 메소드들, 프로시저들, 소프트웨어 인터페이스들, API들, 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것들의 임의의 조합을 포함할 수 있다. 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 예를 구현할지를 결정하는 것은, 주어진 예에서 원하는 바에 따라, 원하는 계산 속도, 전력 레벨들, 내열성, 처리 사이클 비용, 입력 데이터 속도들, 출력 데이터 속도들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약조건들과 같은 임의의 수의 인자들에 따라 가변될 수 있다.
일부 예들에서, 다른 제어기 컴포넌트들(2050)은 하나 이상의 프로세서, 다중-코어 프로세서들, 코-프로세서들, 메모리 유닛들, 인터페이스들, 발진기들, 타이밍 디바이스들 및 기타 등등과 같은 통상적인 컴퓨팅 요소들을 포함할 수 있다. 메모리 유닛들의 예들은, ROM, RAM, DRAM, DDRAM, SDRAM, SRAM, PROM, EPROM, EEPROM, 플래시 메모리 또는 정보 저장에 적합한 임의의 다른 타입의 저장 매체와 같은, 하나 이상의 고속 메모리 유닛의 형태인, 다양한 타입들의 컴퓨터 판독 가능한 저장 매체 및 머신 판독 가능한 저장 매체를 제한 없이 포함할 수 있다.
일부 예들에서, 통신 인터페이스(2060)는 통신 인터페이스를 지원하기 위해 로직 및/또는 피처들을 포함할 수 있다. 이러한 예들을 위해, 통신 인터페이스(2060)는, 직접 또는 네트워크 통신 링크들을 통해 통신하기 위해 다양한 통신 프로토콜들 또는 표준들에 따라 동작하는 하나 이상의 통신 인터페이스를 포함할 수 있다. 통신은, PCI 익스프레스 사양 또는 SMBus 사양과 관련된 것들과 같은 하나 이상의 산업 표준(후계들 및 변형들을 포함함)에 기술된 통신 프로토콜들 또는 표준들의 사용을 통해 일어날 수 있다.
NVDIMM 제어기(2000)의 컴포넌트들 및 피처들은 이산 회로, 주문형 집적 회로(ASIC)들, 로직 게이트들 및/또는 단일 칩 아키텍처들의 임의의 조합을 이용하여 구현될 수 있다. 또한, NVDIMM 제어기(2000)의 피처들은 마이크로컨트롤러들, 프로그래머블 로직 어레이들 및/또는 마이크로프로세서들, 또는 적합하게는 전술한 것들의 적합한 임의의 조합을 이용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 요소들은 통합적으로 또는 개별적으로 본 명세서에서 "로직" 또는 "회로"로서 지칭될 수 있다는 점에 주목해야 한다.
도 20의 블록도에 도시된 예시적인 NVDIMM 제어기(2000)는 많은 잠재적인 구현들 중의 기능적으로 기술하는 일 예를 나타낼 수 있다는 것이 인식되어야 한다. 따라서, 첨부 도면들에 예시된 블록 기능들의 분할, 생략 또는 포함은, 이러한 기능들을 구현하기 위한 하드웨어 컴포넌트들, 회로들, 소프트웨어 및/또는 요소들이 실시예들에서 반드시 분할되거나, 생략되거나 또는 포함될 것임을 암시하지는 않는다.
적어도 하나의 예의 하나 이상의 양태들은 프로세서 내의 다양한 논리를 나타내는 적어도 하나의 머신 판독 가능한 매체에 저장된 대표 명령어들에 의해 구현될 수 있으며, 이 명령어들이 머신에 의해 판독될 때, 컴퓨팅 디바이스 또는 시스템은, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금, 본 명세서에 설명된 기법들을 수행하기 위한 로직을 제조하게 한다. 그러한 표현들은 유형의, 머신 판독 가능한 매체상에 저장되고, 다양한 고객들 또는 제조 설비에 제공되어, 로직 또는 프로세서를 실제로 제조하는 제조 기계들 내에 로딩될 수 있다.
다양한 예들은, 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 사용하여 구현될 수 있다. 일부 예들에서, 하드웨어 요소들은 디바이스들, 컴포넌트들, 마이크로프로세서들, 회로들, 회로 소자들(예를 들어, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 및 기타 등등), 집적 회로들, ASIC들, PLD들, DSP들, FPGA들, 메모리 유닛들, 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩셋들 및 기타 등등을 포함할 수 있다. 일부 예들에서, 소프트웨어 요소들은 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 메소드들, 프로시저들, 소프트웨어 인터페이스들, API들, 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들 또는 그것들의 임의의 조합을 포함할 수 있다. 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 예를 구현할지를 결정하는 것은, 주어진 구현에서 원하는 바에 따라, 원하는 계산 속도, 전력 레벨들, 내열성, 처리 사이클 비용, 입력 데이터 속도들, 출력 데이터 속도들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약조건들과 같은 임의의 수의 인자들에 따라 가변될 수 있다.
일부 예들은, 제조물 또는 적어도 하나의 컴퓨터 판독 가능한 매체를 포함할 수 있다. 컴퓨터 판독 가능한 매체는 로직을 저장하기 위한 비일시적인 저장 매체를 포함할 수 있다. 일부 예들에서, 비일시적인 저장 매체는 휘발성 메모리 또는 비휘발성 메모리, 착탈식 또는 비착탈식 메모리, 소거 가능 또는 소거 불가능 메모리, 기입 가능 또는 재기입 가능 메모리 등을 포함하는, 전자 데이터를 저장할 수 있는 하나 이상의 타입의 컴퓨터 판독 가능한 저장 매체를 포함할 수 있다. 일부 예들에서, 논리는 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 메소드들, 프로시저들, 소프트웨어 인터페이스들, API, 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것들의 임의의 조합과 같은 다양한 소프트웨어 요소들을 포함할 수 있다.
일부 예들에 따르면, 컴퓨터 판독 가능한 매체는 명령어들을 저장 또는 유지하기 위한 비일시적인 저장 매체를 포함할 수 있고, 이 명령어들은, 머신, 컴퓨팅 디바이스 또는 시스템에 의해 실행될 때, 머신, 컴퓨팅 디바이스 또는 시스템으로 하여금, 설명된 예들에 따른 방법들 및/또는 동작들을 수행하게 한다. 명령어들은 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능 코드, 정적 코드 및 동적 코드 등과 같은 임의의 적합한 타입의 코드를 포함할 수 있다. 명령어들은 특정 기능을 수행하도록 머신, 컴퓨팅 디바이스 또는 시스템에 지시하기 위해, 미리 정의된 컴퓨터 언어, 방식 또는 구문에 따라 구현될 수 있다. 명령어들은 임의의 적당한 고수준, 저수준, 개체 지향, 비주얼, 컴파일된 및/또는 해석된 프로그래밍 언어를 사용하여 구현될 수 있다.
일부 예들은 "일 예에서" 또는 "예"라는 표현을 그들의 파생어들과 함께 사용하여 설명될 수 있다. 이러한 용어들은, 예와 관련하여 설명된 특정한 특징, 구조, 또는 특성이 적어도 하나의 예에 포함되어 있다는 것을 의미한다. 명세서의 다양한 곳에서 "일 예에서"라는 문구의 등장이 모두 동일한 예를 지칭하는 것일 필요는 없다.
일부 예들은, "연결된(coupled)" 및 "접속된(connected)"이라는 표현을 그들의 파생어들과 함께 사용하여 설명될 수 있다. 이러한 용어들은 서로에 대해 반드시 동의어로서 의도된 것은 아니다. 예를 들어, "접속된" 및/또는 "연결된"이라는 용어들을 이용한 설명은, 2개 이상의 요소가 서로 직접 물리적으로, 혹은 전기적으로 접촉하는 것을 나타낼 수 있다. 하지만, "연결된"이라는 용어는, 2개 이상의 요소가 서로 직접 접촉하고 있지 않지만 여전히 서로 협력하거나 상호작용하는 것을 의미할 수도 있다.
이하의 예들은 본 명세서에 개시된 기술들의 추가적인 예들과 관련된다.
예 1. 예시적인 장치는 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에 있는 회로를 포함할 수 있다. 비휘발성 및 휘발성 메모리는 NVDIMM에 상주할 수 있다. 예시적인 장치는, 상태 요청을 수신하기 위해, 회로에 의해 실행하기 위한 수신 컴포넌트를 더 포함한다. 예시적인 장치는, 상태 요청에 응답하여 상태를 결정하기 위해, 회로에 의해 실행하기 위한 상태 컴포넌트를 더 포함한다. 예시적인 장치는, NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상태를 지시하기 위해, 회로에 의해 실행하기 위한 지시 컴포넌트를 더 포함할 수 있다. 이런 예를 위해, 선택적인 어설션은 레지스터 맵에 기초할 수 있다.
예 2. 예 1의 예시적인 장치에서, 제1 레지스터 세트는 SMBus 인터페이스를 통하여 상태 요청의 요청자에 의해 액세스 가능할 수 있다.
예 3. 예 2의 예시적인 장치에서, 요청자는 NVDIMM과 연결된 호스트 컴퓨팅 플랫폼에서 호스트 회로에 의해 구현된 기본 입력/출력 시스템(BIOS), 애플리케이션 또는 디바이스 드라이버를 포함할 수 있다.
예 4. 예 1의 예시적인 장치에서, 상태 요청은 NVDIMM의 건강 상태에 대한 요청을 포함할 수 있다.
예 5. 예 1의 예시적인 장치에서, 상태 요청은 제어기의 상태 또는 NVDIMM의 상태에 대한 요청을 포함할 수 있다.
예 6. 예 5의 예시적인 장치에서, 지시 컴포넌트는, 제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 또는 재앙적 저장, 재앙적 저장 성공 또는 재앙적 저장 실패를 트리거링한 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀 중의 적어도 하나로서, 상태를 지시할 수 있다.
예 7. 예 2의 예시적인 장치는 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 요청자로부터 제1 커맨드를 수신하기 위한 수신 컴포넌트를 더 포함한다. 이러한 예들을 위해, 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있고, 제2 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 2의 예시적인 장치는, NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해 제1 커맨드의 수락 및 완료 상태를 지시하기 위한 지시 컴포넌트를 더 포함하고, 제3 비트 세트의 어설션은 레지스터 맵에 기초한다. 이런 예를 위해, 제3 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 8. 예 7의 예시적인 장치에서, 지시 컴포넌트는 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해 제1 커맨드의 제1 완료 상태를 지시할 수 있다. 이런 예를 위해, 제4 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제1 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드 완료 실패를 포함할 수 있다. 제4 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 9. 예 8의 예시적인 장치는, NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 제1 커맨드를 중단하기 위한 요청자로부터 중단 커맨드를 수신하는 수신 컴포넌트를 더 포함한다. 이런 예를 위해, 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능하다. 예 8의 예시적인 장치는 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 중단 커맨드의 수락 및 중단 커맨드의 후속 완료를 지시하기 위해 지시 컴포넌트를 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 10. 예 8의 예시적인 장치에서, 제1 커맨드는 주어진 시점에 휘발성 메모리에 유지된 데이터를 보존하기 위해 저장 커맨드를 더 포함할 수 있다.
예 11. 예 8의 예시적인 장치는 비휘발성 메모리의 제1 영역에 데이터를 저장하고, 요청자에 의해 지시된 제1 GUID과의 관련성을 유지하기 위해, 회로에 의해 실행하기 위한 저장 컴포넌트를 더 포함한다. 이런 예를 위해, GUID는 SAVE 커맨드로 지시될 수 있다.
예 12. 예 8의 예시적인 장치에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 복원하기 위한 복원 커맨드를 더 포함할 수 있다.
예 13. 예12의 예시적인 장치는, 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위해, 회로에 의해 실행하기 위한 복원 컴포넌트를 더 포함한다. 이런 예를 위해, 제1 영역은 이전에 요청자에 의해 지시된 제1 GUID와 관련될 수 있고, GUID는 복원 커맨드로 지시된다.
예 14. 예 8의 예시적인 장치에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 소거하기 위한 소거 커맨드를 포함할 수 있다.
예15. 예 14의 예시적인 장치는, 비휘발성 메모리의 제1 영역으로부터 데이터를 소거하기 위해, 회로에 의해 실행하기 위한 소거 컴포넌트를 더 포함한다. 이런 예를 위해, 제1 영역은 이전에 요청자에 의해 지시된 제1 GUID와 관련될 수 있다. GUID는 소거 커맨드로 지시될 수 있다.
예 16. 예 8의 예시적인 장치는 또한, 수신 컴포넌트에 의해 수신된 제1 커맨드가 암 커맨드인 것을 포함한다. 예 8의 예시적인 장치는, NVDIMM과 연결된 하나 이상의 커패시터가 충전하게 하기 위해, 회로에 의해 실행하기 위한 암 컴포넌트를 더 포함한다. 예 8의 예시적인 장치는, 직류 전원 손실이 감지되거나 예상되면, 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여 재앙적 저장을 구현할 수 있는, 회로에 의해 실행하기 위한 저장 컴포넌트를 더 포함한다.
예 17. 예 16의 예시적인 장치는, 요청자로부터 디스암(disarm) 커맨드를 수신하기 위한 수신 컴포넌트를 더 포함한다. 이런 예를 위해, 디스암 커맨드는 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 수신될 수 있다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 이런 예를 위해, 암 컴포넌트는 디스암 커맨드에 응답하여 하나 이상의 커패시터가 방전하도록 허용할 수 있다. 또한, 이런 예를 위해, 지시 컴포넌트는 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 디스암 커맨드의 수락 및 디스암 커맨드의 후속 완료를 지시할 수 있다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 18. 예 1의 예시적인 장치에서, 비휘발성 메모리는 NAND 플래시 메모리를 포함할 수 있고, 휘발성 메모리는 DRAM을 포함할 수 있다.
예 19. 예시적인 방법은, 상태 요청을 제어기에서 수신하는 단계를 포함할 수 있고, 비휘발성 메모리를 위한 제어기는 휘발성 메모리에 유지된 데이터를 보존할 수 있다. 비휘발성 및 휘발성 메모리는 NVDIMM에 상주할 수 있다. 예시적인 방법은 상태 요청에 응답하여 상태를 결정하는 단계, 및 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상태를 지시하는 단계를 더 포함할 수 있다. 선택적인 어설션은 레지스터 맵에 기초할 수 있다.
예 20. 예 19의 예시적인 방법에서, 제1 레지스터 세트는 SMBus 인터페이스를 통하여 상태 요청의 요청자에 의해 액세스 가능할 수 있다.
예 21. 예 20의 예시적인 방법에서, 요청자는 NVDIMM과 연결된 호스트 컴퓨팅 플랫폼에 있는 회로에 의해 구현된 BIOS, 애플리케이션 또는 디바이스 드라이버를 포함할 수 있다.
예 22. 예 19의 예시적인 방법에서, 상태 요청은 NVDIMM의 건강 상태에 대한 요청을 포함할 수 있다.
예 23. 예 19의 예시적인 방법에서, 상태 요청은 제어기의 상태 또는 NVDIMM의 상태에 대한 요청을 포함할 수 있다.
예 24. 예 23의 예시적인 방법에서, 상태를 지시하는 단계는, 제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 재앙적 저장, 재앙적 저장 성공, 또는 재앙적 저장 실패를 트리거링한 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀 중의 적어도 하나를 지시하는 단계를 포함한다.
예 25. 예 20의 예시적인 방법은, NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 요청자로부터 제1 커맨드를 수신하는 단계를 더 포함한다. 이런 예를 위해, 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 20의 예시적인 방법은 NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해 제1 커맨드의 수락 및 완료 상태를 지시하는 단계를 더 포함한다. 제3 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 26. 예 25의 예시적인 방법은, NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해 제1 커맨드의 제1 완료 상태를 지시하는 단계를 더 포함한다. 이런 예를 위해, 제4 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제1 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드의 완료 실패를 포함할 수 있고, 제4 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 27. 예 25의 예시적인 방법은, NVDIM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 제1 커맨드를 중단하기 위한 요청자로부터 중단 커맨드를 수신하는 단계를 더 포함한다. 이런 예를 위해, 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 또한, 예 25의 예시적인 방법은, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 중단 커맨드의 수락 및 중단 커맨드의 후속 완료의 지시하는 단계를 포함할 수 있고, 제6 비트 세트의 어설션은 레지스터 맵에 기초한다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 28. 예 26의 예시적인 방법에서, 제1 커맨드는, 주어진 시점에 휘발성 메모리에 유지된 데이터를 보존하기 위한 저장 커맨드를 포함할 수 있다.
예 29. 예 28의 예시적인 방법에서, 요청자는, 비휘발성 메모리의 제1 영역에 데이터를 저장하고 제1 GUID와 제1 영역 사이의 관련성을 보존하기 위해, 제어기를 위한 제1 GUID를 지시한다.
예 30. 예 26의 예시적인 방법에서, 제1 커맨드는, 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 복원하기 위한 복원 커맨드를 포함할 수 있다.
예 31. 예 30의 예시적인 방법에서, 요청자는, 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위해, 제어기를 위한 제1 GUID를 지시할 수 있다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 32. 예 26의 예시적인 방법에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 소거하기 위한 소거 커맨드를 포함할 수 있다.
예 33. 예 32의 예시적인 방법에서, 요청은 비휘발성 메모리의 제1 영역으로부터 데이터를 소거하기 위해, 제어기를 위한 제1 GUID를 지시할 수 있다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 34. 예 26의 예시적인 방법에서, 제1 커맨드는, NVDIMM와 연결된 하나 이상의 커패시터가 충전하게 하기 위해, 제어기에게 지시하는 암 커맨드를 포함할 수 있고, 직류 전원 손실이 감지되거나 예상되면, 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여, 제어기가 재앙적 저장을 구현할 수 있게 해준다.
예 35. 예 34의 예시적인 방법은, 하나 이상의 커패시터가 방전하도록 허용하는 것을 제어기에게 지시하는 요청자로부터, 디스암 커맨드를 수신하는 단계를 더 포함한다. 디스암 커맨드는, NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 수신될 수 있다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 34의 예시적인 방법은, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 디스암 커맨드의 수락 및 디스암 커맨드의 후속 완료를 지시하는 단계를 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 36. 예 19의 예시적인 방법에서, 비휘발성 메모리는 NAND 플래시 메모리를 포함하고, 휘발성 메모리는 DRAM을 포함한다.
예 37. 복수의 명령어를 포함하는 예시적인 머신 판독 가능한 매체는, 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에 의해 실행되는 것에 응답한다. 비휘발성 및 휘발성 메모리는 NVDIMM에 상주할 수 있고, 명령어들은 제어기가 예 19 내지 예 35 중의 어느 하나에 따른 방법을 수행하게 할 수 있다.
예 38. 예시적인 장치는 예 19 내지 예 25 중의 어느 하나의 방법들을 수행하기 위한 수단을 포함할 수 있다.
예 39. 복수의 명령어를 포함하는 예시적인 머신 판독 가능한 매체는 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에 의해 실행되는 것에 응답한다. 비휘발성 및 휘발성 메모리는 NVDIMM에 상주할 수 있다. 명령어들은 또한, 제어기가 상태 요청을 수신하게 할 수 있다. 명령어들은 또한, 제어기가 상태 요청에 응답하여 상태를 결정하게 할 수 있다. 명령어들은 또한, NVDIM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 제어기가 상태를 지시하게 할 수 있다. 선택적인 어설션은 레지스터 맵에 기초할 수 있다.
예 40. 예 39의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 제1 레지스터 세트는 SMBus 인터페이스를 통하여 상태 요청의 요청자에 의해 액세스 가능하다.
예 41. 예 40의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 요청자는 NVDIMM과 연결된 호스트 컴퓨팅 플랫폼에 회로에 의해 구현된 기본 입력/출력 시스템(BIOS), 애플리케이션 또는 디바이스 드라이버를 포함할 수 있다.
예 42. 예 40의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 상태 요청은 NVDIMM의 건강 상태에 대한 요청을 포함할 수 있다.
예 43. 예 40의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 상태 요청은 제어기의 상태 또는 NVDIMM의 상태에 대한 요청을 포함할 수 있다.
예 44. 예 43의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 명령어는, 제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 재앙적 저장, 재앙적 저장 성공 또는 재앙적 저장 실패를 트리거링한 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀 중의 적어도 하나를 지시함으로써, 제어기가 상태를 지시하게 할 수 있다.
예 45. 예 40의 예시적인 적어도 하나의 머신 판독 가능한 매체는, NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 요청자로부터 제1 커맨드를 제어기가 수신하게 하는 명령어들을 더 포함한다. 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있고, 제2 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 40의 예시적인 적어도 하나의 머신 판독 가능한 매체는, NVDIM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해 제1 커맨드의 수락 및 완료 상태를 제어기가 지시하게 하는 명령어들을 더 포함한다. 제3 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 46. 예 45의 예시적인 적어도 하나의 머신 판독 가능한 매체는, NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해 제1 커맨드의 제1 완료 상태를 제어기가 지시하게 하는 명령어들을 더 포함한다. 제4 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제1 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드의 완료 실패를 포함할 수 있고, 제4 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 47. 예 44의 예시적인 적어도 하나의 머신 판독 가능한 매체는 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 제1 커맨드를 중단하기 위한 요청자로부터 중단 커맨드를 제어기가 수신하게 하는 명령어들을 더 포함한다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 44의 예시적인 적어도 하나의 머신 판독 가능한 매체는, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 중단 커맨드의 수락 중단 커맨드 및 후속 완료를 제어기가 지시하게 하는 명령어들을 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 48. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 주어진 시점에 휘발성 메모리에 유지된 데이터를 보존하기 위한 저장 커맨드를 포함할 수 있다.
예 49. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 요청자는, 비휘발성 메모리의 제1 영역에 데이터를 저장하고, 제1 GUID와 제1 영역 간의 관련성을 보존하기 위해, 제어기를 위한 제1 GUID를 지시할 수 있다.
예 50. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 복원하기 위한 복원 커맨드를 포함할 수 있다.
예 51. 예 50의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 요청자는 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위한 제어기를 위한 제1 GUID를 지시할 수 있다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 52. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 소거하기 위한 소거 커맨드를 포함할 수 있다.
예 53. 예 52의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 요청은 데이터를 비휘발성 메모리의 제1 영역으로부터 소거하기 위한 제어기를 위한 제1 GUID를 지시할 수 있다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 54. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는, NVDIMM과 연결된 하나 이상의 커패시터가 충전하게 하기 위해, 제어기에게 지시하는 암 커맨드를 포함할 수 있고, 직류 전원 손실이 감지되거나 예상되면, 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여, 제어기가 재앙적 저장을 구현할 수 있게 해준다.
예 55. 예 54의 예시적인 적어도 하나의 머신 판독 가능한 매체는, 하나 이상의 커패시터가 방전하도록 허용하는 것을 제어기에게 지시하는 요청자로부터, 제어기가 디스암 커맨드를 수신하게 하는 명령어들을 더 포함한다. 디스암 커맨드는 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 수신될 수 있다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다. 예 54의 예시적인 적어도 하나의 머신 판독 가능한 매체는, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해, 제어기가 디스암 커맨드의 수락 및 디스암 커맨드의 후속 완료를 지시하게 하는 명령어들을 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능할 수 있다.
예 56. 예 46의 예시적인 적어도 하나의 머신 판독 가능한 매체에서, 비휘발성 메모리는 NAND 플래시 메모리를 포함할 수 있고, 휘발성 메모리는 DRAM을 포함한다.
예 57. 예시적인 방법은, 호스트 컴퓨팅 플랫폼에 있는 회로에 의한 구현된 디바이스 드라이버에서, 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에게 상태 요청을 송신하는 단계를 포함할 수 있다. 이런 예를 위해, 비휘발성 및 휘발성 메모리는 호스트 컴퓨팅 플랫폼에 연결된 NVDIMM에 상주할 수 있다. 예시적인 방법은 SMBus 인터페이스를 통하여 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트에 액세스하는 단계를 더 포함할 수 있다. 제1 비트 세트는 레지스터 맵에 기초하여 제1 비트 세트의 선택적인 어설션을 통해 상태 요청에 응답하여 제어기에 의해 지시된 상태를 나타낼 수 있다.
예 58. 예 57의 방법에서, 상태 요청은 NVDIMM의 건강 상태에 대한 요청을 포함할 수 있다.
예 59. 예 57의 본 방법에서, 상태 요청은 제어기의 상태 또는 NVDIMM의 상태에 대한 요청을 포함할 수 있다.
예 60. 예 59의 본 방법에서, 지시된 상태는, 제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 재앙적 저장, 재앙적 저장 성공 또는 재앙적 저장 실패를 트리거링한 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀 중의 적어도 하나를 포함할 수 있다.
예 61. 예 57의 본 방법은 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 제1 커맨드를 송신하는 단계를 더 포함한다. 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다. 예 57의 방법은, NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의, 제어기에 의한 어설션을 통해 제1 커맨드의 수락 및 완료 상태의 지시를 수신하는 단계를 더 포함한다. 제3 비트 세트는 레지스터 맵에 기초하여 어설션될 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다.
예 62. 예 61의 본 방법은 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의, 제어기에 의한 어설션을 통해 제1 커맨드의 제1 완료 상태의 지시를 수신하는 단계를 더 포함한다. 제4 비트 세트는 레지스터 맵에 기초하여 어설션될 수 있다. 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드 완료 실패를 포함할 수 있다. 제4 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다.
예 63. 예 62의 본 방법은 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 제1 커맨드를 중단하기 위한 중단 커맨드를 송신하는 단계를 더 포함한다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다. 예 62의 본 방법은 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의, 제어기에 의한 어설션을 통해 중단 커맨드의 수락 및 중단 커맨드의 후속 완료의 지시를 수신하는 단계를 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다.
예 64. 예 62의 본 방법에서, 제1 커맨드는 주어진 시점에 휘발성 메모리에 유지된 데이터를 보존하기 위한 저장 커맨드를 포함할 수 있다.
예 65. 예 64의 본 방법은, 비휘발성 메모리의 제1 영역에 데이터를 저장하고 제1 영역과 제1 GUID 간의 관련성을 보존하기 위해, 제어기를 위한 제1 GUID를 지시하는 단계를 포함한다.
예 66. 예 62의 본 방법에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 복원하기 위한 복원 커맨드를 포함할 수 있다.
예 67. 예 66의 본 방법은 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위해, 제어기를 위한 제1 GUID를 지시하는 단계를 더 포함하고, 제1 영역은 제어기에 의해 이전에 제1 GUID 와 관련된다.
예 68. 예 62의 본 방법에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 소거하기 위한 소거 커맨드를 포함할 수 있다.
예 69. 예 68의 본 방법은, 데이터를 비휘발성 메모리의 제1 영역으로부터 소거하기 위해, 제어기를 위한 제1 GUID를 지시하는 단계를 더 포함한다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 70. 예 62의 본 방법에서, 제1 커맨드는 NVDIMM과 연결된 하나 이상의 커패시터가 충전되게 하는 것을 제어기에게 지시하는 암 커맨드를 포함할 수 있고, 직류 전원 손실이 감지되거나 예상되면, 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여, 제어기가 재앙적 저장을 구현할 수 있게 해준다.
예 71. 예 70의 본 방법은, 하나 이상의 커패시터가 방전하도록 허용하는 것을 제어기에게 지시하는 디스암 커맨드를 송신하는 단계를 더 포함한다. 이런 예를 위해, 디스암 커맨드는 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 송신될 수 있다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다. 예 70의 본 방법은 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의, 제어기에 의한 어설션을 통해 디스암 커맨드의 수락 및 디스암 커맨드의 후속 완료의 지시를 수신하는 단계를 더 포함한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다.
예 72. 예 57의 본 방법에서, 비휘발성 메모리는 NAND 플래시 메모리를 포함할 수 있고 휘발성 메모리는 DRAM을 포함할 수 있다.
예 73. 복수의 명령어를 포함하여 적어도 하나의 머신 판독 가능한 매체는, 호스트 컴퓨팅 플랫폼에서 시스템에 의해 실행되는 것에 응답하여, 시스템이 예 57 내지 예 72 중의 어느 하나에 따른 방법을 수행하게 할 수 있다.
예 74. 장치는 예 57 내지 예 72 중의 어느 하나의 방법들을 수행하기 위한 수단을 포함할 수 있다.
예 75. 적어도 하나의 머신 판독 가능한 매체는 복수의 명령어를 포함할 수 있고, 이 명령어들은, 호스트 컴퓨팅 플랫폼에서 시스템에 의해 실행되는 것에 응답하여, 휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에게, 시스템이 상태 요청을 송신하게 할 수 있다. 비휘발성 및 휘발성 메모리는 호스트 컴퓨팅 플랫폼과 연결된 NVDIMM에 상주할 수 있다. 명령어들은 또한, 시스템이 SMBus 인터페이스를 통하여 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트에 액세스하게 할 수 있다. 제1 비트 세트는, 레지스터 맵에 기초하여 제1 비트 세트의 선택적인 어설션을 통해 상태 요청에 응답하여 제어기에 의해 지시된 상태를 나타낼 수 있다.
예 76. 예 75의 적어도 하나의 머신 판독 가능한 매체에서, 상태 요청은 NVDIMM의 건강 상태에 대한 요청을 포함할 수 있다.
예 77. 예 75의 적어도 하나의 머신 판독 가능한 매체에서, 상태 요청은 제어기의 상태 또는 NVDIMM의 상태에 대한 요청을 포함할 수 있다.
예 78. 예 77의 적어도 하나의 머신 판독 가능한 매체에서, 지시된 상태는 제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 재앙적 저장, 재앙적 저장 성공 또는 재앙적 저장 실패를 트리거링한 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀 중의 적어도 하나를 포함할 수 있다.
예 79. 예 75의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해, 시스템이 제1 커맨드를 중단하는 중단 커맨드를 송신하게 한다. 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 SMBus 인터페이스를 통하여 액세스 가능할 수 있다. 명령어들은 또한, NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의, 제어기에 의한 어설션을 통해, 시스템이 제1 커맨드의 수락 및 완료 상태의 지시를 수신하게 한다. 제3 비트 세트는 레지스터 맵에 기초하여 어설션될 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 액세스 가능할 수 있다.
예 80. 예 79의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, 시스템이 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의, 제어기에 의한 어설션을 통해 제1 커맨드의 제1 완료 상태의 지시를 수신하게 한다. 제4 비트 세트는 레지스터 맵에 기초하여 어설션될 수 있다. 제1 완료 상태는 제1 커맨드의 성공적인 완료 또는 제1 커맨드 완료 실패를 포함할 수 있다.
예 81. 예 80의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해, 시스템이 제1 커맨드를 중단하기 위한 중단 커맨드를 송신하게 한다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 액세스 가능할 수 있다. 명령어들은 또한, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 제어기에 의한 어설션을 통해, 시스템이 중단 커맨드의 수락 및 중단 커맨드의 후속 완료의 지시를 수신하게 한다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 액세스 가능할 수 있다.
예 82. 예 80의 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 주어진 시점에 휘발성 메모리에 유지된 데이터를 보존하기 위한 저장 커맨드를 포함할 수 있다.
예 83. 예 82의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, 비휘발성 메모리의 제1 영역에 데이터를 저장하고 제1 영역과 제1 GUID 간의 관련성을 보존하기 위해, 시스템이 제어기를 위한 제1 GUID를 지시하게 한다.
예 84. 예 80의 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 휘발성 메모리에 복원하기 위한 복원 커맨드를 포함할 수 있다.
예 85. 예 84의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, 비휘발성 메모리의 제1 영역으로부터 데이터를 복원하기 위해, 시스템이 제어기를 위한 제1 GUID를 지시하게 하고, 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련된다.
예 86. 예 80의 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는 비휘발성 메모리에 저장된 데이터를 소거하기 위한 소거 커맨드를 포함할 수 있다.
예 87. 예 86의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, 비휘발성 메모리의 제1 영역으로부터 데이터를 소거하기 위해, 시스템이 제어기를 위한 제1 GUID를 지시하게 한다. 제1 영역은 제어기에 의해 이전에 제1 GUID와 관련될 수 있다.
예 88. 예 80의 적어도 하나의 머신 판독 가능한 매체에서, 제1 커맨드는, NVDIMM과 연결된 하나 이상의 커패시터가 충전되게 하는 것을 제어기에게 지시하는 암 커맨드를 포함할 수 있고, 직류 전원 손실이 감지되거나 예상되면, 휘발성 메모리에 유지된 데이터를 보존하기 위해 하나 이상의 커패시터에 의해 공급된 전력을 이용하여, 제어기가 재앙적 저장을 구현할 수 있게 해준다.
예 89. 예 88의 적어도 하나의 머신 판독 가능한 매체에서, 명령어들은 또한, 하나 이상의 커패시터가 방전하도록 허용하는 것을 제어기에게 지시하는 디스암 커맨드를 시스템이 송신하게 한다. 이런 예를 위해, 디스암 커맨드는 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 송신할 수 있다. 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 디바이스 드라이버에 의해 액세스 가능할 수 있다. 명령어들은 또한, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 제어기에 의한 어설션을 통해, 시스템이 디스암 커맨드의 수락 및 디스암 커맨드의 후속 완료의 지시를 수신하게 할 수 있다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있고, 제6 레지스터 세트는 SMBus 인터페이스를 통하여 액세스 가능할 수 있다.
예 90. 예 75의 적어도 하나의 머신 판독 가능한 매체에서, 비휘발성 메모리는 NAND 플래시 메모리를 포함할 수 있고, 휘발성 메모리는 DRAM을 포함할 수 있다.
예 91. 예 75의 적어도 하나의 머신 판독 가능한 매체에서, 시스템은 기본 입력/출력 시스템(BIOS), 애플리케이션 또는 디바이스 드라이버를 포함할 수 있다.
예 92. 시스템은 BIOS, 애플리케이션 또는 디바이스 드라이버를 구현하기 위한 호스트 컴퓨팅 플랫폼을 위한 회로를 포함할 수 있다. 시스템은 또한, 상주하는 비휘발성 메모리 및 휘발성 메모리를 갖춘 NVDIMM을 포함할 수 있다. 비휘발성 메모리는 휘발성 메모리에 유지된 데이터를 보존할 수 있다. 시스템은 또한, 비휘발성 메모리를 위한 제어기를 포함할 수 있다. 제어기는 BIOS, 애플리케이션 또는 디바이스 드라이버로부터 상태 요청을 수신하도록 동작할 수 있다. 상태 요청은 NVDIMM의 건강 상태, 제어기의 상태 또는 NVDIMM의 상태에 대한 요청 중의 하나를 포함할 수 있다. 제어기는 또한, 상태 요청에 응답하여 상태를 결정하고, NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상태를 지시하도록 동작할 수 있다. 선택적인 어설션은 레지스터 맵에 기초할 수 있다.
예 93. 예 92의 시스템은, 시스템 관리 버스(SMBus) 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있는 제1 레지스터 세트를 포함할 수 있다.
예 94. 예 93의 시스템에서, 제어기는 또한, NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해, BIOS, 애플리케이션 또는 디바이스 드라이버로부터 커맨드를 수신하도록 동작할 수 있다. 이런 예를 위해, 제2 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제2 레지스터 세트는 SMBus 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있다. 제어기는 또한, NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해 커맨드의 수락 및 완료 상태를 지시하도록 동작할 수 있다. 제3 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제3 레지스터 세트는 SMBus 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있다. 제어기는 또한, NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해 커맨드의 완료 상태를 지시하도록 동작할 수 있다. 제4 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 완료 상태는 커맨드의 성공적인 완료 또는 커맨드 완료 실패를 포함할 수 있다. 제4 레지스터 세트는 SMBus 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있다.
예 95. 예 94의 시스템에서, 제어기는 또한, NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 커맨드를 중단하기 위해, BIOS, 애플리케이션 또는 디바이스 드라이버로부터 중단 커맨드를 수신할 수 있다. 이런 예를 위해, 제5 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제5 레지스터 세트는 SMBus 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있다. 제어기는 또한, NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해 중단 커맨드의 수락 중단 커맨드 및 후속 완료를 지시하도록 동작할 수 있다. 제6 비트 세트의 어설션은 레지스터 맵에 기초할 수 있다. 제6 레지스터 세트는 SMBus 인터페이스를 통하여 BIOS, 애플리케이션 또는 디바이스 드라이버에 의해 액세스 가능할 수 있다.
강조할 점은, 본 개시내용의 요약서는, 판독자가 기술적 개시내용의 특성을 신속하게 확인할 수 있게 해주는 요약서를 요구하는 37 C.F.R. Section 1.72(b) 규정에 따라 제공되어 있다는 것이다. 이 요약서는, 청구항들의 범주 또는 의미를 해석하거나 한정하기 위해 사용되지 않을 것으로 이해되면서 제출된다. 또한, 전술한 상세한 설명에서, 본 개시내용을 간소화할 목적으로, 다양한 특징부들이 단일 예에 함께 그룹화되어 있음을 알 수 있다. 본 개시내용의 이런 방법은, 청구된 예들이 각각의 청구항에서 명확히 인용된 것보다 더 많은 특징을 요구하는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음과 같은 청구항들이 반영하는 바와 같이, 발명 대상은 개시된 단일 예의 모든 특징보다 적다. 따라서, 다음의 청구항들은, 각각의 청구항이 별도의 예로서 그 자신을 주장하는, 상세한 설명에 포함된다. 첨부된 청구항들에서, 용어 "포함하는(including)" 및 "여기서(in which)"는 각각의 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 동등 어구로서 각각 보통의 영어 동등어로서 각각 사용된다. 게다가, 용어 "제1", "제2", "제3", 기타 등등은 단순히 라벨로서 사용되며, 그의 개체에 대한 수치적 제한을 두기 위한 것이 아니다.
발명 대상이 구조적 특징 및/또는 방법론적 동작과 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 발명 대상이 전술된 특정의 특징 또는 동작에 반드시 한정되는 것은 아니라는 것을 이해하여야 한다. 오히려, 전술된 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.

Claims (25)

  1. 장치로서,
    휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에서의 회로 - 상기 비휘발성 메모리 및 상기 휘발성 메모리는 NVDIMM(non-volatile dual in-line memory module)에 상주함 -;
    상태 요청을 수신하기 위해, 상기 회로에 의해 실행되는 수신 컴포넌트;
    상기 상태 요청에 응답하여 상태를 결정하기 위해, 상기 회로에 의해 실행되는 상태 컴포넌트; 및
    상기 NVDIMM의 제1 레지스터 세트(first set of registers)에 유지된 제1 비트 세트(first set of bits)의 선택적인 어설션(assertion)을 통해 상기 상태를 지시(indicate)하기 위해, 상기 회로에 의해 실행되는 지시 컴포넌트 - 상기 선택적인 어설션은 레지스터 맵에 기초함 -
    를 포함하는, 장치.
  2. 제1항에 있어서,
    SMBus(system management bus) 인터페이스를 통하여 상기 상태 요청의 요청자에 의해 액세스 가능한 상기 제1 레지스터 세트를 포함하는, 장치.
  3. 제2항에 있어서,
    상기 요청자는 상기 NVDIMM과 연결된 호스트 컴퓨팅 플랫폼에서의 호스트 회로에 의해 구현된 디바이스 드라이버, 애플리케이션 또는 BIOS(basic input/output system)를 포함하고, 상기 상태 요청은 상기 NVDIMM의 건강 상태(health status)에 대한 요청, 상기 제어기의 상태에 대한 요청 또는 상기 NVDIMM의 상태에 대한 요청 중의 적어도 하나를 포함하는, 장치.
  4. 제3항에 있어서,
    제어기 사용 중임, 제어기 비사용 중임, 저장 진행 중임, 저장 중단 진행 중임, 복원 진행 중임, 복원 중단 진행 중임, 소거 진행 중임, 소거 중단 진행 중임, 상기 NVDIMM의 이전 시동 또는 부팅 시에 어설션되지 않은 저장 핀, 재앙적 저장을 트리거링한 상기 NVDIMM의 이전 시동 또는 부팅 시에 어설션된 저장 핀, 재앙적 저장 성공 또는 재앙적 저장 실패 중의 적어도 하나로서 상기 상태를 지시하는 상기 지시 컴포넌트를 포함하는, 장치.
  5. 제2항에 있어서,
    상기 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해, 상기 요청자로부터 제1 커맨드를 수신하는 상기 수신 컴포넌트 - 상기 제2 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제2 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -; 및
    상기 NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해, 상기 제1 커맨드의 수락 및 완료 상태를 지시하는 상기 지시 컴포넌트 - 상기 제3 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제3 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -
    를 포함하는, 장치.
  6. 제5항에 있어서,
    상기 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해, 상기 제1 커맨드의 제1 완료 상태를 지시하는 상기 지시 컴포넌트를 포함하고, 상기 제4 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제1 완료 상태는 상기 제1 커맨드의 성공적인 완료 또는 상기 제1 커맨드의 완료 실패를 포함하고, 상기 제4 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능한 것인, 장치.
  7. 제6항에 있어서,
    상기 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해, 상기 제1 커맨드를 중단하기 위한 상기 요청자로부터의 중단 커맨드를 수신하는 상기 수신 컴포넌트 - 상기 제5 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제5 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -; 및
    상기 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해, 상기 중단 커맨드의 수락 및 상기 중단 커맨드의 후속 완료를 지시하는 상기 지시 컴포넌트 - 상기 제6 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제6 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -
    를 포함하는, 장치.
  8. 제6항에 있어서,
    상기 제1 커맨드는 주어진 시점에 상기 휘발성 메모리에 유지된 데이터를 보존하는 저장 커맨드이고;
    상기 데이터를 상기 비휘발성 메모리의 제1 영역에 저장하고, 상기 요청자에 의해 지시된 제1 GUID(global unique identifier)와의 관련성을 유지하기 위해, 상기 회로에 의해 실행되는 저장 컴포넌트 - 상기 GUID는 상기 저장 커맨드로 지시됨 -
    를 포함하는, 장치.
  9. 제6항에 있어서,
    상기 제1 커맨드는 상기 비휘발성 메모리에 저장된 데이터를 상기 휘발성 메모리에 복원하는 복원 커맨드이고;
    상기 비휘발성 메모리의 제1 영역으로부터 상기 데이터를 복원하기 위해, 상기 회로에 의해 실행되는 복원 컴포넌트 - 상기 제1 영역은 상기 요청자에 의해 지시된 제1 GUID(global unique identifier)와 이전에 관련되고, 상기 GUID는 상기 복원 커맨드로 지시됨 -
    를 포함하는, 장치.
  10. 제6항에 있어서,
    상기 제1 커맨드는 상기 비휘발성 메모리에 저장된 데이터를 소거하는 소거 커맨드이고;
    상기 비휘발성 메모리의 제1 영역으로부터 상기 데이터를 소거하기 위해, 상기 회로에 의해 실행되는 소거 컴포넌트 - 상기 제1 영역은 상기 요청자에 의해 지시된 제1 GUID(global unique identifier)와 관련되고, 상기 GUID는 상기 소거 커맨드로 지시됨 -
    를 포함하는, 장치.
  11. 제6항에 있어서,
    상기 수신 컴포넌트에 의해 수신되는 상기 제1 커맨드는 암(arm) 커맨드이고;
    상기 NVDIMM과 연결된 하나 이상의 커패시터가 충전되게 하기 위해, 상기 회로에 의해 실행되는 암 컴포넌트; 및
    직류 전원 손실이 감지되거나 예상되면, 상기 휘발성 메모리에 유지된 데이터를 보존하기 위해 상기 하나 이상의 커패시터에 의해 공급되는 전력을 사용하여 재앙적 저장을 구현할 수 있는, 상기 회로에 의해 실행되는 저장 컴포넌트
    를 포함하는, 장치.
  12. 제11항에 있어서,
    상기 요청자로부터 디스암(disarm) 커맨드를 수신하는 상기 수신 컴포넌트 - 상기 디스암 커맨드는 상기 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해 수신되고, 상기 제5 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제5 레지스터 세트는 SMBus 인터페이스를 통하여 요청자에 의해 액세스 가능함 -; 및
    상기 디스암 커맨드에 응답하여 상기 하나 이상의 커패시터가 방전하도록 허용하는 상기 암 컴포넌트; 및
    상기 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해, 상기 디스암 커맨드의 수락 및 상기 디스암 커맨드의 후속 완료를 지시하는 상기 지시 컴포넌트 - 상기 제6 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제6 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -
    를 포함하는, 장치.
  13. 제1항에 있어서,
    상기 비휘발성 메모리는 NAND 플래시 메모리를 포함하고, 상기 휘발성 메모리는 DRAM(dynamic random access memory)을 포함하는, 장치.
  14. 방법으로서,
    제어기에서, 상태 요청을 수신하는 단계 - 비휘발성 메모리를 위한 상기 제어기는 휘발성 메모리에 유지된 데이터를 보존할 수 있고, 상기 비휘발성 메모리 및 상기 휘발성 메모리는 NVDIMM(non-volatile dual in-line memory module)에 상주함 -;
    상기 상태 요청에 응답하여 상태를 결정하는 단계; 및
    상기 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상기 상태를 지시하는 단계 - 상기 선택적인 어설션은 레지스터 맵에 기초함 -
    를 포함하고, 방법.
  15. 제14항에 있어서,
    SMBus(system management bus) 인터페이스를 통하여 상기 상태 요청의 요청자에 의해 액세스 가능한 상기 제1 레지스터 세트를 포함하는, 방법.
  16. 제15항에 있어서,
    상기 상태 요청은 상기 NVDIMM의 상기 제어기의 상태에 대한 요청을 포함하는, 방법.
  17. 제15항에 있어서,
    상기 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 상기 요청자로부터 제1 커맨드를 수신하는 단계 - 상기 제2 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제2 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -; 및
    상기 NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해, 상기 제1 커맨드의 수락 및 완료 상태를 지시하는 단계 - 상기 제3 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제3 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -
    를 포함하는, 방법.
  18. 제17항에 있어서,
    상기 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해, 상기 제1 커맨드의 제1 완료 상태를 지시하는 단계를 포함하고, 상기 제4 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제1 완료 상태는 상기 제1 커맨드의 성공적인 완료 또는 상기 제1 커맨드의 완료 실패를 포함하고, 상기 제4 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능한 것인, 방법.
  19. 제18항에 있어서,
    상기 NVDIMM의 제5 레지스터 세트에 유지된 제5 비트 세트의 어설션을 통해, 상기 제1 커맨드를 중단하기 위한 상기 요청자로부터의 중단 커맨드를 수신하는 단계 - 상기 제5 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제5 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -; 및
    상기 NVDIMM의 제6 레지스터 세트에 유지된 제6 비트 세트의 어설션을 통해, 상기 중단 커맨드의 수락 및 상기 중단 커맨드의 후속 완료를 지시하는 단계 - 상기 제6 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제6 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 요청자에 의해 액세스 가능함 -
    를 포함하는, 방법.
  20. 복수의 명령어들을 포함한 적어도 하나의 머신 판독 가능한 매체로서,
    상기 명령어들은, 호스트 컴퓨팅 플랫폼에서의 시스템에 의해 실행되는 것에 응답하여, 상기 시스템으로 하여금,
    휘발성 메모리에 유지된 데이터를 보존할 수 있는 비휘발성 메모리를 위한 제어기에게 상태 요청을 송신하게 하고 - 상기 비휘발성 메모리 및 상기 휘발성 메모리는 상기 호스트 컴퓨팅 플랫폼과 연결된 NVDIMM(non-volatile dual in-line memory module)에 상주함 -;
    SMBus(system management bus) 인터페이스를 통하여 상기 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트에 액세스하게 하는 - 상기 제1 비트 세트는 상기 레지스터 맵에 기초하여 상기 제1 비트 세트의 선택적인 어설션을 통해 상기 상태 요청에 응답하여 상기 제어기에 의해 지시된 상태를 지시함 -, 적어도 하나의 머신 판독 가능한 매체.
  21. 제20항에 있어서,
    상기 상태 요청은 상기 NVDIMM의 상태 또는 상기 제어기의 상태에 대한 요청을 포함하는, 적어도 하나의 머신 판독 가능한 매체.
  22. 제20항에 있어서,
    상기 시스템으로 하여금,
    상기 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 커맨드를 송신하게 하고 - 상기 제2 비트 세트의 어설션은 레지스터 맵에 기초하고, 상기 제2 레지스터 세트는 상기 SMBus 인터페이스를 통하여 액세스 가능함 -;
    상기 NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의, 상기 제어기에 의한 어설션을 통해, 상기 커맨드의 수락 및 완료 상태의 지시를 수신하게 하는, 상기 명령어들을 포함하는 - 상기 제3 비트 세트는 상기 레지스터 맵에 기초하고, 상기 제3 레지스터 세트는 상기 SMBus 인터페이스를 통하여 액세스 가능함 -, 적어도 하나의 머신 판독 가능한 매체.
  23. 시스템으로서,
    BIOS(basic input/output system), 애플리케이션 또는 디바이스 드라이버를 구현하기 위한 호스트 컴퓨팅 플랫폼을 위한 회로;
    상주하는 비휘발성 메모리 및 휘발성 메모리를 갖는 NVDIMM(non-volatile dual in-line memory module) - 상기 비휘발성 메모리는 휘발성 메모리에 유지된 데이터를 보존할 수 있음 -; 및
    상기 비휘발성 메모리를 위한 제어기
    를 포함하고, 상기 제어기는,
    상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버로부터 상태 요청을 수신하고 - 상기 상태 요청은 상기 NVDIMM의 건강 상태, 상기 제어기의 상태 또는 상기 NVDIMM의 상태에 대한 요청을 포함함 -;
    상기 상태 요청에 응답하여 상태를 결정하고;
    상기 NVDIMM의 제1 레지스터 세트에 유지된 제1 비트 세트의 선택적인 어설션을 통해 상기 상태를 지시하도록 동작하는 - 상기 선택적인 어설션은 레지스터 맵에 기초함 -, 시스템.
  24. 제23항에 있어서,
    SMBus(system management bus) 인터페이스를 통하여 상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버에 의해 액세스 가능한 상기 제1 레지스터 세트를 포함하는, 시스템.
  25. 제24항에 있어서,
    상기 제어기는 또한,
    상기 NVDIMM의 제2 레지스터 세트에 유지된 제2 비트 세트의 어설션을 통해 상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버로부터 커맨드를 수신하고 - 상기 제2 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제2 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버에 의해 액세스 가능함 -;
    상기 NVDIMM의 제3 레지스터 세트에 유지된 제3 비트 세트의 어설션을 통해, 상기 커맨드의 수락 및 완료 상태를 지시하고 - 상기 제3 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 제3 레지스터 세트는 상기 SMBus 인터페이스를 통하여 상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버에 의해 액세스 가능함 -;
    상기 NVDIMM의 제4 레지스터 세트에 유지된 제4 비트 세트의 어설션을 통해, 상기 커맨드의 완료 상태를 지시하도록 동작하는 - 상기 제4 비트 세트의 어설션은 상기 레지스터 맵에 기초하고, 상기 완료 상태는 상기 커맨드의 성공적인 완료 또는 상기 커맨드의 완료 실패를 포함하고, 상기 제4 레지스터 세트는 상기 SMBus 인터페이스를 통하여, 상기 BIOS, 상기 애플리케이션 또는 상기 디바이스 드라이버에 의해 액세스 가능함 -, 시스템.
KR1020167033687A 2014-06-30 2015-05-28 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들 KR101946458B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/319,361 2014-06-30
US14/319,361 US9645829B2 (en) 2014-06-30 2014-06-30 Techniques to communicate with a controller for a non-volatile dual in-line memory module
PCT/US2015/032922 WO2016003559A1 (en) 2014-06-30 2015-05-28 Techniques to communicate with a controller for a non-volatile dual in-line memory module

Publications (2)

Publication Number Publication Date
KR20160148689A true KR20160148689A (ko) 2016-12-26
KR101946458B1 KR101946458B1 (ko) 2019-02-12

Family

ID=54930623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167033687A KR101946458B1 (ko) 2014-06-30 2015-05-28 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들

Country Status (4)

Country Link
US (1) US9645829B2 (ko)
KR (1) KR101946458B1 (ko)
CN (1) CN106462520B (ko)
WO (1) WO2016003559A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021138014A1 (en) * 2019-12-30 2021-07-08 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002043B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US10318340B2 (en) * 2014-12-31 2019-06-11 Ati Technologies Ulc NVRAM-aware data processing system
US9916091B2 (en) 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
US9672091B2 (en) * 2015-11-10 2017-06-06 Samsung Electronics Co., Ltd. Storage device and debugging method thereof
US9847105B2 (en) 2016-02-01 2017-12-19 Samsung Electric Co., Ltd. Memory package, memory module including the same, and operation method of memory package
US10025714B2 (en) * 2016-09-30 2018-07-17 Super Micro Computer, Inc. Memory type range register with write-back cache strategy for NVDIMM memory locations
KR102649048B1 (ko) 2016-11-02 2024-03-18 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10936299B2 (en) 2017-04-28 2021-03-02 Dell Products, L.P. Automated intra-system persistent memory updates
KR102400102B1 (ko) * 2017-05-11 2022-05-23 삼성전자주식회사 데이터 버퍼의 내부 데이터(dq) 터미네이션을 지원하는 메모리 시스템
US10176030B2 (en) 2017-05-15 2019-01-08 Dell Products, L.P. Runtime mechanism to correct incomplete namespace in persistent memory
US10585754B2 (en) 2017-08-15 2020-03-10 International Business Machines Corporation Memory security protocol
KR102353859B1 (ko) * 2017-11-01 2022-01-19 삼성전자주식회사 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈
US20190243723A1 (en) * 2018-02-08 2019-08-08 Micron Technology, Inc. Backup operations from volatile to non-volatile memory
US20190243721A1 (en) * 2018-02-08 2019-08-08 Micron Technology, Inc. Backup operations from volatile to non-volatile memory
US10831393B2 (en) 2018-02-08 2020-11-10 Micron Technology, Inc. Partial save of memory
US20190243720A1 (en) * 2018-02-08 2019-08-08 Micron Technology, Inc. Backup operations from volatile to non-volatile memory
MX2020002280A (es) 2018-03-28 2020-10-07 Senko Advanced Components Inc Conector de fibra óptica de diseño compacto con un capuchón de múltiples usos.
US20200105312A1 (en) * 2018-09-30 2020-04-02 AGIGA Tech NVDIMM System with UPS power source
US11182102B2 (en) 2018-12-28 2021-11-23 Micron Technology, Inc. Host inquiry response generation in a memory device
US10776214B1 (en) * 2019-03-04 2020-09-15 Quanta Computer Inc. System protecting data stored on NVDIMM devices after BIOS update
JP7263067B2 (ja) * 2019-03-14 2023-04-24 キヤノン株式会社 情報処理装置および情報処理装置の制御方法
US10950318B2 (en) 2019-06-14 2021-03-16 Micron Technology, Inc. Memory proximity disturb management
US11531601B2 (en) 2019-12-30 2022-12-20 Advanced Micro Devices, Inc. Error recovery for non-volatile memory modules
KR20230112362A (ko) 2022-01-20 2023-07-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 동작 방법과, 이를 위한 스토리지 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100202239A1 (en) * 2009-02-11 2010-08-12 Stec, Inc. Staged-backup flash backed dram module
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US20120198136A1 (en) * 2009-02-11 2012-08-02 Stec, Inc. Flash backed dram module including logic for isolating the dram
KR20140063660A (ko) * 2011-07-28 2014-05-27 넷리스트 인코포레이티드 플래시-디램 하이브리드 메모리 모듈

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566639B2 (en) * 2009-02-11 2013-10-22 Stec, Inc. Flash backed DRAM module with state of health and/or status information accessible through a configuration data bus
US7983107B2 (en) * 2009-02-11 2011-07-19 Stec, Inc. Flash backed DRAM module with a selectable number of flash chips
US8510598B2 (en) * 2010-03-29 2013-08-13 Dot Hill Systems Corporation Buffer management method and apparatus for power reduction during flush operation
US8949502B2 (en) * 2010-11-18 2015-02-03 Nimble Storage, Inc. PCIe NVRAM card based on NVDIMM
CN102567245B (zh) * 2011-12-27 2014-10-01 深圳国微技术有限公司 用于soc芯片系统的存储控制器及其实现方法
TWI467379B (zh) * 2012-04-23 2015-01-01 Phison Electronics Corp 系統運作方法、記憶體控制器與記憶體儲存裝置
US20150186278A1 (en) * 2013-12-26 2015-07-02 Sarathy Jayakumar Runtime persistence

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100202239A1 (en) * 2009-02-11 2010-08-12 Stec, Inc. Staged-backup flash backed dram module
US20120198136A1 (en) * 2009-02-11 2012-08-02 Stec, Inc. Flash backed dram module including logic for isolating the dram
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
KR20140063660A (ko) * 2011-07-28 2014-05-27 넷리스트 인코포레이티드 플래시-디램 하이브리드 메모리 모듈

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021138014A1 (en) * 2019-12-30 2021-07-08 Advanced Micro Devices, Inc. Command replay for non-volatile dual inline memory modules
CN114902197A (zh) * 2019-12-30 2022-08-12 超威半导体公司 非易失性双列直插式存储器模块的命令重放
CN114902197B (zh) * 2019-12-30 2023-06-13 超威半导体公司 非易失性双列直插式存储器模块的命令重放

Also Published As

Publication number Publication date
US9645829B2 (en) 2017-05-09
KR101946458B1 (ko) 2019-02-12
WO2016003559A1 (en) 2016-01-07
CN106462520A (zh) 2017-02-22
US20150378841A1 (en) 2015-12-31
CN106462520B (zh) 2020-01-21

Similar Documents

Publication Publication Date Title
KR101946458B1 (ko) 비휘발성 이중 인-라인 메모리 모듈을 위한 제어기와 통신하기 위한 기법들
US10417070B2 (en) Techniques for handling errors in persistent memory
EP2901286B1 (en) Techniques associated with a read and write window budget for a two level memory system
US9519429B2 (en) Techniques to manage multiple sequential write streams to a solid state drive
TWI713033B (zh) 用於以指令為基礎的晶粒內終止之技術
US20150205646A1 (en) Context aware synchronization
TWI814074B (zh) 用以使用針對雙直列記憶體模組的晶片選擇信號之技術
US20170371785A1 (en) Techniques for Write Commands to a Storage Device
CN108780427B (zh) 用于促使内容模式被存储到存储器装置的存储器单元的技术
US8745363B2 (en) Bootable volatile memory device, memory module and processing system comprising bootable volatile memory device, and method of booting processing system using bootable volatile memory device
JP2022161812A (ja) 低電力のコヒーレントメモリデバイスにアクセスする場合のプロセッサストールの回避法
EP3053023A1 (en) Programming memory controllers to allow performance of active memory operations
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