Apparatus, system, and method of byte addressable and block addressable storage and retrieval 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 storage device driver;
a host parallel memory interface that communicates at least a first command from the storage device driver to 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;
a traffic controller that manages data traffic as a function of a host address received by the host parallel memory interface;
an internal processing unit;
wherein the internal processing unit is configured to manipulate at least the data exchanged from the host parallel memory interface.
2. The hybrid memory apparatus of claim 1 , wherein the host parallel memory interface communicates at least the first command directly to the host system bus.
3. The hybrid memory apparatus of claim 1 , wherein the internal processing unit comprises at least one of a Central Processing Unit, a microcontroller, and a microprocessor.
4. The hybrid memory apparatus of claim 1 , further comprising:
presenting the volatile byte-addressable memory as at least one of a DRAM array, MRAM array, an SRAM array, and an FeRAM array;
presenting the volatile block-addressable memory as at least one of an SSD cache and an SSD buffer; and
presenting the non-volatile block-addressable memory as at least one of an SSD array and an SCM array.
5. The hybrid memory apparatus of claim 1 , wherein the internal processing unit is configured to perform computations on the data exchanged between the volatile memory and non-volatile block-addressable memory.
6. The hybrid memory apparatus of claim 1 , the host parallel memory interface communicates at least a second command from the storage device driver to a host system bus.
7. The hybrid memory apparatus of claim 1 , wherein the first command is at least one of a single command, a compound command, a queuing command, an out-of-order execution command, and a virtualization command.
8. The hybrid memory apparatus of claim 1 , wherein the host parallel memory interface communicates the first command with at least one of data compression, data scrambling, a cyclic redundancy check, and an error-checking code.
9. 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.
10. The hybrid memory apparatus of claim 9 , 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.
11. The hybrid memory apparatus of claim 1 , 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.
12. The hybrid memory apparatus of claim 1 , wherein the traffic controller manages incoming commands and controls forwarded from the host parallel memory interface.
13. 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.
14. The hybrid memory apparatus of claim 1 , further comprising a volatile memory controller that controls data traffic with the volatile block-addressable memory.
15. 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 parallel memory interface.
16. 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.
17. 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.