The present invention relates to data storage, and more specifically, to providing persistent data storage with low latency.
Contemporary computer systems often utilize data processing and storage devices that have a redundant energy supply to provide the persistence desired for storage of important data. Redundant energy supplies include the use of a battery backup or a super capacitor in order to provide a failsafe power supply mechanism to enable writing of “in flight” data in case of power failure in the computer system. In some cases, data reliability and consistency are provided through suitable techniques such as journaling (or logging). The time it takes to write log entries to a persistent memory device, including the time it takes to receive an acknowledgment that a log entry has been written to persistent storage is often in the critical path for memory device accesses. These long latency writes that include both writing and receiving acknowledgement have an impact on high performance storage operations.
Attempts have been made to decrease their impact, for example, by committing a write operation (i.e., sending an acknowledgement that the data has been written) whenever the associated data is buffered in a memory that is protected by battery, super capacitor or other redundant energy supply. Drawbacks to this approach include poor reliability, high maintenance, increased complexity of design (multiple power domains for persistent boundaries, etc.), and form-factor disadvantages. In general, capacitors suffer from low reliability, the batteries will require maintenance, and if the data is not moved quickly enough (i.e., before power is lost) data may be lost. In a “not-and” (NAND) non-volatile flash based storage device one possibility for ensuring persistence of critical data (e.g., file system metadata) is to return from a data write only when the corresponding metadata write has been written to the NAND flash device. A shortcoming to this approach is the high latency for every page write, which will significantly reduce the write bandwidth.