An apparatus for data transmission between memories has a memory
controller as well as a memory protocol controller. In one embodiment, a
first memory controller is operatively connected to a first memory, and a
memory protocol controller is operatively connected between the first
memory controller and a second memory, wherein the first memory is a
volatile memory and the second memory is a nonvolatile memory. The
volatile memory includes a command list containing a command sequence for
the memory protocol controller. The memory protocol controller may be
configured to produce at least one of an error detection code and an
error correction code when an error condition occurs.