Method and apparatus for transferring data. The apparatus preferably
includes a first volatile memory block, a second volatile memory block
coupled to a non-volatile circular buffer, and a controller configured to
direct first data to the first volatile memory block for subsequent
transfer to a downstream block, such as a data storage array. The
controller is further configured to direct second data to the second
volatile memory block for subsequent transfer to the non-volatile
circular buffer. Preferably, the second volatile memory block forms a
portion of a non-volatile random access memory (NVRAM) and the circular
buffer is formed from a flash memory device. An intelligence block
preferably controls said subsequent transfer of the second data from the
second volatile memory block to the circular buffer. The second data are
preferably transferred from the circular buffer to the downstream block
in conjunction with the transfer of the first data.