IP Library Granted Patent US 9,552,176
Granted Patent B2
US 9,552,176 · App. 13/862,104 · Granted Jan 24, 2017

Block storage using a hybrid memory device

Inventors: Scott Chao-Chueh Lee (Bellevue, WA); Robin A. Alexander (Woodinville, WA); Lee E. Prewitt (Mercer Island, WA); Chiuchin Chen (Bellevue, WA); Vladimir Sadovsky (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F3/0685G06F3/0604G06F3/0605G06F3/068G06F3/0646G06F3/0659
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,552,176
App. No.
13/862,104
Granted
Jan 24, 2017
Kind
B2
Abstract

Techniques for block storage using a hybrid memory device are described. In at least some embodiments, a hybrid memory device includes a volatile memory portion, such as dynamic random access memory (DRAM). The hybrid memory device further includes non-volatile memory portion, such as flash memory. In at least some embodiments, the hybrid memory device can be embodied as a non-volatile dual in-line memory module, or NVDIMM. Techniques discussed herein employ various functionalities to enable the hybrid memory device to be exposed to various entities as an available block storage device.

Claims (52)

1. One or more computer-readable storage media comprising instructions stored thereon that, responsive to execution by a computing device, cause the computing device to perform operations comprising:

discovering an instance of a block storage device that corresponds to at least one hybrid memory device installed on the computing device, the at least one hybrid memory device including at least one volatile memory portion and at least one non-volatile memory portion;

generating, responsive to said discovery of the instance, a device object that represents the instance of the block storage device;

loading, responsive to said generating the device object, a device driver for the at least one hybrid memory device; and

presenting a visual representation of the at least one hybrid memory device, the visual representation enabling a user to interact directly with the instance of the block storage device via the device driver and the device object such that data is directly writable by the user to both the at least one volatile memory portion and the at least one non-volatile memory portion of the at least one hybrid memory device via logical block addressing.

2. One or more computer-readable storage media as recited in claim 1 , wherein the at least one hybrid memory device comprises a non-volatile dual in-line memory module device (NVDIMM).

3. One or more computer-readable storage media as recited in claim 1 , wherein said enabling comprises enabling a user to select the visual representation of the block storage device for non-volatile storage of data on the computing device.

4. One or more computer-readable storage media as recited in claim 1 , wherein the operations comprise:

receiving a notification event from the block storage device; and

initiating an action based on the notification event and utilizing the computing device.

5. One or more computer-readable storage media as recited in claim 4 , wherein the notification event indicates at least one of a hardware error or a software error, and the action comprises writing data to the at least one non-volatile memory portion in response to the notification event.

6. One or more computer-readable storage media as recited in claim 1 , wherein the operations comprise:

querying the at least one hybrid memory device for a state condition of the at least one hybrid memory device; and

logging a state of the at least one hybrid memory device based on the state condition.

7. One or more computer-readable storage media as recited in claim 1 , wherein the operations comprise:

receiving an indication of an event that may cause a loss of data for the computing device; and

saving the data to the at least one non-volatile memory portion of the at least one hybrid memory device.

8. A computer-implemented method, comprising:

detecting a hybrid memory device installed on a computing device, the hybrid memory device including at least one volatile memory portion and at least one non-volatile memory portion integrated on a single device;

exposing the hybrid memory device as one or more available block storage devices to one or more of a user, an application, or a system process, such that data is directly writable via a device driver by the one or more of the user, the application, or the system process to both the at least one volatile memory portion and the at least one non-volatile memory portion of the hybrid memory device via logical block addressing; and

enabling access by the one or more of the user, the application, or the system process, to information about both the at least one volatile memory portion and the at least one non-volatile memory portion of the hybrid memory device, including one or more of an amount of storage space used, an amount of storage space available, or one or more corrupt or unusable portions of storage of the hybrid memory device.

9. A method as described in claim 8 , comprising:

receiving a notification of an error condition for the computing device; and

causing data from the computing device to be stored on the at least one non-volatile memory portion of the hybrid memory device such that the data can be recovered in an event that the computing device loses the data.

10. A method as described in claim 9 , wherein the data comprises at least one of an image of one or more portions of a volatile memory of the computing device, or a volatile state of one or more instances of hardware of the computing device.

11. A method as described in claim 8 , comprising detecting a different hybrid memory device installed on the computing device, wherein said exposing comprises exposing the hybrid memory device and the different hybrid memory device as a single instance of the available block storage device to one or more of the user, the application, or the system process.

12. A method as described in claim 8 , comprising:

querying the hybrid memory device for one or more state conditions of the hybrid memory device; and

initiating one or more actions based on the state conditions.

13. A method as described in claim 8 , comprising:

initiating a boot process for the computing device;

detecting a bootable environment stored on the hybrid memory device; and

booting the computing device using the bootable environment from the hybrid memory device.

14. A system comprising:

at least one processor;

one or more computer-readable storage media including instructions stored thereon that, responsive to execution by the at least one processor, cause the system to perform operations including:

discovering an instance of a block storage device that corresponds to at least one hybrid memory device installed on a computing device, the at least one hybrid memory device including at least one volatile memory portion and at least one non-volatile memory portion;

generating, responsive to said discovery of the instance, a device object that represents the instance of the block storage device;

loading, responsive to said generating the device object, a device driver for the at least one hybrid memory device; and

presenting a visual representation of the at least one hybrid memory device, the visual representation enabling a user to interact directly with the instance of the block storage device via the device driver and the device object such that data is directly writable by the user to both the at least one volatile memory portion and the at least one non-volatile memory portion of the at least one hybrid memory device via logical block addressing.

15. A system as described in claim 14 , wherein the at least one hybrid memory device comprises a non-volatile dual in-line memory module device (NVDIMM).

16. A system as described in claim 14 , wherein said enabling comprises enabling a user to select the visual representation of the block storage device for non-volatile storage of data on the computing device.

17. A system as described in claim 14 , wherein the operations comprise:

receiving a notification event from the block storage device; and

initiating an action based on the notification event and utilizing the computing device.

18. A system as described in claim 17 , wherein the notification event indicates at least one of a hardware error or a software error, and the action comprises writing data to the at least one non-volatile memory portion in response to the notification event.

19. A system as described in claim 14 , wherein the operations comprise:

querying the at least one hybrid memory device for a state condition of the at least one hybrid memory device; and

logging a state of the at least one hybrid memory device based on the state condition.

20. A system as described in claim 14 , wherein the operations comprise:

receiving an indication of an event that may cause a loss of data for the computing device; and

saving the data to the at least one non-volatile memory portion of the at least one hybrid memory device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2013
From: LEE, SCOTT CHAO-CHUEH; ALEXANDER, ROBIN A.; PREWITT, LEE E.; CHEN, CHIUCHIN; SADOVSKY, VLADIMIR
To: MICROSOFT CORPORATION
Reel/Frame 030228/0592 →
Continuity (1)
Related Publication 20140310451A1 · Oct 16, 2014