Apparatus, system, and method of byte addressable and block addressable storage and retrival of data to and from non-volatile storage memory
A hybrid memory system provides rapid, persistent byte-addressable and block-addressable memory access to a host computer system by providing direct access to a both a volatile byte-addressable memory and a volatile block-addressable memory via the same parallel memory interface. The hybrid memory system also has at least a non-volatile block-addressable memory that allows the system to persist data even through a power-loss state. The hybrid memory system can copy and move data between any of the memories using local memory controllers to free up host system resources for other tasks.
1. A hybrid memory apparatus, comprising:
a volatile memory logically divided into a volatile byte-addressable memory and a volatile block-addressable memory;
a non-volatile block-addressable memory;
a host parallel memory interface that receives commands from a host system bus to exchange data between each of:
(a) the host system bus and the volatile byte-addressable memory,
(b) the host system bus and the volatile block-addressable memory,
(c) the volatile byte-addressable memory and the volatile block-addressable memory, and
(d) the volatile block-addressable memory and the non-volatile block-addressable memory; and
a traffic controller that manages data traffic as a function of a host address received by the host parallel memory interface.
2. The hybrid memory apparatus of claim 1 , wherein the host parallel memory interface routes the host address to the traffic controller when the host address refers to a byte-addressable address and routes the host address to an address translation circuit when the host address refers to a block-addressable address.
3. The hybrid memory apparatus of claim 2 , wherein the traffic controller routes the host address to the volatile byte-addressable memory as a physical byte-addressable address when the host address refers to a byte-addressable address.
4. The hybrid memory apparatus of claim 2 , wherein the address translation circuit routes a translated host address to a local memory controller when the host address refers to a block-addressable address, and wherein the local memory controller routes the translated host address to the volatile block-addressable memory as a physical block-addressable address when the host address refers to a block-addressable address.
5. The hybrid memory apparatus of claim 1 , wherein the traffic controller manages incoming commands and controls forwarded from the host parallel memory interface.
6. The hybrid memory apparatus of claim 5 , wherein the incoming commands identify a read access or a write access command.
7. The hybrid memory apparatus of claim 5 , wherein the controls identify the memory location that the host logical access refers to.
8. The hybrid memory apparatus of claim 1 , wherein the traffic controller routes data between the volatile byte-addressable memory and the block-addressable memory without traveling through the host system interface.
9. The hybrid memory apparatus of claim 8 , further comprising a volatile memory controller that controls data traffic with the volatile block-addressable memory.
10. The hybrid memory apparatus of claim 1 , wherein the traffic controller routes data between the volatile block-addressable memory and the non-volatile block addressable memory without traveling through the host system interface.
11. The hybrid memory apparatus of claim 10 , further comprising a volatile memory controller that controls data traffic with the volatile block-addressable.
12. The hybrid memory apparatus of claim 11 , further comprising a non-volatile memory controller that controls data traffic with the non-volatile block-addressable memory.
13. The hybrid memory apparatus of claim 1 , wherein the traffic controller is programmed to simultaneously write a first set of data to the volatile byte-addressable memory and read a second set of data from the block-addressable memory array.
14. The hybrid memory apparatus of claim 1 , wherein the host system interface presents the volatile byte-addressable memory as a host accessible volatile memory block to the host system bus and presents the volatile block-addressable memory as a non-volatile storage memory to the host system bus.
15. The hybrid memory apparatus of claim 14 , wherein the traffic controller persists all data saved to the volatile block-addressable memory to the non-volatile block-addressable memory.
16. A method of providing a hybrid byte-addressable/block-addressable memory, comprising:
providing a volatile memory logically divided into a volatile byte-addressable memory and a volatile block-addressable memory;
providing a non-volatile block-addressable memory;
receiving commands from a host system bus via a host parallel memory interface to exchange data between each of:
(e) the host system bus and the volatile byte-addressable memory,
(f) the host system bus and the volatile block-addressable memory,
(g) the volatile byte-addressable memory and the volatile block-addressable memory, and
(a) the volatile block-addressable memory and the non-volatile block-addressable memory; and
locally managing both incoming and outgoing host data traffic as a function of a host address received through the host parallel memory interface.
17. The method of claim 16 , further comprising:
presenting the volatile byte-addressable memory to a host operating system as at least one of a DRAM array and an MRAM array;
presenting the volatile block-addressable memory to the host operating system as at least one of an SSD cache and an SSD buffer; and
presenting the non-volatile block-addressable memory to the host operating system as at least one of an SSD array and a Storage Class Memory array.
18. A memory system, comprising;
a volatile memory logically divided into a volatile byte-addressable memory and a volatile block-addressable memory;
a non-volatile block-addressable memory;
a host parallel memory interface that receives commands from a host system bus to exchange data between each of:
(a) the host system bus and the volatile byte-addressable memory,
(b) the host system bus and the volatile block-addressable memory,
(c) the volatile byte-addressable memory and the volatile block-addressable memory, and
(d) the volatile block-addressable memory and the non-volatile block-addressable memory; and
a traffic controller that manages data traffic as a function of a host address received by the host parallel memory interface; and
a host computer system comprising a storage device driver programmed to communicate commands to the host parallel memory interface, wherein the hybrid memory apparatus is directly coupled to a motherboard of the host computer system.
19. The memory system of claim 18 , wherein the storage device driver is further programmed to:
present the volatile byte-addressable memory to applications of the host computer system as at least one of a DRAM array and a MRAM array;
present the volatile block-addressable memory to applications of the host computer system as at least one of an SSD cache and an SSD buffer; and
present the non-volatile block-addressable memory to applications of the host computer system as at least one of an SSD array and a Storage Class Memory.