A method and apparatus for storing data in a memory device is described. The
apparatus
is configured to perform the following steps. The method employs a two-step technique
which allows the out-of-order completion of read and write operations. When a write
operation requires a resource needed for the completion of a read operation, the
data being written is stored in a write data buffer in the memory device. The write
data is stored in the buffer until a datapath is available to communicate the data
to the memory device's memory core. Once the resource is free (or the memory device,
or its controller force the write to complete) the data is written to the memory
core of the memory device using the now-free datapath.